CodeZine(コードジン)

特集ページ一覧

Kubernetes未経験者が GKE の本番リリース――初めてづくしの体験と障害を克服【デブサミ2020】

【13-B-3】Kubernetes未経験者が GKE の本番リリース〜障害対応を経験して苦悩した話

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/04/20 12:00

 「攻めのインフラ」をスローガンに掲げ、「世界規模のゲームパブリッシャー」や「世界規模のファッションメディア」を始め、3億以上のエンドユーザーを、インフラを通じて支えている株式会社grasys。同社のOps(運用)チームの一員として活躍する泉水朝匡氏は、エンタープライズ系やアドテク系開発の経験は豊富だが、これまでKubernetesは未経験だったという。その泉水氏がある日突然、Google Cloud Platform( GCP )のマネージドサービスである Google Kubernetes Engine( GKE )環境を利用した案件開発の指名を受けた。すべてが初めての体験の中で、試行錯誤や苦悩を繰り返しながら環境構築、本番リリース、そして障害対応まで乗り越えていった経験を、泉水氏自らが客観的評価を交えながら振り返った。

目次
株式会社grasys Cloud Infrastructure Division Ops Team SRE 泉水朝匡氏
株式会社grasys Cloud Infrastructure Division Ops Team SRE 泉水朝匡氏

突然の指名を受け、初の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つのファイルにまとめて出力し、それをデプロイできる)といった利点もある。

 細かな課題はいくつかあったものの、これらのツールを活用しながら開発は進み、順調に本番環境へのステップを上がっていくことができた。

本番環境の基本的なシステム構成
本番環境の基本的なシステム構成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

バックナンバー

連載:【デブサミ2020】セッションレポート

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5