突然の指名を受け、初のKubernetes案件にチャレンジ
株式会社grasysは2014年11月にスタートし、創業5年目を迎えた若い会社だ。登壇時の社員数は25名で、うちエンジニアは代表を含め17名の「少数精鋭」の企業でもある。すでに現在、エンドユーザー数にして3億ユーザー以上(延べ)を擁し、コンシューマ、スマートフォン、PCゲームなど多彩なサービスのインフラを提供している。
「運用しているインフラの規模も、4500本を超えるVMインスタンスが稼働していて、1秒あたりのリクエスト数は約200万件。それぞれのサービス規模も、例えば1システムあたりのインスタンスが2200台と、かなり大きなインフラを管理しています。また GCP のプロジェクトもおよそ180プロジェクトが稼働しています」(泉水氏)
この他にも、Webシステムや分析基盤システムまで幅広く手がけており、今回の事例に登場する GCP の領域でも高い技術力を持ち、Google Cloud プレミアサービスパートナーの認定を受けている企業だ。
そうしたgrasysで入社以来、インフラエンジニアとして設計から構築、運用までを手がけてきた泉水氏だが、ある日突然、それまで経験したことのない分野の構築担当に指名され、大いに戸惑ったという。
「業務自体は、コンソールゲームの共通基盤プラットフォーム構築なのですが、これを GCP のマネージドサービスである GKE で構築せよ、との指示でした。ところが私は、それまでKubernetesを一度も手がけたことがなく、正直なところ、どうやったらいいのか見当がつきませんでした」と泉水氏は振り返る。
もともと他のKubernetesに慣れたエンジニアの担当だったが、そちらが手一杯で急遽、泉水氏に白羽の矢が立ったそうだ。だが、選ばれた以上は経験の有無にこだわっている場合ではない。早速、泉水氏は腹を決めてプロジェクトに取りかかった。
ここで泉水氏は改めて、簡単にKubernetesのおさらいをする。Kubernetesとは、コンテナ化されたアプリケーションのデプロイやスケーリングを自動化する、オープンソースシステムのコンテナオーケストレーションシステムだ。
一方 GKE は、Google Kubernetes Engine の名称の通り、GCP で提供されているKubernetesのマネージドサービス。これを利用するとKubernetesクラスタを自前で作成する必要がない。泉水氏も、「10分くらい、コンソールの画面からぽつぽつと設定するだけでできてしまう。こんなに簡単にできるのなら、本番環境で活用してもいいなと思いました」と初めて使った時の感想を語る。
開発するシステムは、「コンソールゲーム共通基盤プラットフォーム」と呼ばれ、各ゲームタイトルの共通および固有のKPIを収集/管理するものだ。また、この開発環境として使用する GCP サービスは、GKE に加えイメージのビルドには Cloud Build、データベースには Cloud Spanner、さらに Cloud Datastore も使われている。
「Kubernetesのmanifest管理には、Kustomize を使っています。このツールの利点は、開発環境や本番環境ごとに異なるパラメータを適用したり、必要なリソースを割り当てたりできることです。例えば、開発環境はストレージ10GBでいいけれど、本番環境ではやはり100GB欲しいといった場合も、設定値を環境ごとに変更できます」(泉水氏)
さらに、必要なリソースのmanifestを集約できる(サービスやconfigを1つのファイルにまとめて出力し、それをデプロイできる)といった利点もある。
細かな課題はいくつかあったものの、これらのツールを活用しながら開発は進み、順調に本番環境へのステップを上がっていくことができた。