開発環境の稼働スケジュールをNotionとecspressoで管理してみた
こんにちは、インフラエンジニアの和田です。
今回は 2023年7月に開催された WealthNavi Tech Talk vol.0 の登壇内容をベースに、Notionで開発環境の運用を効率化したお話をします。
背景と課題
当社が提供する資産運用サービス WealthNavi は、2016年にローンチされ、度重なる機能追加を経て今に至ります。
2023年には実行基盤をEC2(Windows)からECS/Fargate(Linux)に移行し、60以上のECSサービスから構成される大きなプロダクトへと成長しました。
開発環境(≒テスト環境)は、開発組織の拡大に伴い 6 断面まで増えています。
開発環境の要件
- 開発内容によって必要なECSサービスが違う
- 開発内容によって専用のDBが必要になる場合がある
- 開発環境を触るのは 5チーム(開発チームx4、QAチーム)
- 稀に夜間や休日に開発環境を使うことがある
開発環境の課題
- 開発環境のAWSコスト増加(開発完了後の停止忘れ)
- 開発環境の管理・利用コスト増加
- 休日夜間に開発環境を利用する場合、インフラ担当に依頼する必要がある
- 専用DBの作成や、データの最新化を行う場合、インフラ担当に依頼する必要がある
- ECSサービス数が多く、サービス間の依存関係の把握が難しい
作ってみたもの
ECSサービスおよびDBの起動停止スケジュールをNotionで管理する仕組みを作ってみました。
利用イメージの詳細は発表スライドのp10-12をご参照ください。
Notionで開発環境を管理する仕組み - 構成図
Notionで開発環境を管理する仕組み - TimelineView
ECSのタスク定義は前回の記事でも触れたモノレポで管理しています。(上図ではecspresso管理リポジトリと記載)
各AWSリソースはTerraformにて希望断面数を指定するだけで複製できるようにしています。
これによりプロビジョニング時間が削減され、開発者は必要なECSサービスをNotion上で指定するだけで環境を利用開始/予約ができます。
UIにNotionを採用した理由
UIにNotionを採用した理由は3つあります。
- ドキュメント・プロジェクト管理ツールとして社内で普及している
- 利用スケジュールをデータベース管理でき、豊富なView(Timeline Viewなど)が提供されている
- APIが使える
扱う要素を「何を、どの期間、どの時間帯起動するか」という3つに絞ったこともNotionを採用できたポイントかもしれません。
やってみた結果
Notionで開発環境を管理した効果
さいごに
私が所属するシステム基盤チームでは、事業の水平・垂直スケールに耐えうるプラットフォームおよびチーム作りを進めています。
それを実現するにはインフラチームのみに権限を集中させた中央集権的な運用から脱却し、開発者に権限を委譲していく必要があります。
ただ全てを開発者に丸投げするのではなく、組織の能力や課題と向き合い、世にあるプラクティスを自社組織向けに咀嚼して取り込むべきだと考えています。
明日は、フロントエンドエンジニア 田渕 の「フロントエンド環境のコードチェックをツールで自動化」です!
お楽しみに!
📣ウェルスナビは事業のスケールを支える基盤作りをする仲間を募集中です📣
筆者プロフィール
和田 雄樹(わだ ゆうき)
2018年1月ウェルスナビにインフラエンジニアとして入社。
コンテナ化推進が一段落つき、最近はセキュリティ強化に勤しんでいる。
Discussion