Appearance
フルスタックな Web アプリケーションを素早く構築する
概要
このアーキテクチャで達成できる要件
- フルスタックなフレームワークを利用したWebアプリケーションを構築したい
- 短期間でプロトタイプを開発し、すぐに市場に投入したい
- 高可用性とスケーラビリティが求められるアプリケーションを迅速に展開したい
構成図
構成説明
- Cloud RunにWebアプリケーションをデプロイします。
- カスタムドメインを利用するために Cloud DNS の A レコードを作成します
- Cloud SQL (MySQL) をデータベースとして使用します
- Cloud Load Balancing を使用してトラフィックを分散します
処理フロー
- ユーザがアプリケーションにアクセスすると、リクエストはCloud Load Balancingを通過します。
- リクエストはCloud Runにルーティングされます。
- Cloud Runは必要に応じてCloud SQLからデータを取得・更新します。
- レスポンスがユーザに返されます。
他の方式との比較
Kubernetes
- Kubernetesは柔軟性が高く、より複雑なアプリケーションやマイクロサービスアーキテクチャに適していますが、管理のオーバーヘッドが大きくなります。
- このアーキテクチャはCloud Runを使用することで、Kubernetesの複雑さを避けつつ、スケーラビリティと管理のしやすさを両立しています。
- 小規模から中規模のアプリケーションでは、このアーキテクチャの方が運用コストを抑えられる可能性が高いです。
非機能要件
可用性
- Cloud Runの自動スケーリング機能により、トラフィックの増加に応じて自動的にインスタンス数が調整されます。
運用・保守性
- フルマネージドサービスを利用することで、インフラストラクチャの管理負荷を大幅に軽減できます。
保守
- アプリケーションの更新は、Cloud Runの新しいリビジョンとしてデプロイし、トラフィックを段階的に移行できます。
セキュリティ
- VPCネットワークを使用して、内部リソースへのアクセスを制限します。
- Cloud IAMを使用して、きめ細かなアクセス制御を実装します。
その他
リソースの削除について
本アーキテクチャを削除する際、次のようなエラーが発生し削除に失敗することがあります。
- Unable to remove Service Networking Connection, err: Error waiting for Delete Service Networking Connection: Error code 9, message: Failed to delete connection; Producer services (e.g. CloudSQL, Cloud Memstore, etc.) are still using this connection.
このエラーが起きた場合は、ワークアラウンドとして次の手順を実施することでリソースを削除してください。
Google Cloudの console を開き、作成したVPCネットワークを選択します。VPCネットワークの命名規則は qvs-${appName}-vpc-nw
です。
VPCネットワークの詳細画面より、VPCネットワークピアリングタブを開き、次の2つのピアリングが存在することを確認し、この順番に一つずつ削除します。
- cloudsql-mysql-googleapis-com
- servicenetworking-googleapis-com
これらの設定の削除が完了したら、失敗したAssemblyLineをリトライしてリソースの削除を続行してください。