Của tôi là một câu chuyện "thành công". Dự án của tôi liên quan đến một trang web chính với 4 trang web vệ tinh được quản lý / viết độc lập (tên miền phụ với các ứng dụng khác nhau trên đó). Chúng tôi có 4 cơ sở người dùng chính (tất cả trong các thư mục hoạt động riêng biệt) và không có cơ sở xác thực chung. 3 là các ứng dụng được thiết lập tốt và silo và vệ tinh thứ 4 là hoàn toàn mới và đã sao chép phần lớn mã cơ sở từ trang web được thiết lập nhiều nhất của chúng tôi.
Mục tiêu: Triển khai hệ thống nhận dạng toàn doanh nghiệp có thể xác thực tài khoản trên 4 tên miền và quản lý toàn bộ (với dịch vụ tự phục vụ) trong 1 trong số các tên miền. Vì .Net đã được triển khai trên các vệ tinh, nên trang web asp cổ điển đóng vai trò là "khách hàng tiềm năng" sẽ cần phải được viết lại, quản lý danh tính được thêm vào và tất cả các trang web sẽ cần kiểm tra hồi quy để đảm bảo không có dịch vụ nào bị ảnh hưởng.
Tài nguyên: 3 kiến trúc sư chính - lập trình viên, quản lý danh tính, quản lý dự án. Khoảng 20 nhà phát triển, 10 nhà phân tích, 10 người thử nghiệm.
Thời gian hoàn thành (bắt đầu để kết thúc): 1,5 năm
Ra mắt thành công: Gần thất bại
Thành công lâu dài: Tuyệt vời
Tôi là kiến trúc sư quản lý danh tính, vì vậy tôi đã thiết kế cơ sở dữ liệu, hệ thống con và giao diện logic mà tất cả các vệ tinh sẽ tương tác. Kiến trúc sư "lập trình viên" là một nhà phát triển hàng đầu với kiến thức kinh doanh sâu rộng về tất cả các vệ tinh và kinh nghiệm với các ứng dụng và sự phát triển của chúng cho đến thời điểm đó.
Sau vài tháng thu thập các yêu cầu với 50 người khác nhau từ các phòng ban khác nhau trong tập đoàn của chúng tôi, chúng tôi đã xoay sở để có được kiến trúc logic được giải quyết và bắt đầu đập ra mã. Do bản chất của sự thay đổi, chúng tôi đã phải viết lại trang web của riêng mình và tất cả các chức năng mà nó chứa trong .Net. Trong một số trường hợp, đó chỉ là vấn đề tái cấu trúc. Trong nhiều trường hợp, nó liên quan đến việc viết lại hoàn toàn các quy trình xung quanh nó. Trong 2 trường hợp, chúng tôi chỉ đơn giản là từ bỏ tính năng ban đầu là không quan trọng. Chúng tôi đã bỏ lỡ 2 thời hạn trong quá trình (nhưng cuối cùng đã đạt đến thời hạn ban đầu tôi đã đề xuất - hầu như không). Vào ngày ra mắt không có gì làm việc. Chúng tôi đã ra mắt vào thứ bảy vì vậy tác động khá nhỏ, nhưng tôi đã dành cả ngày để lướt qua nhật ký, viết lại các phần và đánh giá tải máy chủ. Thử nghiệm nhiều hơn có thể đã giúp.
Đến cuối ngày đầu tiên, tất cả các trang web đều hoạt động và mọi thứ đều hoạt động (tôi sẽ nói là thành công trên danh nghĩa). Trong suốt 2,5 năm qua, mọi thứ đều thành công rực rỡ. Có tất cả các trang web của chúng tôi trên một kiến trúc chung với cơ sở khung chung đã giúp cho việc phát triển và nhà phát triển chéo hoạt động dễ dàng hơn nhiều. Các tính năng tôi đã viết vào trang web của chúng tôi 2,5 năm trước (trong quá trình viết lại của chúng tôi) đã được nhìn thấy / chấp nhận bởi một vài silo vệ tinh.
Chúng tôi đã tăng đăng nhập, theo dõi người dùng, tăng thời gian, một ứng dụng đơn lẻ chịu trách nhiệm xác thực / ủy quyền / nhận dạng. Các silo vệ tinh có thể tập trung hoàn toàn vào các ứng dụng của họ và có thể tin tưởng rằng bất kỳ vấn đề xác thực / ủy quyền nào tồn tại với ứng dụng quản lý danh tính.
Dự án của chúng tôi là rất nhiều thất vọng, đau lòng và thảm họa. Cuối cùng nó đã được đền đáp và sau đó một số. Tôi đồng ý 100% với đánh giá của Joel Spolsky về việc viết lại như một quy tắc chung, nhưng luôn có những trường hợp ngoại lệ. Nếu bạn đang xem xét viết lại, bạn chỉ cần đảm bảo đó hoàn toàn là những gì bạn cần. Nếu có, thì hãy chuẩn bị cho tất cả những nỗi đau đi kèm với nó.