インフラストラクチャ

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

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

デプロイメント

Gitリポジトリ

アプリケーションのコードは、Gitリポジトリに保存されます。以下のいずれか(またはすべて)のサービスお使いいただけます。

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

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

MyKinstaのボット

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

Cloud Build

アプリケーションをGoogleのCloud Buildに送り、コードからアプリケーションのイメージをビルドします。NickpacksBuildpacks、または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にストレージボリュームを接続し、アプリケーションの再起動または再デプロイ時にもデータを保持することができます。

この記事は役に立ちましたか?