質問は間違っていると思います。
私が参加したすべてのスタートアップは、FE-BEのみのアーキテクチャを持っていませんでした。
私が知っているほとんどのスタートアップは:
- コア-インターフェースを公開する実際の製品
- UI-BEおよびFE。BEはコアのAPIを使用します。
APIはステートレスであり、簡単にm笑されます-コア開発者がなくてもです。地獄、私がゼロからプロジェクトを開始しなければならなかった場合、私はモックで純粋に動作するUI全体から始めるかもしれません-これはプレゼンテーションに最適です。フィードバックのほとんどはUIによるものです。顧客はさらに多くのことに注意します-(対象読者によって異なります。)
たとえば、Google検索にはWebをクロールし、インデックスを作成するなどのコアコンポーネントがあり、Google UIはまったく異なる世界です。このコアは非WWW検索を簡単にサポートできますが、UIはサポートできません。
これにより、UIが「プラグイン可能」になり、懸念事項が分離されます。
開発知識に言及しましたが、プロジェクト管理の側面を見落としています。コアチームは2週間のスプリント期間を必要とするかもしれませんが、UIチームはCIを使用します。すべてが常にアップロードされます。コアチームには下位互換性が必要ですが、UIには必要ありません。
言語が異なります。おそらく、CoreコンポーネントのC開発者が必要になるでしょう。また、単一のOSで実行する場合は大丈夫です。UIはクロスOS言語で記述されます。
テストは異なります。UIテストの世界は、私がソフトウェア開発で知っている中で最も複雑なものの1つです。ほとんどのスタートアップはそれを無視し、この決定を後悔しています。テスト時にBEとFEを分離することはできません。それを処理する単一のユニットでなければなりません。
オープンソースUI-2つを分離する最大の利点の1つは、UIをオープンソースにできることです。UIプロジェクトにはオープンソースのサポートが必要です。
機能全体を 理解できないUI開発者を想像することはできませんsession
。あなたが知っている-あなたがログインし、異なるリクエスト間でログインしたままになります。確かに彼らはJavaではなくPHPを知っているかもしれませんが、BEの概念は明確でなければなりません(たとえば、暗号化されたCookieを使用する)。特定の言語障壁は間違っています-すべての開発者は、どの言語でも喜んで作業する必要があります。数年前にJavaScriptでBEを書くと誰が思ったでしょうか?
コア、BE、FEの3つのチームが存在する場合、リソースの無駄遣いです。DBはどうですか?DBAが必要ですか?BE開発者がDBを知っていて、FE開発者がBEとDBを知らないのはなぜですか?制限はありません。
あなたが専門家を必要とし、あなたがそうするなら、彼らをアウトソーシングすることはかなりうまくいきます。通常、高品質のコードを配信し、非常に高速に実行します。退社すると迷子になるため、必ずしも社内に配置する必要はありません。さらに、今日オンラインで素晴らしいアドバイスを得ることができます。最先端のものは異なるアプローチを必要とするかもしれません。
したがって、結果は基本的にすべてのFE開発者が開発できるUIの非常に薄いBEです。UIに厚いBEがある場合は、おそらくCoreに必要なAPI機能がいくつかあります。
残りの中で際立っている開発者は常に少なくとも1人います。このような薄いFEがあれば、BEコードで他の開発者をサポート(開発ではなく)することができます。私の意見では、この開発者は非常に優れた立場にあり、適切に授与されるべきです(ただし、給与ではなく、他の何か)。また、ビルドプロセスを処理して適切にビルドできることも信頼しています。
このモデルは、BE開発に関して優れた柔軟性を提供します。BEの世界ではここ数年でいくつかの転換が知られているため、とにかくBEの安定性に頼りすぎることはお勧めしません。コアは別の話です。
FEとBEは同じプロジェクトである必要がありますか?次のことに注意してください
- 静的リソースは、フロントサーバーから最適に提供されます。フロントエンドサーバー(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.