Я думаю, що питання неправильне.
Усі стартапи, в яких я брав участь, не мали архітектури FE-BE.
Більшість стартапів, яких я знаю:
- Core - фактичний продукт, який відкриває інтерфейс
- UI - BE та FE. BE використовує API Core.
API є без громадянства і легко знущаються - навіть без потреби розробника Core. Пекло, якби мені довелося запускати проект з нуля, я можу почати з цілого інтерфейсу, який працює виключно на макетах - що буде чудово для презентацій. Більшість відгуків відбувається через інтерфейс користувача. Клієнти відзначають, що більше - (залежить від вашої цільової аудиторії.)
Наприклад, у пошуку Google є компонент Core, який сканує Інтернет, індексує його тощо., А інтерфейс Google - це зовсім інший світ. Це ядро може легко підтримувати не WWW-пошуки, тоді як інтерфейс не може.
Таким чином, ваш інтерфейс користувача "підключається", і у вас є проблеми.
Ви посилалися на знання з розробки, однак ви не помічаєте аспектів управління проектами. У той час як основній команді може знадобитися тривалість спринту на 2 тижні, команда інтерфейсу використовуватиме CI - все завантажується постійно. Команді Core потрібна буде зворотна сумісність, тоді як інтерфейс користувача не буде.
Мова відрізняється. Напевно, ви хочете розробників C для компонента Core - і ви будете добре, якщо він працює на одній ОС, де як інтерфейс буде записаний мовою Cross OS.
Тести відрізняються. Світ тестів на користувальницький інтерфейс - один із найскладніших, які я знаю у розробці програмного забезпечення. Більшість стартапів нехтують нею і згодом шкодують про це рішення. Ви не можете розділяти BE та FE під час тестування. Це повинен бути єдиний блок, який обробляє його.
Інтерфейс з відкритим кодом - одна з найбільших переваг їх розділення - це те, що ви можете відкрити вихідний інтерфейс. Проект UI потребує підтримки з відкритим кодом.
Я не можу уявити розробника інтерфейсу, який не може зрозуміти всю session
функцію. Ви знаєте - де ви входите та залишаєтесь увійти між різними запитами. Щоправда, вони можуть знати PHP, а не Java .. але концепція BE повинна бути чіткою (наприклад, використовувати зашифроване cookie). Конкретний мовний бар'єр невірний - кожен розробник повинен бути готовий працювати будь-якою мовою. Хто б міг подумати, що вони напишуть BE в JavaScript пару років тому?
Якщо у вас три команди: Core, BE та FE, це марно витрачаючи ресурси. Що з БД? ви повинні мати DBA? Чому розробник BE повинен знати DB, а розробник FE не повинен знати BE та DB? Межі немає.
Якщо вам потрібні фахівці, і ви, їх аутсорсинг працює досить добре. Зазвичай вони доставляють якісний код і роблять це досить швидко. Ви не обов'язково хочете, щоб вони були вдома, тому що ви загубитесь, якщо вони поїдуть. Крім того, сьогодні ви можете отримати чудові поради онлайн. Передові речі можуть вимагати іншого підходу.
Таким чином, результат - це дуже тонкий BE в інтерфейсі, який може розробляти кожен розробник ЗП. Якщо у інтерфейсі у вас є товстий BE, швидше за все, у Core є певна функціональність API.
Завжди є хоча б один розробник, який виділяється з решти. Враховуючи такий тонкий ЗР, він / вона може керувати наданням (а не розробкою) інших розробників у коді BE. На мою думку, цей розробник перебуває у дуже хорошому становищі і його слід присвоювати належним чином (не заробітною платою, а щось іншим). Я також вірю, що вони зможуть справлятися з процесами збирання та належним чином будувати.
Ця модель дає велику гнучкість щодо розвитку BE. Світ БЕ знав кілька поворотів за останні пару років, тому я не рекомендую занадто сильно покладатися на стабільність BE. Core - це інша історія.
Все ще залишається питання - чи повинні FE та BE бути одним і тим же проектом ? Слід зазначити наступне
- Статичні ресурси найкраще обслуговуються з переднього сервера. Оскільки сервери Front-End (наприклад, nginx) дуже потужні і оскільки ви можете використовувати кеш для статичних ресурсів, ви можете керувати за допомогою одного розгортання своїх статичних ресурсів (у якому має бути весь вміст HTML, JS, CSS, зображення).
- Резервний код не має однакової розкоші, тому у вас повинна бути розподілена система - якою також керує фронт-сервер.
- FE-код сильно використовувати для використання нових технологій, що підтримують JavaScript. Тепер ви можете писати настільні та мобільні програми за допомогою JavaScript.
- Процес збирання зовсім інший - він може включати навіть доставку патчів, оновлення, встановлення тощо.
Я можу продовжувати, але сподіваюся, що зрозуміло, що я думаю, що BE та FE повинні бути однією командою, але, можливо, різні проекти.
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.