こんにちは!コドモン SRE の渡辺です。
先日私たちのチームでは、開発環境にマネージド型の Kubernetes サービスの AWS EKS を導入しました。
本記事では、開発環境に Kubernetes を導入した経緯や今後の展望について紹介します。
Kubernetes は運用して初めて知見となる
現在、コドモンのアプリケーションのコンテナ基盤は AWS ECS を採用しており、Kubernetes は採用していません。
今はインターネットで手軽に情報が手に入るため、Kubernetes のメリットやデメリットは調べればすぐにわかりますが、実際に運用してみないとわからないことも多々あります。
例えば、ECS と EKS の比較の際、よく議題に挙げられる EKS のデメリットとして定期的なバージョンアップ作業のメンテナンスコストが高いというものがあります。
確かに ECS と比較すると、EKS においてはバージョンアップ作業を避けることはできません。
しかし、「バージョンアップ作業とは実際に何を行うのか?」という部分を理解しないまま、「EKS は運用コストが高いから採用しない」という判断はもったいないと私は考えます。
私自身、EKS のバージョンアップ作業を何度か経験していますが、ドキュメント整備や非推奨 API の事前検知など一部作業を自動化することで、バージョンアップ作業のメンテナンスコストを下げることができました。
Kubernetes に触れる前は「バージョンアップって大変なのだろうな」と想像していましたが、今では「バージョンアップ作業は思ったほど大変ではない」と考えています。
もちろん、要件によってはバージョンアップ作業の内容が変わることもあると思いますが、それは組織によって異なる部分でもあるため、「百聞は一見にしかず」という言葉のとおり実際にチームで運用してみないと見えてこないと思います。
また、Kubernetes のメリットとして、拡張性が高くエコシステムの開発も盛んであり、アプリケーションの開発や運用における技術的な課題を解決するツールが多く存在することが挙げられます。
エコシステム自体は便利なツールなのですが、エコシステムを採用するにつれ、当然ながらバージョンアップ作業などのメンテナンスコストが増えていきます。
このような理由から、コンテナ基盤の技術選定をする上で SRE チームとして意思決定を行うことを目的とし、開発環境のアプリケーション以外のコンテナ基盤として EKS を導入しました。
今後の展望
SRE チーム内で Kubernetes の知識を広める
EKS 環境の構築により、SRE チームに Kubernetes の構成要素や Pod のライフサイクルなど基礎知識を共有することができました。
SRE としては、アプリケーションの開発からデプロイ、ロールバックなど運用面の知見を得ることが大切なので、Argo CD などエコシステムで GitOps を実現するなど、より深い部分の経験を積んでいく必要があります。
このため、SRE チームを対象に定期的なハンズオンを実施し、チーム内で Kubernetes の知識を広めていきます。
なお、Kubernetes の知識を学ぶことに対して SRE のメンバーは前向きであり、とても助かっています。
SRE チーム内で Kubernetes リソースを実際に構築してみる
SRE チームが Kubernetes の基礎知識を習得した後は、実際に EKS 環境を活用して課題を解決していきたいと考えています。
まずは、以下を SRE チームで取り組んでいきたいです。
- アプリケーション開発環境の自動構築
- GitHub Actions Self-hosted Runner の構築
- 自動負荷試験
その他にも開発チームから課題を受けることもあるので、その都度 EKS 環境で対応できないか検討していきたいと思います。
まとめ
今回は、コドモンの開発環境に Kubernetes を導入した背景と、今後の展望について紹介しました。
Kubernetes の導入は入口であり、これから SRE チームで運用経験を積むことが最初の目標になります。
そして、コドモンのコンテナ基盤の技術選定を行う際に、SRE チーム全体で Kubernetes の導入を検討できるチームになっていきたいです。
終わりに
コドモンでは、今後も新しいサービスの開発や既存サービスのリプレイスなどを予定しています。
さらにスピード感を持った開発が求められますが、このような課題に対して楽しんで取り組み、サービスを一緒に盛り上げていける方を募集しています。
一緒に働くことに興味を持っていただけた方がいましたら、ぜひ求人情報もご覧ください!