Làm cách nào để chuyển đổi đa quốc gia của tôi từ nền tảng phát triển này sang nền tảng khác?


10

Tôi đang làm việc trong bộ phận CNTT của một công ty lớn, quốc tế. Chúng tôi đang phát triển các ứng dụng Intranet khác nhau cho doanh nghiệp (Khiếu nại, Giảm giá, Bàn dịch vụ, v.v.). Bây giờ chúng tôi quyết định chuyển từ nền tảng PHP sang .NET (tích hợp với MS CRM Dynamics, Exchange và MS Office là một trong nhiều lý do). Vì có khoảng 20 ứng dụng khác nhau mà doanh nghiệp đang sử dụng trên nền tảng PHP hiện tại, chúng tôi sẽ phải đưa ra cách tốt nhất để chuyển tất cả chúng sang nền tảng mới. Tôi không muốn đi sâu vào chi tiết cách chuyển đổi mã, v.v., vì trong khi chúng tôi di chuyển, chúng tôi muốn cải thiện tất cả các ứng dụng này.

Vì vậy, chúng tôi đã đưa ra 2 cách chính để di chuyển các ứng dụng này:

  1. Hỗ trợ chỉ một nền tảng. Nó có nghĩa là gì? Tạo trang chủ và di chuyển tất cả các ứng dụng theo nghĩa đen sang .NET (mà không cải thiện chúng trong khi chúng tôi làm điều đó). Sau khi mạng nội bộ mới hoạt động, chúng tôi sẽ bắt đầu xây dựng lại các ứng dụng đã di chuyển và cải thiện chúng. Điều đó sẽ giúp chúng tôi phát triển mạng nội bộ trong .NET trong khi phải hỗ trợ nền tảng PHP.

  2. Hỗ trợ cả hai nền tảng một thời gian. Điều đó có nghĩa là chỉ xây dựng một trang chủ và 1 hoặc 2 ứng dụng mới (không tồn tại trên nền tảng PHP của chúng tôi). Cung cấp chúng cho người dùng nhưng không tắt nền tảng PHP (chúng tôi sẽ kết hợp các menu và liên kết để giúp người dùng dễ dàng di chuyển giữa các ứng dụng trên trang PHP và nền tảng mới). Sau đó, chúng tôi sẽ bắt đầu viết lại các ứng dụng PHP trong khi cải thiện chúng.

Bây giờ tôi không chắc điều gì sẽ tốt hơn, một mặt (tùy chọn 1) chúng tôi sẽ có khả năng giúp mọi người dùng dễ dàng hơn bằng cách không buộc họ sử dụng hai nền tảng khác nhau cùng một lúc. Mặc dù họ sẽ không thấy bất kỳ cải thiện nào về việc có nền tảng mới, ngoài mọi thứ trông đẹp hơn, chức năng của các ứng dụng trên nền tảng mới sẽ giống nhau trong một thời gian. Ngoài ra tôi nghĩ rằng chúng tôi sẽ thêm bản thân mình (IT dep) làm việc nhiều hơn vì thực tế chúng tôi sẽ viết mỗi ứng dụng hai lần.
Mặt khác, trong tùy chọn hai (2) người dùng sẽ có trải nghiệm tồi tệ hơn khi hai nền tảng trông khác nhau, nhưng họ sẽ nhận ra lợi ích của nền tảng mới khi các ứng dụng mới đang di chuyển.

Có ai trong số các bạn đã gặp một cái gì đó như thế? Bạn sẽ chọn những gì? Hoặc có thể có cách khác, thậm chí tốt hơn cho những người tôi đã trình bày? Tôi muốn biết bạn nghĩ gì và bạn sẽ tiếp cận điều đó như thế nào.


1
Không phải # 2 là một bước đến # 1 sao?
Tae-Sung Shin

Không, đây là 2 điều khác nhau. Trong 1, chúng tôi sẽ di chuyển toàn bộ mạng nội bộ trước khi cho phép người dùng sử dụng nó và sau đó chúng tôi sẽ làm việc để cải thiện các ứng dụng. Trong 2, chúng tôi sẽ di chuyển phần thiết yếu của mạng nội bộ, cho phép người dùng sử dụng nó và sau đó bắt đầu di chuyển các ứng dụng khác và cải thiện chúng trong khi chúng tôi di chuyển ...

@greengit: đọc chủ đề, tích hợp với các ứng dụng quan trọng khác trong kinh doanh là một trong những lý do. Câu hỏi của tôi không phải là điều trị về 'Tại sao phải di chuyển', mà là 'Cách di chuyển'.
Daniel Gruszchot

Tôi đọc chủ đề và có cùng một câu hỏi. Tôi nghi ngờ rất nhiều liệu dự án có thể là chi phí hợp lý. Bạn có thể cho chúng tôi biết tên của công ty để chúng tôi có thể bán nó không? ;)
đánh dấu

haha, tôi không quan tâm đến chi phí để thành thật vì tôi chỉ là một sinh viên CNTT trong một vị trí làm việc với công ty. Tôi chỉ hỏi về kiến ​​thức của riêng mình ... Rõ ràng người quản lý của tôi đã biện minh cho các chi phí đủ để có được sự đi trước của CEO ...
Daniel Gruszchot

Câu trả lời:


5

Hãy xem xét cả hai kịch bản:

Di chuyển mọi thứ cùng một lúc

Trong khi bạn đang di chuyển cơ sở mã của mình, khách hàng của bạn sẽ tiếp tục sử dụng các ứng dụng hiện có của bạn. Vì quá trình di chuyển sẽ mất một khoảng thời gian không hề nhỏ, điều này có nghĩa là bạn sẽ cần phải có một nhóm bảo trì trên cơ sở mã cũ, để sửa lỗi và phát triển tính năng. Mỗi thay đổi bạn thực hiện trong cơ sở mã cũ cần phải xảy ra trong cơ sở mã mới. Cuối cùng, bạn sẽ viết mỗi dòng mã gấp đôi khi quá trình di chuyển không được thực hiện, khiến cho việc di chuyển càng mất nhiều thời gian hơn. Vì vậy, tất cả sôi sục xuống: thời gian quay vòng cho việc di chuyển đầy đủ sẽ là gì? Chi phí phát triển của bạn sẽ tăng vọt trong thời gian quay vòng kéo dài.

Di chuyển từng mảnh

Trong kịch bản này, bạn sẽ kiểm soát tốt hơn nỗ lực gấp đôi, nhưng bạn vẫn sẽ có nhiều chi phí bổ sung. Việc triển khai của bạn sẽ liên quan đến hai nền tảng riêng biệt, với hai lần vấn đề triển khai và tài nguyên máy chủ bổ sung cần thiết. Trừ khi bạn có một ứng dụng được tổ chức rất mô-đun, bạn sẽ thấy rằng thường thì một đoạn mã có mặt trong nền tảng khác ngoài nền tảng bạn cần, gây ra thêm nỗ lực chuyển và bảo trì. Miễn là việc di chuyển không được thực hiện, chi phí phát triển của bạn sẽ cao hơn. Đồng thời, áp lực tính năng sẽ có nghĩa là bạn sẽ mất nhiều thời gian để hoàn thành việc di chuyển.

Phần kết luận

Từ kinh nghiệm cá nhân tôi có thể nói với bạn hai điều:

  • Chuyển đổi ngôn ngữ lập trình hiếm khi trả hết. Từ một phân tích lợi ích chi phí, rất khó có khả năng chuyển sang .NET từ PHP. Vì vậy, lời khuyên chính của tôi là: không. Cố gắng giải quyết vấn đề của bạn với cơ sở mã hiện tại của bạn.
  • Từng mảnh là cách tiếp cận tốt nhất, nhưng bạn sẽ gặp khó khăn khi thực hiện nó ở cấp độ của các mô-đun ứng dụng. Bạn sẽ thấy rằng bạn sẽ phải phát triển và duy trì các tính năng trên cả hai mặt của kiến ​​trúc miễn là việc di chuyển không được thực hiện đầy đủ. Có thể là một ý tưởng tốt để ưu tiên các tính năng không dựa trên những gì khách hàng cần nhất mà dựa trên những gì sẽ hạn chế số lượng nỗ lực gấp đôi (do đó giảm chi phí).

Bạn đã thực hiện những điểm rất quan tâm. Mặc dù điều đó không phụ thuộc vào bản thân chúng ta nếu chúng ta chuyển đổi nền tảng hay không, và tôi sẽ chỉ làm việc cho công ty cho đến cuối tháng 9 (tôi cùng với họ trên một vị trí làm việc uni). Chuyển đổi từ PHP sang .NET có thể là một ý tưởng hay mặc dù vì khung PHP cũ mà chúng ta sẽ cần một số công việc MAJOR, cơ sở dữ liệu, hệ thống mà công ty sử dụng hiện tại là OLD và được tạo ra bởi những người không có kỹ năng phát triển tuyệt vời. ..
Daniel Gruszchot

Ngoài ra câu hỏi của tôi sẽ là: 'thay đổi đóng băng' trên nền tảng cũ có phải là một ý tưởng tốt? Điều tôi muốn nói là bất kỳ thay đổi nào đối với các hệ thống hiện có trên nền tảng PHP, ngoài sửa lỗi, đều bị đóng băng cho đến khi chúng tôi bắt đầu chuyển ứng dụng đã cho sang .NET. Đó là một phần trong kế hoạch di chuyển của người quản lý của tôi ...
Daniel Gruszchot

Nếu đây là một hệ thống không tầm thường thì rất khó có khả năng đóng băng thay đổi sẽ hoạt động trong thực tế. Nếu ai đó thực sự cần một tính năng, họ sẽ nâng cấp nó lên cấp cao hơn người quản lý của bạn và bạn sẽ buộc phải thay đổi. Ngoài ra, bản thân các lỗi có thể chiếm một lượng lớn tài nguyên nhóm. Và hãy luôn nhớ rằng các hệ thống cũ đã thấy rất nhiều điều chỉnh và các thiết kế mới có khả năng sẽ quên tất cả các sửa lỗi một dòng, điều này sẽ cần phải xảy ra một lần nữa để người dùng chấp nhận sản phẩm được thiết kế lại.
Joeri Sebrechts

Một điểm nữa: nếu hệ thống sẽ được xây dựng lại, có những nhân viên bảo vệ nào để đảm bảo chất lượng mã tốt hơn trong khoảng thời gian này? Tôi đã thấy một ứng dụng được viết lại 4 lần vì các vấn đề về chất lượng mã và nền tảng.
Joeri Sebrechts

2

Vì lý do tài chính, hầu hết các công ty tôi đã làm việc đều đi theo cách tiếp cận thứ hai, đúng ra tôi có thể thêm vào. Phải mất rất nhiều tiền, thời gian và rủi ro để họ đạt được # 1. Người dùng hầu hết sẽ hiểu # 2 miễn là họ thấy tiến trình và sự tương tác của bạn với họ. Trong nền kinh tế nạc và trung bình này, tôi nghi ngờ bất kỳ ai cũng sẽ áp dụng phương pháp số 1.


Đó chính xác là suy nghĩ của tôi. Người quản lý của tôi muốn đi trước với số 1, điều mà tôi cảm thấy khó hiểu.

2

Cách tiếp cận Big bang hiếm khi mang tính xây dựng khi có liên quan đến người dùng cuối. Tôi khuyên bạn nên chống lại điều đó và thành thật mà nói tôi không thể tin bất cứ ai nghiêm túc coi đó là một lựa chọn với số lượng ứng dụng liên quan.

Tôi có khuynh hướng đi với tùy chọn hai và xử lý các công việc lại theo từng trường hợp. Phải thừa nhận rằng việc này có thể mất nhiều thời gian hơn so với cách tiếp cận trên giấy nhưng thực tế, bạn đang mở ra một rủi ro kinh doanh đáng kể bằng cách tiếp cận một và tôi thực sự không muốn có mặt cho các cuộc gọi hỗ trợ vào ngày đầu tiên nếu có chỉ một vấn đề nhỏ ở cuối người dùng.

Ngoài ra, nếu phần lớn các ứng dụng dựa trên dịch vụ web của bạn đã được viết bằng php, thì chuyên môn .Net có sẵn như thế nào?

Tôi nghĩ dù bằng cách nào thì người dùng của bạn sẽ phải trải nghiệm sự thay đổi, hoặc là một vụ nổ lớn (đưa ra nhiều cuộc gọi hỗ trợ) hoặc từng phần (tăng sự quen thuộc). Tôi có xu hướng nghĩ rằng bạn chưa thực sự định cỡ chính xác bao nhiêu công việc sẽ phải hoàn thành để đi từ gần hoàn toàn tất cả php sang hoàn toàn .Net.


Tôi đoán nó phức tạp hơn việc chỉ hỗ trợ hai nền tảng riêng biệt hay không. Dù bằng cách nào cũng không phải là cách tiếp cận thực sự tốt ... Cảm ơn thời gian của bạn!
Daniel Gruszchot

1

Đầu tiên, tôi đồng ý với tất cả những gì Joeri nói.

Lựa chọn một là thực sự khủng khiếp. Nếu bạn làm điều này và không tiếp tục hỗ trợ như Joeri mô tả, bạn sẽ tắt hỗ trợ trong một vài năm theo như khách hàng của bạn thấy. Sau hai năm, họ có được cùng một trang một cách hiệu quả với tất cả các vấn đề tương tự mà họ đã biết và ghét trong vài năm qua. Cộng với rủi ro thị trường đã thay đổi tạm thời và khiến ứng dụng trở nên lỗi thời & cần một cuộc cải tổ lớn. Ngoài ra, nếu bạn ngừng hỗ trợ trong hai năm, bạn nghĩ điều gì sẽ xảy ra với tất cả các yêu cầu dịch vụ? Họ sẽ không biến mất. Ít nhất một số người dùng của bạn sẽ "lừa đảo" và phát triển các hệ thống quan trọng trong nhiệm vụ (có thể) Truy cập để cắm các khoảng trống trong các hệ thống bạn đang viết lại - sau đó bạn vẫn kết thúc hỗ trợ hai nền tảng ...

Tùy chọn hai có nghĩa là bạn sẽ hỗ trợ cả hai công nghệ trong một khoảng thời gian dài. Khoảng thời gian này sẽ dài hơn bạn nghĩ và bạn có thể kết thúc với một hệ sinh thái bị phân mảnh vĩnh viễn - tức là một lượng đáng kể mã PHP không kinh tế để viết lại trộn lẫn với mã .NET mới hơn.

Đẩy lùi mạnh mẽ chống lại bất cứ ai đang đề nghị này. Viết mã để tích hợp các ứng dụng PHP với các sản phẩm bạn đề xuất sẽ rẻ hơn nhiều so với viết lại mọi thứ trong .NET, sau đó tích hợp mã viết lại với các sản phẩm, đừng quên, việc tích hợp sẽ không xảy ra một cách kỳ diệu nếu bạn sử dụng .NET .

Một điều nữa, hãy lấy số dòng mã PHP và đưa nó vào một công cụ COCOMO 2 để có ý tưởng về việc bạn sẽ cần bao nhiêu nhà phát triển để hoàn thành việc viết lại.


Điểm tốt. Bạn sẽ làm gì sau đó, nếu nó không phụ thuộc vào bạn nếu bạn di chuyển hệ thống hay không. Phương pháp nào bạn sẽ chọn? Hoặc mybe có một cách tiếp cận khác với họ mà tôi đã liệt kê? Nếu người quản lý của bạn không đồng ý với bạn, bạn có cố chứng minh rằng phương pháp của bạn tốt hơn không?
Daniel Gruszchot

Viết các ứng dụng PHP theo cách "Định hướng dịch vụ" nhiều lớp hơn. Sử dụng một bus dịch vụ doanh nghiệp để đệm giao diện giữa vùng đất PHP và Microsoft. Điều quan trọng là thực hiện ước tính COCOMO, điều đó sẽ khiến những người viết lại sợ hãi viết ra khỏi người quản lý của bạn.
đánh dấu

1

Bạn có một lựa chọn thứ ba: -

Di chuyển mã php sang máy chủ windows và ISS (giống như bạn dự định chạy .NET trên!)

Sau đó, bạn có thể thêm các ứng dụng mới trong .NET (và từ từ chuyển đổi một số ứng dụng cũ sang .NET) trong khi trình bày cho người dùng của bạn một giao diện giống như một hệ thống.


PHP thực sự chạy dưới IIS
Bart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.