システムのクライアントと対話するシステムを設計するときに、フロントエンドのものを設計します。ここで、クライアントという言葉は非常に大きいことに注意してください。ただし、基本的には、外部世界へのインターフェースを提供するときにフロントエンドで作業していることを意味します。
ほとんどのウェブサイトはフロントエンドに過ぎません。つまり、外部の世界に情報を提供し、ほとんどの場合、この情報はHTMLファイルのテキストとして非常に単純に保存できます。
サービスを提供し、フロントエンドが消費する機能をカプセル化する必要がある場合、バックエンドを設計します。これにより、ワークロードの一部をクライアント(フロントエンド)からサーバー(バックエンド)に移動できます。これは、システムに同時にアクセスできるさまざまなクライアントからの情報を調整する必要がある場合にインスタンスで行います。または、中央データリポジトリを使用して動的データを照合する必要がある場合、または特定のセキュリティ要件が必要な場合も同様です。このリストは決して網羅的なものではなく、簡単な例です。
簡単に言うと、フロントエンド(クライアント)は情報を外部に提示します。通常、これらはHTMLまたはその他の何らかのGUIを介した人間です。
バックエンドは、フロントエンドが使用するサービスを集中化する手段を提供します。バックエンドの使用は必須ではなく、システムに複雑さを追加しますが、構築しようとしているシステムに固有の複雑さをより適切に管理できます。
たとえば、wikiなどのサービスをフロントエンドのみで提供することは可能ですが、バックエンドを使用してデータを保存し、フロントエンドに提供することでより自然な方法で解決できるという多くの制限があります。