CI/CD Conference 2023より、Herokuから移行を行った小規模チームのCI/CD改善セッションを紹介
CI/CDに特化したカンファレンスCI/CD Conference 2023から、小規模開発チームがHerokuからPaaSを移行した体験を解説するセッションを紹介する。タイトルは「インフラ専任者・チームがいない組織で開発ワークフローの継続的改善に挑戦してみた」というもので、セッションはchiroru氏、Kosuke Ida氏、trowems氏がそれぞれのパートを解説するというチームワークで実行したセッションとなっている。chiroru氏は問題点の概要と解説、フロントエンド環境の移行について、Kosuke Ida氏はバックエンドをHerokuからRenderへの移行の解説とテストについて、trowems氏は最後の総評をそれぞれ担当している。
●動画:インフラ専任者・チームがいない組織で開発ワークフローの継続的改善に挑戦してみた
この3人が所属する株式会社みんせつは「企業IR部門と機関投資家がつながるプラットフォーム」としてSaaSで投資家向けの情報提供サービスを行っているスタートアップで、「みんせつ」という社名の由来は「みんなの説明会」であるという。2015年に別名で創業した後にさまざまなアプリケーションを開発し、サービスの拡充を行っている。正社員の開発エンジニアは5名という小規模な構成で、インフラストラクチャーの専任が存在せず、当初の開発者も全員退職し、ドキュメントも残っていない機能が多いという。このような人材の回転が速いスタートアップならではの悩みを持っていることが紹介された。
CI/CDの改善という観点から、Googleが提唱するCI/CDの原則の中の指標について解説。これを改善前、改善後に比較することで定量的に改善を行おうという意図が感じられる。
ここではアプリケーションの本番環境へのデプロイの頻度、変更が反映されるために必要な準備時間(リードタイム)、変更によって障害が発生する確率、障害から正常なサービスの状態に戻るために必要な時間、以上の4つを指標として採用するべきと説明した。
ただし、後半の2つの指標、変更障害率とサービス復元時間については、実際に障害が起こった経験がないということで計測されていないという。つまりデプロイ頻度と変更のリードタイムだけが改善前に測定されていたことになる。デプロイは毎日実行、変更のリードタイムも10分程度ということでここだけみれば改善が必要なのか? という疑問も湧くだろう。
きっかけはセキュリティ面の強化、開発ワークフローの改善などであると次のスライドで説明した。
実際の構成図を使って説明し、AWS上のECS on Fargate、Vercel、GitHubなどを使って開発していたが、Vercelによるレビュー環境とFargateのステージング&本番環境に分かれており、環境差分とコストの二重化が発生していたと語った。
これをVercelに全面的に移行し、レビュー、ステージング、本番ともPaaSであるVercelで実行したことで、開発エンジニアの使い勝手が向上したと説明した。
またCIについてはRuby on Rails/React.jsを採用したプロジェクトについて、RubyのLinterであるRoboCopが4年前に導入されたままの状態でメンテナンスされていなかったこと、単体テストの実行で不安定な結果を出すものが50%程度存在し、フレーキーテスト(実行結果が不安定なテスト)となっていたこと、テストカバレッジを採取していなかったことなどを改善すべきポイントとして挙げた。
バックエンド環境についてはHerokuとGitHub Integrationを使っていたが、BuildpackがDockerではないことなどのHerokuに依存する問題点が発生したことやクレデンシャル漏洩問題なども含めて、Herokuから別のプラットフォームへの移行を決めたことなどを解説した。
そこでHerokuの代替としてRenderの検証を行ったという。ここではRenderをKubernetesベースのPaaSと紹介し、Herokuの持つ多くの機能を代替できることを説明した。
参考:https://render.com/
選択をする際のポイントとして、コンテナベースのアプリケーションイメージをそのまま実行に使いたいということが大きかったという。
比較も行っており、Herokuが永らくPaaSとして存在する背景をまとめた内容となったが、新しいPaaSであるRenderのメリットについては、価格が安いこととコンテナイメージを採用していることなどを挙げている。
またCIについてはHerokuには独自のCIサービスが提供されているが、Renderにはそれがないこと、プルリクエストごとにレビューを行う機能もないことなどが挙げられている。
またCDについてはビルドの仕組みが大きく異なっており、Herokuが1回のビルドで複数のサービスや環境に利用できる反面、Renderはプルリクエストのたびに毎回ビルドが実行されてしまうことなどを説明した。
ビルドの実行についてはチャートを用いて説明。ここでもHerokuが効率的なイメージビルドを行っていることを紹介した。
また不安定なテスト結果については、トレンドを可視化することで解決しなければいけない問題点を明らかにし、徐々に改善を行ったと説明。
ここでHerokuからRenderに移行したことでCI/CDの4つの指標がどう変化したのか? を説明。このスライドでは変更のリードタイムが増加していることを説明したが、コスト面や環境による違いがなくなったことなど、デベロッパーにとっては大きな改善点があることがわかる。
まとめとして、CI/CDや開発プロセスの改善はSREチームだけで完結しない、プラットフォーム側のパートナーとも協力する姿勢が重要、「お金を払う顧客だからと言ってもすぐに対応してくれるわけではない」などを挙げて、小規模チームならではの考察を加えて説明を終えた。
最後にtrowems氏が1ヶ月半という短い時間の中でPaaS移行、CI/CDの改善が行えたことを自賛してセッションを終えた。5名のエンジニアチームで2名をSREに割り当ててPaaSの乗り換えからCI/CDの改善までを行ったという、みんせつのセッションだった。以下のエンジニアリングブログには少数のポストしか存在しないが、こういうタイトルでブログ記事を書きたいというメモ的なものがAdvent Calenderの形で残っている。
今回のセッションの解説も含めてブログの投稿が持続することを期待したい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon EUレポート Alibabaが本番環境で使うKubeVelaとDaprのセッションを紹介
- Cloud Foundry Summitはエコシステムの拡がりを感じるカンファレンス
- ビルドからリリースまでを抽象化するツールWaypointをHashiCorpがリリース
- ビルドからリリースまでを抽象化するWaypointにディープダイブ
- 「TestFlight」によるテストアプリ配信の省力化と開発ノウハウ
- Observability Conference 2022、TVerによるNew Relic One導入事例を紹介
- DevOpsに特化したイベント、DevOpsDays Tokyo 2017が開催
- All Things OpenからFermyonTechのMatt Butcher氏のセッションを紹介
- CI/CD Conference 2023、DMMのエンジニアが解説するCIを加速するトランクベースの開発とは
- CNDT2020シリーズ:サーバーレスの現状と実装の苦労をメルカリのSREが語る