Những cân nhắc nào nên được đưa ra cho và chống lại các trang web super Super của Viking?


9

Công ty của tôi đang xem xét hợp nhất tất cả các ứng dụng và trang web cấp 1 (nghĩa là sản xuất cuối cùng) của họ thành một cơ sở mã bao gồm tất cả.

Lý thuyết là các quyền, thiết kế và chức năng tổng thể của chúng có thể được đồng nhất hóa và quản lý tập trung.

Tôi không có mối quan tâm nào về cách tiếp cận này vì các cấu trúc dữ liệu làm nền tảng cho mỗi ứng dụng rất khác nhau, các quy tắc kinh doanh rất phức tạp và duy nhất cho mỗi ứng dụng và các cơ sở mã tổng thể cho các ứng dụng hiện tại rất khác nhau và bị bỏ quên.

CHỈNH SỬA :

Môi trường hiện tại bao gồm ba trang web ASP.Net 1.1 gần như không thấy tình yêu thực sự nào kể từ lần đầu tiên được viết (chủ yếu là do không có nhà phát triển có kinh nghiệm trong công ty) và một ứng dụng MVC2 cũng là một trang web ASP.Net 1.1 trước đó nâng cấp năm ngoái. Chúng tôi viết độc quyền bằng C #.

Công ty là một công ty khá nhỏ, với khoảng 50 nhân viên; Ba trong số đó là những nhà phát triển thực tế. Quản lý (thậm chí quản lý CNTT) không có bất kỳ nền tảng CNTT hoặc kinh nghiệm nào ngoài quản lý dự án của các dự án CNTT (và do đó một số kiến ​​thức về thuật ngữ và tác động kinh doanh).

Các ứng dụng chủ yếu là các dịch vụ trực tuyến để hỗ trợ các sản phẩm được bán bởi công ty. Công ty không bán bất kỳ phần mềm nào trực tiếp.

Vì vậy, để giải thích toàn bộ tình huống này trong một câu hỏi hợp lý và có thể trả lời được: một số lý do thuyết phục và chống lại việc cố gắng kéo tất cả các hệ thống của bạn lại với nhau thành một giải pháp vượt trội với các điều kiện hiện tại (ví dụ như cơ sở mã cũ, hệ thống kinh doanh phức tạp và quy tắc )?


4
Câu hỏi như được trình bày ở đây là cực kỳ mở và quá rộng. Nếu bạn có thể thu hẹp nó xuống thì nó có thể làm cho một câu hỏi tốt hơn.
ChrisF

@ChrisF - Tôi sẽ thử. Bạn có thể đề xuất loại chi tiết cụ thể bạn muốn xem không?
Phil.Wheeler

@Phil Bạn là OP, bạn đang tìm gì vậy?
George Stocker

@Phil Cách của bạn cũng muốn cung cấp một số chi tiết cụ thể về ngôn ngữ vì có nhiều công cụ bên ngoài quản lý các ứng dụng (ví dụ: bảo mật, ghi nhật ký, cấu hình, kết nối db, v.v.)
Gary Rowe

1
bằng cách đó họ có thể bỏ qua một quả bóng bùn lớn thay vì 3 - 4 quả bóng bùn nhỏ hơn, hiệu quả hơn nhiều!

Câu trả lời:


10

Ý kiến ​​tồi

Phản ứng này dựa trên các giả định sau:

  1. Có rất nhiều ứng dụng khá khác nhau đang được đồng nhất hóa
  2. Có nhiều nhóm làm việc trên các ứng dụng khác nhau
  3. Không có kiến ​​trúc sư phần mềm uy tín và có thẩm quyền tích cực quản lý các ứng dụng

Điều gì sẽ xảy ra nếu bạn đi trước

Nhiều khả năng sẽ có một nỗ lực hợp nhất bẩm sinh để mang mọi thứ lại với nhau theo một phương pháp thiết kế duy nhất. Điều này sẽ cho thấy nỗ lực rất lớn cần thiết để làm cho mọi thứ hoạt động như nhau và có thể bị đóng hộp là không thể thực hiện được.

Nếu nó nhấn vào thì một số loại kho lưu trữ tập trung chứa dữ liệu cấu hình (ví dụ: truy cập bảo mật, mức ghi nhật ký, v.v.) sẽ được yêu cầu tại thời điểm mà ai đó sẽ chỉ ra điều hiển nhiên và nói

"Này, tại sao chúng ta không trang bị thêm phương pháp cấu hình bên ngoài này cho các ứng dụng cũ, nó sẽ nhanh hơn nhiều?"

và một lát sau sẽ có người khác nối lại với

"Và, vì dù sao chúng tôi cũng đang tái cấu trúc, tại sao chúng tôi không áp dụng tiêu chuẩn thiết kế cho từng miền ứng dụng - xử lý web trông như thế này, xử lý quy tắc kinh doanh như thế này và truy cập cơ sở dữ liệu như thế này."

cho đến cuối cùng

"Ồ, và có rất nhiều mã phổ biến ở đây tại sao không kết hợp một số thư viện dễ chia sẻ. Có lẽ chúng ta sẽ cần một loại xây dựng tích hợp nào đó chạy đều đặn mỗi đêm."

Tại thời điểm đó, mọi người thở phào nhẹ nhõm rằng một khối đá nguyên khối khổng lồ đã không được xây dựng.


(+1) chỉ cho (1), phần còn lại của mô tả cũng hợp lệ ...
umlcat

3

Chúng tôi đã làm việc về điều này tại công ty của tôi. Tôi nghĩ điều đó là có thể và có những lợi ích rõ ràng (bạn đã đề cập đến chúng), tuy nhiên, đây có thể sẽ là một dự án 5 đến 7 năm ở mức tối thiểu và đòi hỏi về cơ bản mọi thứ phải được viết lại. Nếu bạn có thể đăng nhập vào một cái gì đó như thế, thì tôi sẽ nói đi cho nó. Nếu không, sau đó sẵn sàng cho một cuộc diễu hành cái chết ác mộng.


3

Google làm điều đó, vì vậy nó chắc chắn là có thể .

Liên kết đó BTW là một bản trình bày thú vị từ một nhân viên Google về cách họ quản lý cơ sở mã của họ, tích hợp liên tục, thử nghiệm, v.v.

Tuy nhiên, nếu không có cam kết mạnh mẽ về công cụ, như Google đã thực hiện, bạn có khả năng bị tổn thương.

Câu hỏi quan trọng ở đây là tại sao ? Tại sao quản lý cấp cao muốn làm điều này? Những khoản tiết kiệm, đòn bẩy hoặc lợi thế nào khác mà họ hy vọng đạt được?

Nếu bạn có thể giải quyết đủ các vấn đề đó để bạn hoàn thành mục tiêu của họ, bạn cũng có thể tránh được cơ sở mã duy nhất liên quan đến bạn, trong khi vẫn mang lại cho họ kết quả hiệu quả tương tự.


Cảm ơn liên kết đó. Video làm tôi ngạc nhiên vì rất thú vị. (Mặc dù, trang web đó cần làm cho video rõ ràng hơn được đồng bộ hóa với trình chiếu bên dưới. Tôi gần như thất vọng về việc không xem trình chiếu.)
Amy B

InfoQ có được một số bài thuyết trình khá tốt trên đó; họ là một trang web hàng đầu trong danh sách RSS của tôi.
sdg

2

Chúng tôi đã trải qua một quá trình tương tự. Chúng tôi đã có một sản phẩm đó là khoảng một thời gian. Năm ngoái, chúng tôi đã giới thiệu một sản phẩm khác giống 95% với sản phẩm đầu tiên, với 5% sự khác biệt đôi khi tinh tế nhưng đáng kể, với những khác biệt được phát triển và duy trì bởi một nhóm riêng biệt.

Khi chúng tôi lần đầu tiên bắt đầu làm việc với sản phẩm mới, nhóm cũ đã tiếp tục thực hiện các thay đổi ảnh hưởng xấu đến chúng tôi trong 5% đó, vì họ không hiểu sản phẩm mới. Vì vậy, chúng tôi đã hoàn toàn phân bổ 5% mã đó, cho phép chúng tôi hoàn thành bản phát hành đầu tiên đúng hạn.

Sau đó, nhiều công việc bảo trì đã bắt đầu và chúng tôi thấy rằng chúng tôi thường xuyên thực hiện các thay đổi gần như giống hệt nhau trong mã gần giống nhau. Đội ngũ cũ cũng hiểu rõ hơn về sản phẩm mới hiện nay, vì vậy chúng tôi đang dần tái hòa nhập những gì chúng tôi rẽ nhánh và tìm ra những cách kiến ​​trúc hiệu quả hơn để thể hiện sự khác biệt.

Vì vậy, khi bạn nói các cấu trúc dữ liệu khác nhau và các cơ sở mã tổng thể khác nhau, câu hỏi mà tôi sẽ hỏi là liệu chúng có phải theo cách đó hay đó chỉ là cách chúng phát triển do sự nhanh nhạy của thời điểm này. Rõ ràng bạn phải tính đến các quy tắc và yêu cầu kinh doanh khác nhau, nhưng điều quan trọng là cách ly những khác biệt đó thành một mô-đun nhỏ nhất có thể. Nếu bạn thường thấy mình thực hiện cùng một tính năng chính xác cho nhiều khách hàng theo các cách hơi khác nhau cho các cơ sở mã khác nhau, thì việc hợp nhất thực sự có thể giúp ích và tôi nghi ngờ đó là trường hợp hoặc ban quản lý có thể sẽ không đề xuất điều này.


Một số điểm tốt. Mã là cách nó chủ yếu là do sự tiến hóa và không nhất thiết phải thông qua sự cần thiết hoặc thực tiễn tốt nhất. Tuy nhiên, sự hiểu biết của ban quản lý về môi trường kỹ thuật thực tế bên cạnh con số không: họ thực sự không biết cách lập trình và phần mềm hoạt động. Họ không có tầm nhìn về sự khác biệt trong mã nên quyết định của họ không dựa trên những gì tốt nhất về mặt kiến ​​trúc cho công ty.
Phil.Wheeler

2

Rất có thể bạn sẽ không thể hợp nhất nhiều ứng dụng vào cùng một cơ sở mã bởi vì điều đó sẽ mất khá nhiều nỗ lực và đối với các chương trình cũ, bị bỏ quên, điều này có thể sẽ hiệu quả hơn nhiều so với dự kiến ​​ban đầu.

Điều đó nói rằng, không có gì sai khi có tất cả các ứng dụng của bạn trong cùng một kho lưu trữ mã , trong đó mỗi ứng dụng có khu vực riêng biệt. Điều này cho phép bạn ví dụ có bất kỳ tài liệu trực tuyến nào được tạo cho toàn bộ cơ sở mã trong một chế độ xem nhất quán, duy nhất nói chung là một điều tốt như bạn muốn có nhiều khả năng hiển thị nhất có thể.

Những người quyết định điều này, nên cân nhắc mạnh mẽ TẠI SAO họ muốn làm điều đó, và xem xét họ muốn chi bao nhiêu công việc để đạt được điều đó.


2

Nếu có một điều duy nhất làm cho sự phát triển doanh nghiệp trở nên kém hiệu quả và tốn kém thì đó là ảo tưởng rằng có thể tạo ra một hệ thống duy nhất làm mọi thứ. Nếu bạn có một chủ sở hữu sản phẩm duy nhất hiểu tất cả các chi tiết của hệ thống và có thể đưa ra mọi quyết định mà không cần một tuần họp thì nó có thể hoạt động, nhưng tôi chưa bao giờ thấy điều đó xảy ra.

Nói chung, bạn sẽ tốt hơn nếu bạn coi nó giống như phát triển internet hơn - chỉ cần xây dựng ứng dụng của riêng bạn, thừa nhận rằng trong thực tế, bạn không kiểm soát được bất cứ điều gì ngoài mã của riêng bạn. Bạn có thể nhận được khá nhiều tính nhất quán mà bạn có thể muốn với OAuth và một API đơn giản cho cài đặt người dùng và một chút CSS được chia sẻ.

Điều này khá giống với mục đích ban đầu của SOA, nhưng nếu bạn gọi nó là bạn sẽ kết thúc với một loại hệ thống lớn, hầu như không hoạt động, cố gắng làm mọi thứ.


1

Suy nghĩ đầu tiên của tôi là đây sẽ là tổng số PITA cho các bản phát hành.

Việc chia thành các khối chức năng có thể quản lý là hợp lý hơn nhiều, nếu chỉ để tránh tất cả các lớp quản lý và phê duyệt.

Việc chia ra những thứ phổ biến thành các thành phần / dịch vụ và tiêu chuẩn hóa theo cách đó sẽ dễ dàng hơn IMHO.


0

Bạn có thể tiếp cận này khác nhau, sử dụng một công nghệ tích hợp như Deliverance đến chủ đề tất cả các ứng dụng web của bạn tương tự. Về cơ bản, mỗi ứng dụng vẫn riêng biệt; Deliveryance sử dụng các quy tắc XSLT để chuyển đầu ra của chúng thành một mẫu HTML tĩnh mà bạn thiết kế. Điều này cho phép một chủ đề HTML / CSS tĩnh tương đối đơn giản được áp dụng cho toàn bộ bộ ứng dụng với mức tối thiểu.

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.