Tôi nghĩ rằng câu hỏi là sai.
Tất cả các phần khởi động tôi tham gia không có kiến trúc chỉ có FE-BE.
Hầu hết các công ty khởi nghiệp tôi biết đều có:
- Core - sản phẩm thực tế trưng ra giao diện
- UI - BE và FE. BE sử dụng API của Core.
API không trạng thái và dễ bị chế giễu - ngay cả khi không cần Core Developer. Chết tiệt, nếu tôi phải bắt đầu một dự án từ đầu, tôi có thể bắt đầu với toàn bộ giao diện người dùng hoạt động hoàn toàn trên các mô hình - sẽ rất tốt cho các bài thuyết trình. Hầu hết các phản hồi là do UI. Khách hàng lưu ý rằng nhiều hơn - (phụ thuộc vào đối tượng mục tiêu của bạn.)
Ví dụ: Google Search có thành phần Core thu thập thông tin trên web, lập chỉ mục cho nó, v.v. và UI của Google là một thế giới hoàn toàn khác. Lõi này có thể dễ dàng hỗ trợ các tìm kiếm không WWW, trong khi UI không thể.
Bằng cách này, giao diện người dùng của bạn là "có thể cắm được" và bạn có những mối quan tâm riêng biệt.
Bạn đã tham khảo kiến thức Phát triển, tuy nhiên bạn đang xem xét các khía cạnh quản lý dự án. Mặc dù nhóm nòng cốt có thể cần thời gian chạy nước rút 2 tuần, nhóm UI sẽ sử dụng CI - mọi thứ đều được tải lên mọi lúc. Nhóm Core sẽ cần khả năng tương thích ngược trong khi UI thì không.
Ngôn ngữ khác nhau. Bạn có thể sẽ muốn các nhà phát triển C cho thành phần Core - và bạn sẽ ổn nếu nó chạy trên một HĐH duy nhất, trong đó giao diện người dùng sẽ được viết bằng Ngôn ngữ hệ điều hành chéo.
Các xét nghiệm khác nhau. Thế giới kiểm tra UI là một trong những điều phức tạp nhất mà tôi biết trong phát triển phần mềm. Hầu hết các công ty khởi nghiệp bỏ bê nó và hối tiếc quyết định này sau này. Bạn không thể tách BE và FE khi kiểm tra. Nó phải là một đơn vị duy nhất xử lý nó.
UI nguồn mở - một trong những lợi ích lớn nhất của việc tách hai loại này là bạn có thể mở UI của mình. Dự án UI cần hỗ trợ nguồn mở.
Tôi không thể tưởng tượng một nhà phát triển UI không thể hiểu toàn bộ session
tính năng. Bạn biết - nơi bạn đăng nhập và duy trì đăng nhập giữa các yêu cầu khác nhau. Đúng là họ có thể biết PHP chứ không phải Java .. nhưng khái niệm BE phải rõ ràng (ví dụ: sử dụng cookie được mã hóa). Rào cản ngôn ngữ cụ thể là sai - mọi nhà phát triển nên sẵn sàng làm việc với bất kỳ ngôn ngữ nào. Ai có thể nghĩ rằng họ sẽ viết BE bằng JavaScript vài năm trước?
Nếu bạn tiếp tục có 3 đội: Core, BE và FE, thì thật lãng phí tài nguyên. Thế còn DB? bạn nên có DBA? Tại sao nhà phát triển BE nên biết DB và nhà phát triển FE không biết BE và DB? Không có giới hạn.
Nếu bạn yêu cầu các chuyên gia, và bạn sẽ, gia công cho họ hoạt động khá tốt. Họ thường cung cấp mã chất lượng và họ làm điều đó khá nhanh. Bạn không nhất thiết muốn họ ở trong nhà vì bạn sẽ bị lạc nếu họ rời đi. Bên cạnh đó bạn có thể nhận được lời khuyên tuyệt vời trực tuyến ngày hôm nay. Công cụ cắt cạnh có thể yêu cầu cách tiếp cận khác nhau.
Vì vậy, kết quả về cơ bản là một BE rất mỏng trong UI mà mọi nhà phát triển FE có thể phát triển. Nếu bạn có BE dày trong UI, rất có thể bạn có một số chức năng API được yêu cầu trong Core.
Luôn có ít nhất một nhà phát triển nổi bật so với phần còn lại. Với một FE mỏng như vậy, anh ấy / cô ấy có thể quản lý việc hỗ trợ (không phát triển) các nhà phát triển khác trong mã BE. Ý kiến của tôi là nhà phát triển này ở một vị trí rất tốt và nên được trao giải thích hợp (mặc dù không phải là tiền lương, một cái gì đó khác). Tôi cũng tin tưởng rằng họ sẽ có thể xử lý quá trình xây dựng và xây dựng đúng cách.
Mô hình này cung cấp cho bạn một sự linh hoạt tuyệt vời về phát triển BE. Thế giới BE đã biết một số bước ngoặt trong vài năm qua, vì vậy tôi không khuyên bạn nên dựa vào sự ổn định của BE quá nhiều. Core là một câu chuyện khác nhau.
Vẫn còn câu hỏi - liệu FE và BE có phải là cùng một dự án không? Bạn cần lưu ý những điều sau
- Tài nguyên tĩnh được phục vụ tốt nhất từ máy chủ trước. Vì các máy chủ Front-End (ví dụ nginx) rất mạnh và vì bạn có thể sử dụng Cache cho tài nguyên tĩnh, nên bạn có thể quản lý bằng một triển khai tài nguyên tĩnh (phải là tất cả nội dung HTML, JS, CSS, Hình ảnh).
- Mã cuối cùng không có cùng mức độ xa xỉ, vì vậy bạn phải có một hệ thống phân tán - cũng được quản lý bởi một máy chủ phía trước.
- Mã FE rất được sử dụng lại với tất cả các công nghệ mới hỗ trợ JavaScript. Bây giờ bạn có thể viết các ứng dụng Máy tính để bàn và Di động bằng JavaScript.
- Quá trình xây dựng là hoàn toàn khác nhau - và thậm chí có thể bao gồm phân phối bản vá, nâng cấp, cài đặt, v.v.
Tôi có thể tiếp tục, nhưng tôi hy vọng rõ ràng rằng tôi nghĩ BE và FE nên là cùng một đội, nhưng có thể là các dự án khác nhau.
if you have a startup, don't assign roles. Better hope that you assembled a good self organizing team. If everybody knows each other, everybody knows who does what the best.