Kubernetesの現場への導入とエンジニア育成

長谷川誠氏
(サイバーエージェント)
長谷川誠氏は、「Google Kubernetes Engine とオンプレミス Kubernetes 基盤に関する取り組み」と題して、自身が勤務するサイバーエージェントにおけるKubernetesの導入、およびKubernetesのエンジニア育成について紹介した。
サイバーエージェントにおけるKubernetes導入はパブリッククラウド(Google Kubernetes Engine:GKE)とオンプレミスの両方で実施された。GKEはサービス開始された頃からアーリ・アダプターとして使っている。同社の開発環境は、開発者がある程度自由に選べる。パブリッククラウドが適していると判断すればそれを選ぶし、連携するシステムにオンプレミスが多いから新しいシステムはオンプレミスで作るなど、それぞれの検討に任されている。そのような環境の中で一番の事例は GKEを使っているAbema TVである。
長谷川氏はGKEの採用の理由として「マネージドサービスなのでクラウドベンダーが運用の面倒を見てくれる領域が広いので運用のコストを下げつつ、開発に集中できる環境を手にすることができることと、ほかのマネージドサービス、例えばデータベース、ロギング、モニタリングなどとの連携が容易であること、Kubernetesの操作を行う環境を自分のPCにセットアップする必要がない手軽さ」などを挙げた。
パブリッククラウドでGKEを使っている一方、社内にはオンプレミスも多数ある。このオンプレミスのリソースを有効活用する方法として、チャレンジしたのがオンプレミスの環境でGKEのようなサービスを作ることだった。
オンプレミスではOpenStackのプライベートクラウドにKubernetesのクラスタを展開する仕組みを構築。構築当時の部署の名前をとり、「Adtech Container Engine(AKE)」と命名し、ロゴも作っている。
社内の利用と言えど、実態のよくわかないAKEのサービスを使うには抵抗感はあるので、「GKEとAKEの比較をしてメリットを丁寧に説明したり、AKEのハンズオンをきちんと行ったり、GKEの機能と同等の機能をタイムリーに実装している」と長谷川氏はAKEの社内普及に向けての取り組みを紹介した。現在ではGKEとAKEを併用し開発者が選んでいる。
しかしながら、先進的な取り組みを行っている同社においても、まだKubernetesやクラウドネイティブに詳しいエンジニアは多くなく、どうやって育成するかが課題であると言う。「そもそもクラウドネイティブってどう言う考え方なの?」「Kubernetesってなんだ?」「どうやって運用するの?」「どうやって開発するの?」「セキュリティは大丈夫か?」といった疑問に答えてくれる人やチームを増やしていく必要がある。そこでサイバーエージェントでは積極的な海外カンファレンスへの参加、Developer Experts制度、全社横断ゼミ制度などを通じてエンジニア育成に力を入れているということだ。「会社としてサポートする制度が重要です」と長谷川氏は強調する。
最後に長谷川氏は、「今日のMeetupに参加するだけで終わりにせず、ぜひ次のアクションにつなげてほしい。例えば、今日の話を社内の人に話す、Kubernetesに関して調べてみる、自社のシステムを振り返ってみるなど、どんなことでもいいからアクションを起こすことが、今日のテーマである『明るい未来を切り開く』ことにつながるはずだ」とセッションを締めくくった。
アプリ基盤をAmazon EKSに移行

清水勲氏
(ミクシィ)
ミクシィに勤務する清水勲氏は、「『家族アルバム みてね』におけるAmazon EKSへの移行の取り組み」をテーマに、移行した経緯を紹介した。
「家族アルバム みてね」は、子供の写真や動画を無料・無制限で共有できるアプリ。多言語対応しており国内外で600万人以上の利用者がいる。このシステムはRuby on Railsアプリケーションで、ストレージはS3、データベースはAurora、オーケストレーションはOpsWorksなどAWSのサービスを組み合わせたものだ。

図:Kubernetesを使ったシステム構成
システム運用上の主な課題はAWS OpsWorksの仕様に依存したことだった。AWS OpsWorks はAWSの独自仕様に合わせた運用をしなければならないが仕様の把握が難しい、マネジメントコンソールが属人化しやすく作業漏れが起きやすい、スポットインスタンス(一時的に使えるインスタンス)を使いたいがハードルが高いなどがあった。
そこで2018年6月にリリースされたAmazon EKSに移行した。その結果、AWS OpsWorksと違いAmazon EKSは、Kubernetesに準拠しているので、そのソースコードやドキュメントを読んで理解でき、Meetupやカンファレンスが多数あり事例やノウハウが得やすくなった。
「属人化しやすかった作業も、Infrastructure as Code、CIOps、GitOpsを基本とし様々なKubernetesのエコシステムや便利なツールが活用できるようになり属人化が最小限に抑えられるようになった」(清水氏)
スポットインスタンスは、AWSの都合により定期的に停止されたりする。コンテナは本来ディスポーザブル(廃棄可能)であるものなので、インスタンスが停止されて使えなくなるスポットインスタンスで稼働させる設計もしやすい。オーケストレーションとしてKubernetesに移行したことでAWS OpsWorksではハードルが高かったスポットインスタンスが積極的に使いやすくなり、大幅なコスト削減にもつながる。
ただし、「学習することが多い。Kubernetesの進化に追従しなくてはならないことが、(個人的な)つらみ。本当の正解はないと思うが、ツールや手法の選定の壁にぶつかることも多い。Kubernetesは学習することもまだまだそれなりに多い」と清水氏は話す。
また導入前の考慮点として、「本当にKubernetesでしか解決できないのか、本質的な課題を再度見つめてみること。組織の文化や企業のワークフローと合っているかを確認すること。自チームで運用できるか、高頻度なデプロイやソフトウェアのアップデートができるか、さらには目指すべきSLAは100%ではないという割り切りができるかが重要。未来永劫使える便利ツールはない。だからこそ、変化に対応しやすい組織作りやコードを書くことが大事」と述べた。
青山氏のスピーチにもあったように、すでにクラウドネイティブを実践している者と、これから活用していこうという者が、本音でディスカッションできる交流の場は、今後ますます重要になっていくだろう。今後のCNBFの活動に注目したい。