バッチ実行環境を EC2+cron から StepFunctions + ECSonFargate + EventBridge に移行しました
新しく発足したシステム戦略推進チームの delikuです!
これまでPRONIアイミツシステムの定時バッチは、EC2 + cron で稼働していましたが、この度 cron + EC2 環境を脱却し、新しくマネージド環境に移行するようにしました。
システム戦略推進チームの役割
各チームの開発プロセスにおける課題解決のサポートを行う
開発プロセスや技術における課題解決のサポートを行うことで各チームの向き合う領域へ集中できる環境を作る手助けをする
具体ではインフラ構成・リリース手順・自動テスト・バージョンアップ...など
あるべきシステム境界を模索していく(寄せていく)
ただ、手当たり次第に統合/分割はせず、時間軸やユースケースを見極める必要がある。そのため、各事業のロードマップ/プロダクトロードマップと連動したうえで、システムとしてより良い形にしていくためのシステムアーキテクチャの整理を進める
今回実施した PRONIアイミツシステムの定時バッチの仕組み改善は、 1 の役割に該当します。
既存構成
バッチサーバが単一障害点になっている
EC2インスタンスが稼働していることで、EC2インスタンス自体のメンテナンスが必要になる
新規構成
StepFunctions + ECS on Fargate + EventBridge Rule + EventBridge Scheduler で構成しています
得られたメリット
バッチ毎にスペック変更ができる
バッチ毎にCloudWatchLogGroupを分けたことでログ確認が簡単にできる
migration実行をCodeBuildにてイメージのPUSH、ECS RUN TASKによるワンショットに変更することで、これまでバッチデプロイとmigrationの実行がセットだったことから責務を分離した
バッチ再実行が容易になった(StepFunctionsから再実行が簡単にできるようになりました)
コスト削減
既存環境だと大きめのインスタンスタイプを割り振っていましたが、バッチ毎に必要なスペックを定義できるようになりました
まとめ
前述のメリットに書きましたが、今回の構成にしたことで様々な恩恵が得られるようになりました。また今回構築した環境は terraform で作成しています。他プロダクトでは、terraformをすでに導入しているものもあるのですが、PRONIアイミツシステムとしては初めての導入となるのでその知見をチームで得られたことも大きいです。
【PR】PRONI に興味がある方へ
よく読まれている記事
CTOからのメッセージ
カジュアル面談申し込みフォーム
エンジニア向け採用資料
【登録案内】PRONIに関する情報配信しています!
PRONIに関する最新情報、イベント情報、採用情報などを配信しています。
ご希望の方は以下のフォームよりご登録をお待ちしております!