Kubernetes+Amazon EKSで自社サーバからAWSへ サイボウズの狙いは「人がやることを減らす」

Kubernetesの活用事例を、現場から学びます。サイボウズ「kintone.com」では、自社インフラからAWSへの移行とともに、Kubernetesを用いたコンテナ化を進めていますが、オーケストレーション管理ツールに選んだのは、Amazon EKSです。決して容易ではない自社サーバからクラウドへの移行を決めたの理由は「技術的な課題」よりも「人間をスケールすること」にありました。

Kubernetes+Amazon EKSで自社サーバからAWSへ サイボウズの狙いは「人がやることを減らす」

チームワークや業務効率の向上をソフトウェアでサポートしているサイボウズ。現在、US版の「kintone.com」で自社インフラからAWSへの移行とともに、「Kubernetes」を用いたコンテナ化を進めています。オーケストレーション管理ツールに選んだのは、2018年6月に正式版がリリースされたばかりの「Amazon EKS」でした。

自社サーバからクラウドへの移行は決して簡単なものではありません。それでもkintone.comが移行を決めた理由は、サーバがスケールしなくなったというような技術的な課題ではなく、サイボウズの開発思想を根底から変え「人間」をスケールすることにありました。

今回はkintone.comのAWS移行を進める「Yakumoプロジェクト」の担当者に、KubernetesとAmazon EKSを使った開発の長所と短所、それらを駆使しチーム一丸となって目指すDevOpsQA体制についてなど、詳しく伺いました。

1

野島裕輔(のじま・ゆうすけ/2nojima)(写真右)
サイボウズ株式会社に入社後、kintoneやGaroonの自社インフラを5年ほど担当。その後、kintoneのインフラをAWSに変える「Yakumoプロジェクト」の中心メンバーとして、同プロジェクトの開発を担当している。
深谷敏邦(ふかや・としくに/3toshipp)(写真左)
2012年にサイボウズ株式会社に入社。6年ほどインフラチームで開発を続けている。Apache、MySQL、Nginxなどを利用したクラウド基盤の構築や、VMの管理ツールの開発などを手がけ、Yakumoプロジェクトにも参加している。

「サーバよりも人のスケール」が自社サーバからクラウド移行に踏み切った理由

――kintone.comでAWSに移行している真っ最中とのことですが、移行することになった経緯を教えてください。

野島:まず、サイボウズでは現在「Yakumoプロジェクト」と題し、kintone.comのインフラをAWSに構築する移行作業を行っています。2019年中にはAWS上で動くkintone.comをリリース予定で、移行に際しオペレーションの自動化や、DevOpsQAの実現、リリースサイクルの向上を目指しています。その中でサービスをDockerでコンテナ化し、オーケストレーションツールにはKubernetes(K8s)を採用しています。

Yakumoプロジェクトが本格始動したのは2018年1月からですが、以前より「オペレーションをもっと簡単にしよう」という声があがっており、勉強会などが開かれていました。その中で私と深谷が中心になり、オーケストレーションツールの議論もしていました。

―― 現状の構成はどういったものなのでしょう?

深谷:古典的なシステム、と言えば分かりやすいかもしれません(笑)。物理サーバがあり、その上にVMを立ててアプリを入れ、ロードバランサーとデータベースがあって……という形です。

自社で持っている物理サーバが強力なので、VMのインスタンス自体もかなり大きいものを割り当てることができます。機材の調子が悪くなければ落ちることもないので、アベイラビリティも高い数値になっていると思います。IPアドレスを固定できるため、VMを作り直したとしてもIPアドレスが変化することがありません。

―― そうなるとクラウドに移す必要がないように感じるのですが、それでも移行する理由はなんでしょう。

野島:サーバのスケールよりも、人がスケールしないという問題が大きいと感じたためです。これまでのアーキテクチャだと、運用するために必要な知識が膨大になっていて……。「ここからここまで知っていいればオペレーションできる」という境目がなく、オペレーションする人間は全てを把握していないといけないという課題がありました。

4

例えば物理サーバが故障したり異変が起きたりしたときも、アプリを含めたシステム全体の知識がないと調査ができない状態で。それらの「知識」を全ての人間がシステマチックに把握できるようになっていればいいんですが、処理しきれていない部分がありました。

深谷:そういう課題もあり、移行によりシステムが管理する部分を増やしたいというのが狙いです。人間ができることは限られているので極力減らして、システムが自動で処理してくれるようにしようと考えています。

野島:規模が大きくなればなるほど例外的なケースは増えていきますから、「人間がやること」が際限なく増えていくと人の頭では管理できなくなってくるはずです。社内でも管理するための知識量がそろそろキャパシティを超えるんじゃないかという話になり、移行は必要という結論に至りました。

「DevとOpsの対立」をなくすため、移行プロジェクトが立ち上がった

―― 自動化によりコストを減らすことが目的、ということですね。

野島:はい。しかしそれだけでなく、冒頭でも少し触れた通り今回の移行ではDevOpsQA体制を目指しています。現状はDev(開発)とOps(運用)が分断されているため、挑戦的な新機能が投入できなかったり、逆に障害を引き起こす不具合が何カ月も放置されたりしていました。移行に伴う体制変更で開発、QA、運用チーム全員でサービスに責任を持ち、このような対立をなくしたいという狙いもあります

―― なるほど。DevとOpsが分断されていると、なぜ「境界」や「対立」が発生するのでしょう。

野島:一言でまとめるとDevとOpsでそれぞれのミッションが違うから、です。Opsはインフラの安定運用がミッションなので、リリースしたものがブラッシュアップされなくても動き続けることが重要。逆にDevは新しいものを届けることがミッションとなります。

Devが新機能をリリースしていくということは、逆をいえば障害が起きやすくなることでもあります。そうなるとOps側は、リリースをできるだけブロックしたり遅延させたりする方向に動いてしまいます。ミッションの「対立」から生まれる問題ですね。

―― Yakumoプロジェクトでは、それらの課題が解決されると。

野島:今回のプロジェクトでは、『SRE サイトリライアビリティエンジニアリング』(オライリージャパン)という本に書かれているGoogleの思想を参考にしています。そこには「まずはミッションの対立をなくす」ということが書かれています。

どういうことかというと、まずはOpsの「安定運用」というミッションをなくし、開発チームと運用チームで「ユーザに価値を届ける」という同じミッションを持ちます。そして「アベイラビリティを99.9%にする」などの「制約」を両チームに設定すれば、「リリースを行う」という状況下において、DevとOpsの立場が平等になります。「ミッションの共通化」と「制約」を設けることで、両チームにそれらを達成・守るための動きを促すんです。

ミッションの対立は現場が疲弊していくだけなので、私たちも今回の移行でチームの思想やミッションを変えていこうと考えました。

深谷:前々からインフラチームの工数が足りずリリースをブロックしてしまうなど、インフラが伴う大きな変更がしづらいという問題を抱えていたという背景もあり、Yakumoプロジェクトの担当チームを発足させて意識を変えていこう、となったんです。

5

―― なるほど。今回のプロジェクトは単なるクラウドの移行ではなく、チームの思想や運営の改革意識が根幹にあるのですね。現在はリリースを目指し移行を進めている最中かと思いますが、すでに問題が解決されている実感はありますか?

野島:まだなんとも言えない状況ではありますが、Kubernetesの導入による効果は大きいと思っています。

アプリケーションチームとインフラチームがそれぞれ存在するという体制はこれまでと変わりません。しかしKubernetesの導入で、インフラチームの担当領域は「コンテナを動かすまで」となり、アプリチームの開発の範囲が広がりました。Kubernetesが両チームの良い橋渡しになっています。例えば「アプリケーションサーバが5台ほしい」という要望があったとき、今まではインフラチームが物理サーバを選んで、メモリを調べて、VMを立てて、マッピングを書いて、コマンドを作って、その上でデプロイする……という作業が必要でした。しかしKubernetesを導入することで、そういった作業が自動化でき、アプリチームだけでもサーバの増設ができるようになります。

ミッションの「対立」は組織の設計変更で、 DevとOpsの責任の「境界」の位置をKubernetesで解決するのが、今回の「Yakumoプロジェクト」の目標です。

なぜKubernetes + Amazon EKSを選んだのか

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く