株式会社GIBJapan / インフラエンジニア
CIパイプラインの導入(IaCテンプレートの品質管理)
# プロジェクト詳細 ## 課題 - インフラ設計構築チームでは、CloudFormationでのテンプレート管理を行っていた。 - テンプレート数や、チームの人数が増えてきたため、従来のPMによるプルリクのレビューだけでは品質維持が難しくなってきている背景があった。 - そこで、今後のチーム規模拡大に向けテンプレートの品質を維持すべくCIパイプラインによる自動テストを導入することとなった。 ## CIパイプラインの内容 - GitHubリポジトリ(汎用テンプレート管理用)devブランチへの、プルリクエストのマージをトリガーに、自動テスト - テスト内容 - 静的解析(cfn-lint) - CFnルートスタックの検証環境へのデプロイ確認 - Teamsチャネルへのテスト結果通知 # 担当 - CIパイプラインの検証・構築・実運用への導入 # 使用技術 - AWS(CloudFormation, CodePipeline, CodeBuild, CodeStar, Lambda, S3, IAM, SNS) - Github Enterprise Server, cfn-lint - VSCode, AWS Cloud9 # 担当業務 - GitHubフローによるブランチ運用方法の調査 - AWS Codeシリーズ利用事例の調査 - AWSアーキテクチャ設計 - AWS利用料の見積り(ビルドにかかる料金等) - CIシステムの構築(CloudFormation) - 実運用への導入 - 運用方法についてチームメンバーとの議論 # 工夫した点 -運用でなるべく手間がかからないよう意識し、下記の機能を持ったLambda関数を作成した。 - Teamsへのテスト結果通知時に、失敗時のみメンション(成功時はメンションしない)するようにし、被通知者の確認工数を減らす。 - ルートスタックの作成後、作成したS3バケット中のオブジェクトを全削除した上でルートスタック削除する構成とし、スタック削除エラーを回避。 - 既存のブランチ運用のままでは、CIシステムのアーキテクチャが複雑となり、システム全体の理解や修正が煩雑になる恐れがあったため、一般的なGit運用方法を調査しGitHubフローに則った運用を提案した。結果自分の提案が採用され、CIシステムもシンプルなものとなり後々負債となる可能性を回避できた。 # アピールポイント - DevOps系のスキル AWS上でのCIパイプラインの構築スキル、Gitリポジトリの運用方法(フロー)の理解や、チームメンバーとの議論による最適なCI構成の検討など、従来のクラウドインフラ設計構築だけでは経験できないことができ、DevOpsの理解が深まった。