インフラストラクチャ
弊社お客様のアプリケーションやデータベースは、Google Cloud Platform最高クラスのインフラストラクチャで実行されます。以下、アプリケーション&データベースホスティングのインフラストラクチャについてご紹介します。
GitリポジトリまたはDockerイメージ
アプリケーションのコードは、パブリックまたはプライベートのGitリポジトリまたはDockerイメージに保存することができます。
プライベートのGitリポジトリについては、以下のいずれか(またはすべて)をご利用いただけます。
Dockerイメージは、Linux/amd64アーキテクチャ用にビルドする必要があります。プライベートのDockerイメージには、以下のレジストリサービスのいずれか(またはすべて)をご利用いただけます。
- GitHub(ghcr.io)
- GitLab(registry.gitlab.com)
- Docker Hub(docker.io)
MyKinstaでのアプリケーションの追加とデプロイ
アプリケーションを追加すると、Gitリポジトリに接続してアプリケーションを取得します。
MyKinstaのボット
Gitリポジトリを使用しているアプリケーションの「設定」画面で「コミットに際し自動でデプロイ」を選択している場合、リポジトリに変更やマージをコミットするたびに、それがボットによって検出され、Gitサービスからのアプリケーション取得、および最新版のアプリケーションのデプロイが実行されます。
Cloud Build
アプリケーションをGoogleのCloud Buildに送り、コードからアプリケーションのイメージをビルドします。Nickpacks、Buildpacks、またはDockerfileの情報に基づき、インストールするアプリケーションやモジュールが判断される仕様です。そして、コンテナ化できるイメージが出力されます。
Artifact Registry
Artifact Registryは、デプロイ可能な状態のコンテナイメージを保存する場所となります。各アプリケーションに、デプロイ時にいつでも使用できる単一のイメージが保持されます。
Kubernetesクラスタ
Artifact Registryのイメージは、クラスタ─複数のコンテナを実行できる仮想マシン(VM)に反映されます。クラスタにより、Artifact Registryからのリクエストでコンテナを検出・実行し、適切なリソースが確保されます。コンテナに何らかの問題が見られた場合には、アプリケーションが別のコンテナに再デプロイされます。弊社インフラストラクチャでは、cri-o v1.23.xを使用していますが、このバージョンは固定ではなく、スタック内のさまざまなコンポーネントを更新する際、それに応じてアップグレードされる可能性があります。
弊社のKubernetesインフラではマルチテナント設定がサポートされ、各アプリケーションが独自にコンテナ化された環境で実行されます。ネットワークの分離とマルチレイヤーの仮想化によりセキュリティを確保し、アプリケーション間の不正アクセスを防止します。この設計により、信頼性に優れセキュアなホスティングプラットフォームを実現。お客様はコアビジネスに専念することができます。各リージョンに少なくとも1クラスタを配備し、各地域のアプリケーション数に応じてクラスタを追加することも可能です。このシステムにより、適切なリソースの割り当てとスケーラビリティを実現し、増大する要件にも対応することができます。
Cloudflare
ユーザーがアプリケーションにアクセスすると、第一段階として、Cloudflareの層に接続されます。Cloudflareのシステムが、どのクラスタがウェブサイトを運用しているかを把握しており、該当するクラスタにアクセスリクエストを送信する役割を果たします。
現在、アプリケーション&データベースホスティングには、Cloudflareデフォルトのファイアウォールルール、DDoS対策、およびその他の機能が標準で実装されています。
Cloud Load Balancing
各クラスタにはロードバランサがあり、Cloudflareからのアクセスリクエストを受信し、無作為にワーカーノードを選択します。
Ingress
ワーカーノードは、イングレスシステムでリクエストを受信し、リクエストされたサーバーがどのコンテナに割り当てられているかを認識します。イングレスシステムが、リクエストを該当するコンテナに送信し、コンテナにデータベースが接続されている場合は、データベースと通信して同じルートでレスポンスを送信します。
仮想マシン(VM)
仮想マシン(VM)は、複数のコンテナやデータベースを保持することができます。
コンテナ
VM上には、各コンテナやアプリケーションのコピーを複数作成することができます。イングレスシステムがこれを認識し、同じコンテナのコピーのうち1つを経由します。
永続ストレージ
ウェブプロセスやバックグラウンドプロセスには、永続ストレージの追加が可能です。これにより、アプリケーションのVMにストレージボリュームを接続し、アプリケーションの再起動または再デプロイ時にもデータを保持することができます。