and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 モノレポを採用しているマイクロサービスの CI/CDの現状と課題 明里 慶祐 株式会社 アンドパッド 2023/6/23 CI/CD最前線〜今開発現場が直面している課題とは? Lunch LT
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 自己紹介 株式会社アンドパッド / プラットフォーム開発チーム 明里 慶祐 @k-akari @akarin0519 2022年5月入社。 2023年3月まで、社内で最も古くから稼働する施工管理アプリ (Rails)のインフラ・CI/CD改善に従事。 2023年4月よりANDPADの通知プラットフォーム(Go言語、 gRPCサーバ)の開発に従事。 Confidential
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 注意事項 あくまで、 社内の通知プラットフォームに限定した CI/CDの現状と課題の紹介です。 ※ 一般的なあるべき理想の姿に対する提言ではありません。 ※ アンドパッド全体での方針ではありません。 Confidential
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 目次 1. 通知プラットフォームとは 2. 通知プラットフォームのCD 3. 通知プラットフォームのCI Confidential
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 目次 1. 通知プラットフォームとは 2. 通知プラットフォームのCD 3. 通知プラットフォームのCI Confidential
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 ANDPADの通知プラットフォームとは Confidential 通知プラットフォーム チャット 検査 施工管理 受発注 エンドユーザー ANDPAD
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 ANDPADのEKSクラスター Confidential namespace: 通知 開発者 namespace: チャット namespace: 受発注 namespace: 検査 マルチテナント、CIOps
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 通知プラットフォームの採用技術 . ├── docker ├── cmd ├── internal ├── go.mod ├── go.sum ├── kubernetes │ └── helm │ ├── chart1 │ └── chart2 └── terraform ├── envs │ ├── local │ ├── staging │ └── production └── modules Confidential プログラミング言語 Go言語 フレームワーク なし コンテナオーケストレーションツール Kubernetes (=K8s) K8sのデプロイ管理 Helm AWSリソース管理 Terraform CI/CDツール GitHub Actions CircleCI CodeBuild
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 目次 1. 通知プラットフォームとは 2. 通知プラットフォームのCD 3. 通知プラットフォームのCI Confidential
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 通知プラットフォームのデプロイフロー Confidential 手動トリガー - terraform apply - DBマイグレート develop release main ブランチ運用 develop 環境 staging 環境 本番環境 ブランチプッシュトリガー - イメージのビルド - ECRリポジトリへイメージプッシュ - helm upgrade デプロイ環境
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 通知プラットフォームのCDの現状と課題 Confidential できていること 課題 1. ブランチマージにより自動的にイメージが ビルド && プッシュされ、Helmリリースのアップ グレードが実行される。 2. デプロイ直前にアプリケーションのテストと静的 解析、および、HelmチャートとK8sマニフェストの 静的解析が実行されている。 3. アプリケーションのデプロイの所要時間は 12分程度と遅くはない。 1. 共通のデプロイ基盤がなく、サービス毎に Helm チャートのデプロイ方法を構築している。 2. AWSリソースとHelmチャートとアプリケーション のデプロイが密結合している。 3. DBマイグレートとterraform applyが手動トリガー になっている。
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 目次 1. 通知プラットフォームとは 2. 通知プラットフォームのCD 3. 通知プラットフォームのCI Confidential
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 アプリケーションのCI Confidential 目的 ツール / コマンド 実行場所 実行タイミング 課題 テスト go test CircleCI PR / デプロイ - テストカバレッジ Codecov CircleCI PR / デプロイ - 静的解析 golangci-lint CircleCI PR / デプロイ - 依存ライブラリの バージョン管理 Dependabot GitHub 定期実行 - Dependabotが作成した バージョンアップPRの自 動マージ (※条件あり) gh pr merge GitHub Actions PR - コンテナイメージの セキュリティチェック trivyとdockle CircleCI PR / 定期実行 -
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 HelmチャートとKubernetesマニフェストのCI Confidential 目的 ツール / コマンド 実行場所 実行タイミング 課題 Helmチャートの 静的解析 helm lint CircleCI PR※ / デプロイ※ - helm upgradeの シミュレーション helm upgrade \ –dry-run CircleCI PR※ / デプロイ※ - K8sマニフェストの スキーマチェック kubeconform CircleCI PR※ / デプロイ※ - K8sマニフェストの セキュリティチェック - - - 導入したい。 (※チャートに更新がある場合)
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 TerraformのCI Confidential 目的 ツール / コマンド 実行場所 実行タイミング 課題 静的解析 tflint GitHub Actions PR※ - フォーマットチェッ ク terraform fmt \ -check GitHub Actions PR※ - セキュリティ trivy CircleCI PR※ / 定期実行 Ignoreしている警 告を修正したい。 実行計画 terraform plan CodeBuild PR※ セキュリティチー ムと要相談 (※terraformに更新がある場合)
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 まとめ Confidential 「これやってなかったけど導入してみよう」 「こうするとこんな辛みがあるようなのでやめておこう」 といった何か気づきがあれば幸いです! 時間の都合で説明を端折っている部分が多々あるので、 ご質問どしどしいただけると大変嬉しいです!