アプリケーションコードのようにバージョン管理され、テストされ、デプロイされるインフラストラクチャ — なぜなら、プラットフォームの信頼性は、その下にあるものと同程度だからです。

インフラストラクチャがクラウドコンソールを介したクリック操作で管理されている。ステージング環境と本番環境の間で環境の乖離が発生し、インフラストラクチャレベルで「私のマシンでは動作する」問題が起きている。スケーリングには手動介入が必要で、デプロイにはサーバーへのSSH接続が伴い、ディザスタリカバリは誰もテストしたことのないGoogleドキュメントに記載されているだけである。再現性があり、バージョン管理され、自己修復可能で、可観測性のあるインフラストラクチャ — チームが特定の「ヒーロー」の知識なしに運用できるインフラストラクチャ — が必要です。
Explore more design patterns and system architectures
クラウドネイティブとは、単にオンプレミスアプリケーションをクラウドの仮想マシンに移行するのではなく、エラスティック・スケーリング、マネージドサービス、分散アーキテクチャといったクラウドの機能を活用するために、アプリケーションを特別に設計することを意味します。MicrocosmWorksは、インフラストラクチャを貴重で長寿命なものとしてではなく、一時的で交換可能なものとして扱うコンテナ化、宣言的なInfrastructure-as-Code、サービスメッシュ、CI/CD自動化を用いて、クラウドネイティブシステムを構築します。実用的な違いとしては、クラウドネイティブアプリケーションは自動的に10から10,000ユーザーにスケールでき、人の手を介さずにインフラストラクチャの障害から復旧し、1日に何十回もアップデートをデプロイできる点です。
MicrocosmWorksは、オートスケーリング、ローリングデプロイメント、サービスディスカバリ、multi-environment consistencyといった高度なオーケストレーション機能を必要とする、10以上のmicroservicesを運用している組織に対しKubernetesを推奨します。一方、AWS ECS、Google Cloud Run、Azure Container Appsのようなよりシンプルなプラットフォームは、サービス数が少ないチームやKubernetesの専門知識が限られているチームに適しています。私たちは、多くのチームが時期尚早にKubernetesを導入し、機能開発よりもクラスターの管理に多くの時間を費やしているのを目の当たりにしてきました。そのため、オーケストレーションレイヤーを推奨する前に、お客様の実際のワークロードの複雑さとチームの成熟度を評価します。私たちの評価には、お客様の特定の規模に合わせて、managed Kubernetes、serverless containers、Platform-as-a-Serviceの各オプションを比較したTCO分析が含まれます。
MicrocosmWorksは、マルチクラウドのインフラプロビジョニングにはTerraformを標準とし、HCLではなくTypeScriptやPythonのようなプログラミング言語の使用を好むチームにはPulumiを標準としています。全てのインフラ定義はGitに保存され、アプリケーションコードと同じCI/CDパイプラインを通じてデプロイされます。当社では、IaCリポジトリを、ネットワーク、コンピュート、データベース、可観測性向けの再利用可能なモジュールとして構築しており、これらを組み合わせて環境固有の構成を作成し、開発、ステージング、本番環境間の一貫性を保証しています。全てのインフラ変更はプルリクエストレビューを経由し、自動化されたプランプレビューによって、変更が適用される前にどのリソースが作成、変更、または破棄されるかを正確に示します。
MicrocosmWorksは、明確に定義されたインターフェースの背後にクラウド固有の依存関係を分離する抽象化レイヤーを用いて、クラウドネイティブアーキテクチャを設計します。これにより、アプリケーション全体を書き換えることなく、個々のサービスプロバイダーを交換することが可能になります。私たちは可能な限り Kubernetes, PostgreSQL, Redis, OpenTelemetry のようなポータブルな技術を使用し、DynamoDB や Cloud Spanner のようなクラウド固有のサービスは、代替プロバイダー向けに再実装可能なアダプターレイヤーでラップしています。このアプローチは、初期開発段階ではオーバーヘッドを最小限に抑えますが、後でワークロードを異なるプロバイダーに移動したり、コンプライアンスやレジリエンスの理由でマルチクラウド戦略を採用する必要が生じた場合には、数ヶ月分の移行作業を節約できます。
標準的なクラウドネイティブインフラストラクチャのエンゲージメントは、まず2週間のアセスメントから始まります。この期間中、MicrocosmWorksがお客様の現在のアーキテクチャ、ワークロード、およびチームの能力を評価します。次に、4〜8週間のプラットフォーム構築フェーズに移り、コンテナオーケストレーション、CI/CDパイプライン、オブザーバビリティ、セキュリティ制御を含む基盤となるインフラストラクチャを提供します。その後、4〜6週間のアプリケーション移行フェーズを実施し、お客様の最初の2〜3のサービスをコンテナ化して新しいプラットフォームにデプロイします。このフェーズでは、実践的な知識移転のためにお客様のエンジニアリングチームが当社のチームと密接に連携します。当社のクラウドネイティブコンサルティング料金は$10〜$40/時で、アセスメントから本番稼働準備までの全エンゲージメントは通常10〜16週間を要します。
クラウドネイティブインフラストラクチャは、Infrastructure as Code (IaC) としてインフラストラクチャを扱い、Kubernetes (またはマネージドな同等サービス) によってオーケストレーションされたコンテナでワークロードを実行し、GitOpsパイプラインを通じてデプロイし、運用上のトレードオフが有利な場合にはマネージドサービスを利用します。このパターンは、可用性のためのマルチリージョンデプロイメント、弾力性のためのHorizontal Pod Autoscaling、サービス間通信のためのService Mesh、そして包括的な可観測性を網羅しています。目標は「クラウド上で実行すること」ではなく、デフォルトで自動化され、再現性があり、回復力のあるインフラストラクチャを構築することです。
このアーキテクチャは3つのプレーンにまたがっています。コントロールプレーンは、Terraform/Pulumi を介してインフラストラクチャのプロビジョニングを管理し、GitOpsコントローラ (ArgoCD/Flux) を実行し、シークレット管理 (Vault/AWS Secrets Manager) を行います。ワークロードプレーンは、Pod Autoscaling、Service Mesh (Istio/Linkerd)、およびIngress管理を備えたKubernetesクラスター (EKS、GKE、またはAKS) でアプリケーションコンテナを実行します。可観測性プレーンは、メトリクス (Prometheus)、ログ (Loki/CloudWatch)、トレース (Jaeger/Datadog)、およびアラート (PagerDuty/OpsGenie) を収集します。
git revert である。| レイヤー | テクノロジー |
|---|---|
| コンピューティング | Kubernetes (EKS, GKE, AKS), ECS Fargate, Cloud Run |
| IaC | Terraform, Pulumi, AWS CDK |
| GitOps | ArgoCD, Flux, GitHub Actions |
| ネットワーキング | Istio, Linkerd, AWS App Mesh, Nginx Ingress, Cert-Manager |
| 可観測性 | Prometheus, Grafana, Datadog, Loki, Jaeger, PagerDuty |
| 使用すべき時 | 避けるべき時 |
|---|---|
| 独立したスケーリングとデプロイが必要な5つ以上のサービスを運用している場合 | 単一のアプリケーションがあり、PaaS (Vercel, Railway, Render) 上で実行できる場合 |
| 複数のチームが共有インフラストラクチャに貢献している場合 | チームが3人未満のエンジニアである場合 — Kubernetesの運用負担が支配的になります |
| 可用性またはコンプライアンスのためにマルチリージョンデプロイメントが必要な場合 | プロジェクトがHAや複雑なオーケストレーションを必要としないMVPである場合 |
| コンプライアンスが再現可能で監査可能なインフラストラクチャを要求する場合 | コスト最適化が重要であり、ワークロードがサーバーレスの経済性に適合する場合 |
MWはインフラストラクチャを一度限りの設定ではなく、製品として提供します。私たちは、開発者がアプリケーションコードに使用するのと同じワークフローで、プルリクエストを通じてインフラストラクチャの変更を計画、レビュー、適用するCI/CDパイプラインを備えたTerraformモジュールを提供します。当社のKubernetesデプロイメントには、Pod disruption budgets、リソース制限、ネットワークポリシー、自動証明書ローテーションなどの本番グレードのデフォルト設定が含まれています。お客様のチームがインフラストラクチャを独立して運用できるよう、運用ランブック、Grafanaダッシュボード、およびオンコールエスカレーションポリシーとともに引き渡します。
使用した分だけ支払い、使用しない時はゼロにスケールし、サーバーの管理を完全にやめます。ただし、経済的メリットがなくなる時を把握しておく必要があります。