はじめに
こんにちは、TIGの越島と申します。
GCP連載2021第9弾です。今回技術ブログに初参加させていただきます。テーマはAnthosです。
Anthosは2019年にGoogleが発表した、「ハイブリッドクラウド・マルチクラウド環境に対応したアプリケーション管理プラットフォーム」です。発表から2年ほど経って、エンタープライズ向けのシステム構成を検討する際に名前が挙がることも増えてきている実感があります。そんなAnthosですが、構成要素が多くて中々全体像が掴みきれない人も多いのではないかと思います。
今回は、「Anthosって何だかよく分からん」という人が、Anthosの話題についていくための最低限の知識をまとめてみようと思います。この記事を読んだ方が、次どこかでAnthosの話題が出たときに、「あ〜はいはいAnthosね」とある程度自信を持って言えるようになることを目指しています。
企業向けシステムとクラウドを取り巻く事情
Anthosが徐々に注目を集めている理由と、Googleが注力している理由を知るために、まずは昨今の企業の情報システムとクラウドを取り巻く事情について見てみましょう。
Googleによって行われた調査によると、調査対象の73%の組織がクラウドを何らかの形で利用しているのに対して、実際にシステムの処理をクラウドに移しているのは10%にしか満たないとのことです。また、80%の組織がクラウドにシステムの処理を移した後、運用コスト等を理由にそれをオンプレ環境に移し戻しているとのことです。AWS、GCP、Azureなどのクラウドサービスの成長が著しいので、クラウド全盛の時代! という感じでクラウドへの移行がどんどん進んでいるイメージを持っている人も多いと思いますが、実態としてはオンプレへの需要も根強いというところでしょうか。
こういった事情から、ここ数年特に注目されているのが、クラウドとオンプレを上手く組み合わせる、「ハイブリッドクラウド」です。データの機密性に応じてオンプレ環境とクラウド環境を使い分けたり、高負荷になったときだけクラウド側に負荷分散をさせて定常的なコストを抑えながらシステムが落ちるリスクも減らしたり等、適材適所でシステムを組むことで得られるメリットは大きいです。また、複数のクラウドサービスを用いる「マルチクラウド」という考え方も、1つのサービスに依存する危険性を減らすという意味で注目されています。
しかし、ハイブリッドクラウドやマルチクラウドはシステム構成や運用が複雑になりがちという課題もあります。ハイブリッドクラウド・マルチクラウド構成のそのような課題を解決し、柔軟なシステム構成と統合的な管理を実現するためのGoogle流のソリューションがAnthosです。
Anthosの構成要素
Anthosはいくつかの技術要素を組み合わせて、ハイブリッド/マルチクラウドを一元管理するためのプラットフォームを提供しています。ここでは、Anthosの構成要素・提供機能の中でも特に重要な以下の3つについて説明します。
- クラスタ管理(Anthos Clusters)
- サービス管理(Anthos Service Mesh)
- ポリシー管理(Anthos Config Management)
クラスタ管理 (Anthos Clusters)
Anthosでは、オンプレ・クラウドを統合してクラスタ管理を行うための機能が提供されています。
KubernetesとGKEのおさらい
(KubernetesとGKEのおさらいは、関さんのGKE Autopilotを触ってみた記事でも行われていますが、この記事でも手短に説明します)。
Kubernetesはコンテナオーケストレーションのためのツールで、数百〜数千といった膨大な数のコンテナを管理、協調させるために使われます。コンテナは環境差異の影響を最小限にできたり、高速なアプリケーション配信・デプロイが可能な点が利点ですが、運用管理の観点からは様々な課題が存在しています。本番運用に耐えうる冗長性の確保や負荷分散、オートスケーリングなどを実現する管理レイヤを提供するのがコンテナオーケストレーションで、そのデファクトスタンダードとなっているのがKubernetesです。
Kubernetesのコンポーネントは、コンテナの実行ホストを提供する「ワーカーノード」と、それを管理する「マスターノード(コントロールプレーン)」の2つに分かれます。
GKE(Google Kubernetes Engine)は、GoogleがGCPのプロダクトの1つとして提供しているKubernetesのマネージドサービスです。GKEはユーザーが自前で構築、運用するのが特に難しい部分である「マスターノード」をGoogleが管理してくれたり、Kubernetesのアップデートがしやすい等のメリットがあります。
Anthosが提供するもの(Anthos Clusters)
Anthosでは、前述したGKEに加えて、GCP以外の環境で動くGKEベースのKubernetesサービスを提供することで、環境によらずにオンプレ・クラウドで統一的にコンテナを管理する仕組みを作っています。
GCP以外の環境で動くGKEベースのKubernetesサービスは、現在は、オンプレ環境用のAnthos Clusters for VMware(GKE On-Prem)、Anthos Clusters on bare metalと、AWS上で動く**Anthos Clusters for AWS(GKE on AWS)**が提供されています。これらを導入すると、全ての環境のKubernetesがGCPコンソール上から一元的に管理・操作できたり、他のGCPサービス(Cloud Build、Container Registry、Audit Loggingなど)との連携がしやすくなります。
※余談ですが、Anthosはまだ発展中の部分が多いため、サービスや機能の呼び名がちらほら変わることがあります。以前、GKE On-PremがAnthos GKEという名前に変わったことがありましたが、今はAnthos Clusters for VMware、Anthos Clusters on bare metalといった呼び方に変わっているようです。
サービス管理(Anthos Service Mesh)
Anthosが提供する2つ目の機能がサービス管理です。
サービスメッシュのおさらい
サービスメッシュはマイクロサービスが抱える問題解決のための1つのアプローチです。
そもそも、マイクロサービスが抱える課題とは何でしょうか?
それぞれの機能が密結合している「モノリシック・アーキテクチャ」に比べて、アプリケーションが独立した複数のコンポーネントとして構築される「マイクロサービス・アーキテクチャ」では、各モジュールが疎結合になるため、スケール・冗長化が容易だったり改修の際に他機能におよぼす影響を低減できるメリットがあります。その反面、疎結合にした各モジュール間のやりとりで考慮すべきことが増えるという側面もあります。
サービスメッシュは、こうしたマイクロサービス・アーキテクチャになることで必要となるネットワーク機能とビジネスロジックを分解して、アプリケーション開発者がビジネスロジックの開発に専念できるようにするのが狙いです。Kubernetesでは、主となるコンテナと共にそれを補助する役割を果たすコンテナを持つ構成(サイドカーパターン)を作ることでこれを実現するのが一般的になっています。サイドカープロキシを経由し、すべてのサービスがメッシュ状に接続されることから、「サービスメッシュ」と呼ばれています。
Anthosが提供するもの(Anthos Service Mesh)
前述したサービスメッシュを実現するソフトウェアはいくつかありますが、最も有名かつAnthosで採用されているのがIstioです。Istioは、大きく分けて、サイドカーコンテナとして対象のPodに入るEnvoyプロキシから成るデータプレーンと、それらを管理するコントロールプレーンの2つに分類できます。Anthos Service Meshは、マネージド版のIstioで、コントロールプレーンがGoogle管理となります。
ポリシー管理(Anthos Config Management)
最後に説明するAnthos Config Managementは、Kubernetesの構成やポリシー等を一箇所でまとめて管理し、オンプレ・クラウドにまたがる複数環境に適用するためのGitOpsスタイルのツールです。こういった管理面でも1つの場所で一言管理できる仕組みを提供することで、ハイブリッド/マルチクラウドの運用を簡易化するのが狙いです。
まとめ
Anthosの話についていくための最低限の知識をまとめてみました。これまでAnthosの前提知識が全くなかった方でも、「Anthos…?」という状態からは抜け出せたのではないでしょうか。
それぞれの技術要素の詳細や、Anthosの他の提供機能など、この記事ではカバーしきれなかった内容は勿論たくさんありますが、この記事を読んだ方が今後公式ドキュメントなどを見たときに「なんかスッと入ってくるぞ!」と思ってもらえたら嬉しいです。
次回は村田さんの Migrate for Anthos を基礎から学ぶ です。