サイボウズが3年計画で進めているインフラ移行プロジェクト「Neco」について、3名の担当エンジニアにインタビューした記事を「エンジニアHub」に掲載いただきました。約1000台のサーバ実機と800テラバイトのデータをKubernetesベースで構築された新たなインフラに移行するという3年計画の大規模プロジェクトです。
なぜKubernetesを選んだのか、なぜAWSなどのパブリッククラウドではなく自前でインフラ構築する道を選んだのか、インフラ刷新にあたってどんな苦労があるのか、etc…については記事をお読みいただくとして、取材しながら心を動かされたのが、彼らが抱く”運用の自動化”への思いでした。お三方ともとても物腰の柔らかい、おだやかな語り口のエンジニアでしたが、こと”NoOps”や”継続的デリバリ”の話題となると、「なんとしても今回のインフラ刷新で実現する!」という強い意思をにじませていたのが印象的でした。
昨年、米サンフランシスコで行われた「Red Hat Summit 2018」に参加した際、インタビューしたあるRed Hat幹部は、「レガシーが多すぎて、デジタルトランスフォーメーションにどこから取り組んでいいかわからない日本企業が多いが、彼らが真っ先に取り組むべきことはなんだと思う?」という筆者の質問に対し、迷うことなく「自動化だね」と回答していました。そう、まさに今回取材したNecoプロジェクトが進めているように、インフラ運用において人間が関わる部分を極力ゼロに近づける、その努力を続けることこそがデジタルトランスフォーメーションの第一歩というわけです。
人間が関わっている部分が多すぎると、インフラ運用の効率化は難しくなります。非効率なインフラのもとでは、アプリケーションの迅速なデプロイやデリバリは望めず、それはそのままビジネスにおける機会損失に直結します。デジタルトランスフォーメーションの本質は、テクノロジの力でいままでできなかったことをできるようにすることなのですが、肝心のベースとなるインフラが旧態依然のモノリシックなシステムのままでは、デジタルトランスフォーメーションどころの話ではなく、ビジネスの存続すら危ぶまれるようになる、そうならない前にインフラ運用の自動化に取り組むべき、という話はとても腑に落ちました。
では、デジタルトランスフォーメーションを支える自動化というプロセスは、どのように実現されるべきなのでしょうか。記事中、サイボウズの池添明宏氏はKubernetesをインフラ基盤に選んだ理由についてこうコメントしています。
まず挙げられるのが、KubernetesはGoogleが開発したオーケストレーションツールであり、すでにGoogle内での大規模本番運用の実績があった点が大きいです。Googleが開発し、実際に本番環境で使っているというだけでも大きな信頼に値すると思います。
もうひとつの理由は、Kubernetesの設計思想に対して非常に共感できる部分が多いことが挙げられます。Kubernetesは「現在の状態と望む状態(あるべき状態)の間にある差分を意識してアップデートを重ねていく」という思想が息づいています。我々もこの思想を、例えば、CKEの開発などにも適用しており、Neco自体もこの考えに大きくインスパイアされています。
“あるべき状態”を宣言し、それに向けて自律的にアップデートを重ねていく- この”現状と理想の差分”を感知して埋めていくという考え方は、自動化の実現に向けて非常に重要な概念だといえます。20年間もモノリシックなかたちで運用してきたサービスを、KubernetesベースのモダンなNoOpsインフラに移し替えることは想像以上にチャレンジングなプロジェクトですが、この宣言型のアプローチがプロジェクト完了予定の2020年までにどう結実するのか、いまから非常に楽しみです。
0