Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モノレポを採用しているマイクロサービスのCI/CDの現状と課題

Akari
June 23, 2023

 モノレポを採用しているマイクロサービスのCI/CDの現状と課題

Findyさん主催のLunch LT「CI/CD最前線〜今開発現場が直面している課題とは? 」で発表した資料です。

Akari

June 23, 2023
Tweet

More Decks by Akari

Other Decks in Programming

Transcript

  1. Copyright © 2020 Present ANDPAD Inc. This information is 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の現状と課題 明里 慶祐 株式会社 アンドパッド 2023/6/23 CI/CD最前線〜今開発現場が直面している課題とは? Lunch LT
  2. Copyright © 2020 Present ANDPAD Inc. This information is 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 無断転載・無断複製の禁止 自己紹介 株式会社アンドパッド / プラットフォーム開発チーム 明里 慶祐 @k-akari @akarin0519 2022年5月入社。 2023年3月まで、社内で最も古くから稼働する施工管理アプリ (Rails)のインフラ・CI/CD改善に従事。 2023年4月よりANDPADの通知プラットフォーム(Go言語、 gRPCサーバ)の開発に従事。 Confidential
  3. Copyright © 2020 Present ANDPAD Inc. This information is 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
  4. Copyright © 2020 Present ANDPAD Inc. This information is 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
  5. Copyright © 2020 Present ANDPAD Inc. This information is 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
  6. Copyright © 2020 Present ANDPAD Inc. This information is 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
  7. Copyright © 2020 Present ANDPAD Inc. This information is 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のEKSクラスター Confidential namespace: 通知 開発者 namespace: チャット namespace: 受発注 namespace: 検査 マルチテナント、CIOps
  8. Copyright © 2020 Present ANDPAD Inc. This information is 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 無断転載・無断複製の禁止 通知プラットフォームの採用技術 . ├── 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
  9. Copyright © 2020 Present ANDPAD Inc. This information is 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
  10. Copyright © 2020 Present ANDPAD Inc. This information is 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 デプロイ環境
  11. Copyright © 2020 Present ANDPAD Inc. This information is 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 無断転載・無断複製の禁止 通知プラットフォームのCDの現状と課題 Confidential できていること 課題 1. ブランチマージにより自動的にイメージが ビルド && プッシュされ、Helmリリースのアップ グレードが実行される。 2. デプロイ直前にアプリケーションのテストと静的 解析、および、HelmチャートとK8sマニフェストの 静的解析が実行されている。 3. アプリケーションのデプロイの所要時間は 12分程度と遅くはない。 1. 共通のデプロイ基盤がなく、サービス毎に Helm チャートのデプロイ方法を構築している。 2. AWSリソースとHelmチャートとアプリケーション のデプロイが密結合している。 3. DBマイグレートとterraform applyが手動トリガー になっている。
  12. Copyright © 2020 Present ANDPAD Inc. This information is 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
  13. Copyright © 2020 Present ANDPAD Inc. This information is 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 / 定期実行 -
  14. Copyright © 2020 Present ANDPAD Inc. This information is 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 無断転載・無断複製の禁止 HelmチャートとKubernetesマニフェストのCI Confidential 目的 ツール / コマンド 実行場所 実行タイミング 課題 Helmチャートの 静的解析 helm lint CircleCI PR※ / デプロイ※ - helm upgradeの シミュレーション helm upgrade \ –dry-run CircleCI PR※ / デプロイ※ - K8sマニフェストの スキーマチェック kubeconform CircleCI PR※ / デプロイ※ - K8sマニフェストの セキュリティチェック - - - 導入したい。 (※チャートに更新がある場合)
  15. Copyright © 2020 Present ANDPAD Inc. This information is 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 無断転載・無断複製の禁止 TerraformのCI Confidential 目的 ツール / コマンド 実行場所 実行タイミング 課題 静的解析 tflint GitHub Actions PR※ - フォーマットチェッ ク terraform fmt \ -check GitHub Actions PR※ - セキュリティ trivy CircleCI PR※ / 定期実行 Ignoreしている警 告を修正したい。 実行計画 terraform plan CodeBuild PR※ セキュリティチー ムと要相談 (※terraformに更新がある場合)
  16. Copyright © 2020 Present ANDPAD Inc. This information is 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 「これやってなかったけど導入してみよう」 「こうするとこんな辛みがあるようなのでやめておこう」 といった何か気づきがあれば幸いです! 時間の都合で説明を端折っている部分が多々あるので、 ご質問どしどしいただけると大変嬉しいです!