はじめに
初めての投稿になるので軽く自己紹介。
これまでアプリ開発(Java/PHP/Ruby)などの開発者からPLやPMなどを経験してきました。
今は社内システムのPLや受託案件のPMなどに従事してて、あとは案件の提案活動などをメインにやらしてもらっています。
社内システムについて
弊社ではプロジェクト管理や勤怠管理などのシステムをフルスクラッチで開発・運用しており、私は主に運用保守や機能拡張の案件のリーダーに携わっています。
このシステムはAWSを利用していて、上記の業務の傍らAWSのサービスを触る機会が多く、
2年ほど前に試行錯誤しながらAWSのCode3兄弟と呼ばれるCodeCommit/CodeBuild/CodeDeployを使って
デプロイまでのプロセス自動化などAWSの構成を大きく変更してきたので紹介します。
社内システムの構成
弊社の社内システムはこちらの構成になっています(2018年頃の構成図)
本番環境、STG環境、開発環境が3、4個あります。
※構成図では複数の開発環境は省略しています
当時の問題点
- 本番環境及び開発環境へのDeployはCodeDeploy単体で実施
- ソースはGithub上で環境はAWS上にあり管理が面倒
- その他も色々あったけど忘れましたw
当時色々調べた結果
- デプロイを開発者がプッシュしたら開発環境に自動反映させたい
- 当時はGit利用していたのでCodeCommitに移管する
- CodePipelineを導入して自動反映させる
テスト自動化もしたいけど、まずはCodePipelineでCodeCommitとCodeDeployを繋げて自動化しよう!って方針に決まりました。
デプロイ自動化に併せてAWS構成を色々見直してみました。
2021年時点の社内システムのAWS構成がこちら
- 開発者がブランチにプッシュするだけでデプロイまで自動で走って幸せ
- なんと言っても僕の運用への負担が大幅に減った
- これによって社内システム運用を強化するための時間が取れた
- Lambdaを使ってのデプロイ通知、プッシュ通知をチャット連携できた(開発者がチャット上で確認できる)
- 開発者用のチャットグループへデプロイ通知を行った
- これまでデプロイ担当者が「デプロイ完了しました」の通知を毎回行っていたのでその手間が省けた
- CloudWatch経由でのメール通知
- AWS WAFの導入
- 構成図からは省いていますがサブシステム構築があったためIDaaSサービスのAuth0を導入しました
積み残しの課題
- テスト自動化
- CodeBuildを挟んでJenkinsなどと連携してテスト自動化したいが、テストコード作成に手が回らない
- AWSからの通知内容
- JSONの生データをチャットで出力しているだけなんで、すぐに内容が読み取りづらい
- 本番環境も開発環境も全て同じAWSアカウント上に同居してる
- 運用ミスで本番環境へデプロイやシステム追加によるネットワーク周りの調査などが本番環境もいるんでやるの怖い・・
- その他色々・・・
もっとこういう構成あるよ!とかあればコメントください。
次回は今回追加したCodePipelineの細かい話やAuth0などの記事を書こうかと思います。