広まりを見せるも、使いこなせる技術者が少ないKubernetes
多くの企業でクラウドでのコンテナ活用が進む中、採用が進んでいるのが、コンテナオーケストレーションツール「Kubernetes」である。Kubernetesは、クラウドネイティブの特長をいかすシステムアーキテクチャ構築のための、マイクロサービスを実現するには欠かせない技術ともいえる。
これからの注目技術であり、大企業を中心に採用の検討が進んでいるKubernetesだが、知見のある技術者が少ないため、その特長をいかした本格的な活用に至っている企業はまだ少ない。
2014年11月に設立され、「攻めのインフラ」というメッセージを掲げるインフラ専門の技術者集団grasysは、そうした中でもKubernetesの先進事例を数多く手がけている企業の1つだ。クラウドを主体としたシステムの設計から、構築、安定した運用まで、クライアントにとっての最適なインフラを提供している。同社の特徴は、Kubernetesをはじめ、Google Cloudが提供するマネージドアプリケーションプラットフォーム「Anthos」、Kubernetes上で動くゲームサーバを制御するライブラリ「Agones」などの新しい技術にいち早く着手し、実証検証を行うなど、最新の技術を取り入れる「攻める心」を持ち続けていることだ。
grasysはGoogle Cloud プレミア Service パートナーの認定を受けていることからもわかるとおり、Google Cloudを活用したインフラ構築を得意とするが、近年はAWS(Amazon Web Services)やMicrosoft Azureなどのクラウドを使った案件も増えている。そういったパブリッククラウドを用いたインフラの設計、構築、運用までを担当するCloud Infrastructure Division Ops Teamのリーダーを務めているのが泉水氏だ。
泉水氏は同社に入社するまで「インフラはあまり触れてこなかった」という。未経験からSES(システムエンジニアリングサービス)企業に転職し、SIerにてオープン系の開発に従事。その後、新しい技術を習得すべく参加した地元コミュニティでGoogle Cloudに関心を持ち、Google Cloudを使った開発をしているIT企業に入り、約3年間アドテク系サービスのバックエンドシステムの開発に従事した。同システムのGoogle Cloudのインフラを運用していたのがgrasysで、「そういう縁もあり、会社を退職したときに当社代表の長谷川から声をかけられ、grasysに入社しました」と泉水氏は経緯を語る。
Kubernetesを活用するメリットとは
Webサービスやアプリケーションの投入時期によって、企業の競争力が変わるなど、現在のビジネスはITなしには語ることはできない。そんな時代にフィットする開発技術として注目されているのがコンテナ技術であり、コンテナ化されたアプリケーションの開発・運用を自動化するプラットフォーム、Kubernetesである。改めて、そのメリットはどこにあるのだろうか。
「現在、新しいアプリケーションやサービスを開発する場合、環境をDockerで構築することがスタンダードになってきています。Dockerであれば、アプリケーションのテスト環境と本番環境を統一できるメリットが得られるからです。その際に、コンテナの状態を気にすることなくオートスケールを行うなど、Dockerのうまい管理に欠かせないのが、Kubernetesです(※Kubernetes 1.20からDockerランタイムは非推奨になります)」(泉水氏)
DockerやKubernetesを活用するメリットは、コンテナ化されたアプリケーションを好きなときに実行できるようになるなど、プログラムの更新やデプロイも容易になることだ。Dockerイメージさえあれば、Google CloudからAWSへ移行したり、オンプレミスに戻したりするポータブル性が高まることもメリットといえる。「これは前職での経験ですが、オフショア開発をしている場合は、手順書を丁寧に準備するよりもDockerイメージを作成して英語で手順を少しだけ記載するほうが簡単に済みますし、環境の差分がなくなります。これもコンテナを活用するメリットの1つだと思います」(泉水氏)
便利なKubernetes、活用するうえでの注意点は?
Kubernetesを用いるとコンテナ管理が容易になるとはいえ、注意しなければならないポイントがいくつかある。例えば、設定によってはPodと呼ばれるプログラムが停止していると見なされると、すぐに破棄されてしまう。「Podが削除されたときにどこにログを送信するかなど、設計のときにあらかじめ決めておくことが大事になる」と泉水氏は指摘する。
またサービスの特性によって、Kubernetesでの管理には向き不向きがあることも注意すべきポイントだ。「KubernetesはVMを共有してサービスを動かすので、Webサイトなどステートレスなサービスやシステムには向いていますが、常時接続やライフタイムが長いなど、CPUやメモリを占有して動かすようなアプリケーションに関してはあまり向いていません。また更新頻度が少ないものや、一定のサイジングで決まっており、スケールしないものなどは、そもそもコンテナ化するメリットが少ないです。アプリケーションの特性を考えて採用することが大事だと思います」(泉水氏)
Kubernetesの向き不向きを踏まえた活用法とは
サービスやアプリケーションの特性によって、向き不向きのあるKubernetes。grasysではどのようなアプリケーションの運用基盤にKubernetesを活用しているのか。泉水氏が紹介してくれたのが、GKE(Google Kubernetes Engine:Google Cloud上にKubernetesクラスターを容易に構築できるマネージド環境)を活用し、グローバルに展開されているオンラインゲームのインフラを構築した事例である。
GKEを採用したのは、「いろいろな対向サービスからアクセスされるのでサイジングが難しかったこと、また対向サービスに合わせてカスタマイズをするなど、プログラムの改修頻度が高かったこと」と泉水氏はその理由を語る。同インフラはAPIベースで設計されており、開発環境とテスト環境もGKE上に構築している。「開発者がプログラムを書きビルドして、GKE上のテスト環境にデプロイし、テストして、問題なければ本番という流れがスムーズにできている。すぐに修正しなければならないクリティカルなバグが発生しても、接続先が違うだけで環境はほぼ同じなので、アップデートもスムーズにできます」と泉水氏は説明する。
だが、Kubernetesで対応しきれない点も、もちろんある。その1つとして挙げられるのが、Podの処理状況までわからないため、意図しないスケールインが行われてしまう可能性があることだ。ゲームインフラにKubernetesを採用した場合、アクセスが落ち着いたときにスケールインによってPodを自動的に減らして欲しいことがある。単純にCPUの負荷などを指標とすると、Kubernetesではユーザーが接続中かどうか判断を行わずスケールインしてしまう。つまりゲームプレイ中のユーザーがいるにもかかわらず、Podが動的に削除されてしまう可能性があるというわけだ。そうすると、ユーザーは通信が途切れてしまい、ゲームへの信頼感も減退してしまう。
「銀の弾丸」は無いから、新しい技術を組み合わせる
このようなKubernetesで対応しきれない点をカバーする技術として、grasysが導入を進めているのが「Agones」である。「AgonesはUbisoftとGoogleが共同開発しているOSSのプロジェクトで、Kubernetes上でDedicated Game Server(DGS:専用ゲームサーバ)をホスティングすることが可能になる技術です。正式リリースはされていないので、現在開発段階で活用し検証しています。Agonesの活用を決めたのは、オートスケールの効率化に加え、意図しないスケールインを防ぐことができるなど、実行中のゲームサーバの保護が可能になるためです」(泉水氏)
また、グローバルでのリージョンをまたいだインフラ管理を容易にするため、Google Cloud Game Server(GCGS)も採用している。「例えば日本、米国、欧州というようにワールドワイドにDGSを展開するためには、複数のKubernetesクラスターを管理しなければなりません。GCGSを活用すれば、設定変更を行う際には1つの設定ファイルを書き換えるだけで、すべてのリージョンで管理しているAgonesに反映できるようになります。もちろん、別々の設定にすることも可能。管理を容易にするために、GCGSの活用を決めました」(泉水氏)
Kubernetesを活用するメリットは、必要に応じて容易にスケールアウト、スケールインができること。このメリットにより、向き不向きはあるとはいえ、コストが抑えられるのであれば、誰もが使いたいと思う技術だ。しかし「Kubernetesは銀の弾丸ではない」と泉水氏は忠告する。小さなシステムの場合は、コストが余計にかかってしまうこともある。「あくまでも大切なのはビジネスの課題解決。コストも考慮に入れ、技術者はさまざまな選択肢を持っておくと良いでしょう」(泉水氏)
課題解決のために、新しい技術へのキャッチアップを続けていきたい
現在、2025年の崖を乗り越えるべく、多くの企業がDX(デジタルトランスフォーメーション)に取り組んでいる。grasysでもそれを支援すべく、既存インフラのクラウド移行をはじめ、ピープルアナリティクスやデータマーケティングなどの分野で、機械学習を用いたデータ活用基盤の構築を支援しているという。
「お客さま第一で、お客さまのアプリケーションが安心して稼働できるインフラの提供を心がけていきたいですね。そのために新しい技術が必要なら、どんどん取り入れていきたい。そのためにも新しい技術のキャッチアップをし続けていきたいと思います」(泉水氏)
新しい技術を貪欲に取り入れ、お客さまにとって最適なインフラを提供する。これからどんなKubernetesの事例が登場するのか。grasysの先進的な取り組みに注目したい。