Kinstaのお客様のアプリケーションやデータベースは、Google Cloud Platform最高クラスのインフラストラクチャで実行されます。こちらのページでは、アプリケーション&データベースホスティングのインフラストラクチャについて詳しくご紹介します。

Kinstaのアプリケーション&ホスティングのインフラストラクチャ図
Kinstaのアプリケーション&ホスティングのインフラストラクチャ図

デプロイメント

GitHub

アプリケーションのコードは、GitHubのリポジトリに保存されます。

MyKinstaでのアプリケーションの追加とデプロイ

アプリケーションを追加すると、GitHubのリポジトリに接続してアプリケーションを取得します。

MyKinstaのボット

アプリケーションの「設定」画面で、「コミットに際し自動でデプロイ」を選択すると、GitHubリポジトリに変更やマージをコミットするたびに、それがボットにより検出され、GitHubからのアプリケーション取得、そして最新版のアプリケーションのデプロイが実行されます。

Cloud Build

アプリケーションをGoogleのCloud Buildに送り、コードからアプリケーションのイメージをビルドします。ビルドパックやDockerfileの情報に基づき、インストールするアプリケーションやモジュールが判断される仕様です。そして、コンテナ化できるイメージが出力されます。

Artifact Registry

Artifact Registryは、デプロイ可能な状態のコンテナイメージを保存する場所となります。各アプリケーションに、デプロイ時にいつでも使用できる単一のイメージが保持されます。

Kubernetesクラスタ

Artifact Registryのイメージは、クラスタ─複数のコンテナを実行できる仮想マシン(VM)に反映されます。クラスタにより、Artifact Registryからのリクエストでコンテナを検出・実行し、適切なリソースが確保されます。コンテナに何らかの問題が見られた場合には、アプリケーションが別のコンテナに再デプロイされます。弊社インフラストラクチャでは、cri-o v1.23.xを使用していますが、このバージョンは固定ではなく、スタック内のさまざまなコンポーネントを更新する際、それに応じてアップグレードされる可能性があります。

リクエスト

Cloudflare

ユーザーがアプリケーションにアクセスすると、第一段階として、Cloudflareの層に接続されます。Cloudflareのシステムが、どのクラスタがウェブサイトを運用しているかを把握しており、該当するクラスタにアクセスリクエストを送信する役割を果たします。

現在、アプリケーション&データベースホスティングには、Cloudflareデフォルトのファイアウォールルール、DDoS対策、およびその他の機能が標準で実装されています。

Cloud Load Balancing

各クラスタにはロードバランサがあり、Cloudflareからのアクセスリクエストを受信し、無作為にワーカーノードを選択します。

Ingress

ワーカーノードは、イングレスシステムでリクエストを受信し、リクエストされたサーバーがどのコンテナに割り当てられているかを認識します。イングレスシステムが、リクエストを該当するコンテナに送信し、コンテナにデータベースが接続されている場合は、データベースと通信して同じルートでレスポンスを送信します。

仮想マシン(VM)

仮想マシン(VM)は、複数のコンテナやデータベースを保持することができます。

コンテナ

VM上には、各コンテナやアプリケーションのコピーを複数作成することができます。イングレスシステムがこれを認識し、同じコンテナのコピーのうち1つを経由します。