フルスタックアプリケーション
フルスタックウェブアプリケーションは、フロントエンドとバックエンドの技術を組み合わせて、アプリケーション全体を支えるスタックを形成します。この技術スタックは、開発エコシステム内で特定の目的を果たすさまざまなツール、フレームワーク、言語を含んでいます。
フロントエンドでは、開発者は一般的にHTML、CSS、JavaScriptを使用してユーザーインターフェース(UI)を作成し、アプリケーションの視覚的なプレゼンテーションを定義します。さらに、React、Angular、Vue.jsなどのフロントエンドフレームワークやライブラリは、開発者に再利用可能なコンポーネントとアプリケーションの状態を効率的に管理する方法を提供し、動的で応答性の高いユーザーインターフェースの作成を可能にします。
バックエンドでは、開発者はサーバーサイドのプログラミング言語とフレームワークを使用してリクエストを処理し、データを処理し、アプリケーションロジックを管理します。一般的なバックエンド言語にはPython、JavaScript、Ruby、Javaがあり、それぞれに対応するフレームワークがあります。これらのフレームワークは、ルーティング、ミドルウェア、認証、データベースとの相互作用のためのツールやユーティリティを開発者に提供し、バックエンドサービスやAPIの開発を簡素化します。
データベース管理はフルスタックウェブ開発の重要な側面であり、アプリケーションデータを保存および取得するためにさまざまなデータベースシステムが利用されます。MySQL、PostgreSQL、SQLiteなどのリレーショナルデータベースは、構造化データの保存に一般的に使用され、ACID準拠、トランザクション、リレーショナルクエリ機能などの特徴を提供します。一方、MongoDB、Cassandra、Neo4jなどのNoSQLデータベースは、非リレーショナルデータモデルに対応し、多様なデータ要件を持つアプリケーションに柔軟性とスケーラビリティを提供します。
多くの場合、フルスタックアプリケーションは、すべての機能をゼロから構築するのではなく、既存のコンポーネント、ツール、サービスを利用します。そのため、サードパーティのフロントエンドコンポーネントの統合や外部APIとの相互作用が一般的です。
フロントエンドフレームワーク、バックエンド言語、データベース、サポートツールおよびサービスを含む包括的な技術スタックを活用することで、開発者は現代のユーザーやビジネスのニーズに応える堅牢でスケーラブル、かつ機能豊富なフルスタックウェブアプリケーションを構築できます。
フルスタックウェブアプリケーションの例には、eコマースプラットフォーム、ソーシャルネットワーキングサイト、生産性ツールが含まれ、これらは直感的なユーザーインターフェースのためにフロントエンド技術を活用し、トランザクション、ユーザーデータ、ビジネスロジックを管理するためにバックエンド技術を利用しています。
Cloudflareは、現代のフルスタックアプリケーションを構築、展開、運用するためのすべてのビルディングブロックを提供します。Cloudflareのすべてのサービスは完全にサーバーレスで、グローバルな配信のために設計されています。これにより、開発者は大規模な運用オーバーヘッドなしに優れたエンドユーザー体験を構築できます。
- クライアント: サーバーにリクエストを送信します。これはデスクトップまたはモバイルブラウザ、またはネイティブまたはモバイルアプリを通じて行われる可能性があります。
- セキュリティ: アプリケーションのセキュリティを確保するために、受信リクエストを処理します。これには、SSL/TLSを使用したトラフィックの暗号化、DDoS protectionの提供、ウェブアプリケーションファイアウォール(WAF)を通じた悪意のあるトラフィックのフィルタリング、自動化されたボットに対する緩和策が含まれます。構成に応じて、リクエストは多様なパラメータに基づいてブロック、ログ記録、または許可されることがあります。合理的な完全管理されたデフォルト設定を使用することで、攻撃面を最小限に抑えることができます。
- パフォーマンス: グローバルキャッシュ(CDN)から静的リクエストを提供します。これにより、リクエストがストレージおよびメディアサービスやコンピュートサービスへのリクエストを必要とせずにキャッシュから提供されるため、レイテンシが減少し、リソースの利用が低下します。
- 静的およびメディア: R2から静的ファイル、Imagesから最適化された画像、Streamからオンデマンドビデオおよびライブストリームを提供します。
- コンピュート: Workersを使用してサーバーレスコンピュートで動的リクエストを処理します。これには、認証、ルーティング、ミドルウェア、データベースとの相互作用、APIの提供が含まれる可能性があります。さらに、Pagesを使用して、React、Vue、Angularなどのクライアントサイドまたはサーバーサイドレンダリングのウェブフレームワークを提供します。サーバーレス推論を使用してAIサービスを統合するには、Workers AIを使用します。WorkersとPages Functionsの両方は、Bindingsを使用して他のリソースとの簡単な相互作用を可能にします。
- データとストレージ: データを永続化および取得することでアプリケーションに状態を導入します。これには、オブジェクトストレージのためのR2、リレーショナルデータのためのD1、高い読み取り要件のあるデータのためのKV、および強い一貫性のあるデータストレージのためのDurable Objectsが含まれます。ストレージオプションガイドは、特定のユースケースに最も適したストレージオプションを評価するのに役立ちます。
- 内部可視性: すべてのサービスからLogpushを使用してログを送信し、すべてのサービスからAnalyticsを使用して洞察を収集するか、Workers Analytics Engineを使用してカスタムメトリクスを収集します。
- 外部統合: Cloudflareの可視性ソリューションを既存のサードパーティソリューションと統合します。Logpushは、ストレージおよびさらなる分析のためにログをプッシュするための多くの宛先をサポートしています。また、Cloudflareの分析は分析ソリューションと統合できます。GraphQL Analytics APIは、柔軟なクエリと統合を可能にします。
- 管理とプロビジョニング: TerraformやPulumiなどのサードパーティツールやフレームワーク、CloudflareのDeveloper Platformコマンドラインインターフェース(CLI)wranglerやCloudflare APIを使用してリソースと構成を定義および管理します。これらのツールは、手動プロビジョニングやCI/CDパイプラインの一部として自動化されたプロビジョニングのために使用できます。