ソフトウェア開発において、フロントエンドはユーザーが操作するプレゼンテーション層を指し、バックエンドは舞台裏で行われるデータ管理と処理を指します。「フルスタック」とは、この両方を指します。クライアントサーバーモデルでは、クライアントは通常、ユーザー対応のタスクの大部分を処理するフロントエンドと見なされ、サーバーは主にデータとロジックを管理するバックエンドです。
ソフトウェアアーキテクチャでは、ハードウェアとエンドユーザーの間に多くのレイヤーが存在する場合があります。フロントエンドは抽象化されており、ユーザーフレンドリーなインターフェースを提供することで基盤となるコンポーネントを簡素化します。一方、バックエンドはデータの保存とビジネスロジックを処理します。
電子商取引 Web サイト: フロント エンドはユーザー インターフェイス (製品ページ、検索バーなど) であり、バックエンドは支払いを処理し、在庫を更新します。
銀行アプリ: フロントエンドでは口座残高が表示され、バックエンドでは安全な取引が処理され、記録が更新されます。
ソーシャル メディア プラットフォーム: フロント エンドではニュース フィードが表示され、バックエンドでは投稿が保存され、通知が管理されます。
電気通信においては、フロントエンドはデバイスまたはサービスと考えられ、バックエンドはサービスの提供をサポートするインフラストラクチャです。
経験則として、フロントエンド(クライアント側)にはユーザーが操作するすべてのコンポーネントが含まれます。バックエンド(サーバー側)は通常サーバー上に存在し、ユーザーから物理的に遠く離れていることがよくあります。
コンテンツ管理システムでは、フロントエンドはエンドユーザー向けのビューを指し、バックエンドは管理ユーザー向けのビューを指します。[ 1 ] [ 2 ]
音声合成において、フロントエンドとは入力テキストを記号的な音声表現に変換する合成システムの部分を指し、バックエンドとは記号的な音声表現を実際の音に変換する部分を指します。[ 3 ]
コンパイラでは、フロントエンドがコンピュータのソースコードを中間表現に変換し、バックエンドが中間表現から実行可能コードを生成します。バックエンドは通常、より高速に実行できるコードを生成するように最適化されます。フロントエンドとバックエンドの区別は、ソースコードを処理するパーサーと、実行可能コードを生成・最適化するコンパイラを区別することもできます。GCCなどの一部の設計では、複数のフロントエンドオプション(異なるソース言語の解析)と複数のバックエンドオプション(異なるターゲットプロセッサ向けのコード生成)が提供されています。[ 4 ]
一部のグラフィカル ユーザー インターフェイス(GUI) アプリケーションは、基礎となるコマンド ライン インターフェイス(CLI) プログラムのシンプルなフロントエンドとして機能し、ユーザーが CLI の用語やコマンドを学習する必要がないようにしています。
フロントエンドとバックエンドの違いを理解するもう一つの方法は、それぞれのソフトウェア開発者に求められる知識を考えることです。以下の例は、Web開発に焦点を当てています。
フロントエンドはAPIを介してバックエンドと通信します。Webおよびモバイルフロントエンドの場合、APIはHTTPリクエスト/レスポンスに基づいていることが多いです。APIは、「バックエンド・フォー・フロントエンド」(BFF)パターンのように、フロントエンドインターフェースごとに異なるバックエンドサービスを使用することで、フロントエンドの処理負荷を軽減することもできます。[ 5 ]
コンピュータネットワークにおいて、フロントエンドとは、デバイスをネットワークに接続したり、DMZなどのセキュリティを提供したり、データを転送可能な形式に変換したりするハードウェアを指します。バックエンドとは、ネットワーク内でデータを処理および転送するハードウェアを指します。
プロセッサ設計において、フロントエンド設計は、 Verilogなどのハードウェア記述言語で回路の動作を最初に記述することを指します。一方、バックエンド設計は、その動作をダイ上の物理的なトランジスタにマッピングするプロセスを指します。