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

CDKで作るCICD+サーバーレス環境構築

 CDKで作るCICD+サーバーレス環境構築

CDKでサーバーレス環境を作った時の悩みポイントを経験談を交えてご紹介

Avatar for rsato

rsato

March 12, 2026

Other Decks in Programming

Transcript

  1. Copyright SKYARCH NETWORKS Inc. All Rights Reserved. 氏名 所属 保有資格

    得意分野 ⾃⼰紹介 佐藤 ⻯太(さとう りゅうた) 株式会社スカイアーチネットワークス ストラテジック・デリバリー本部 Solutions Architect部 デベロップメント課 ・IPA [FE, SG] ・AWS資格 x11 ・JDLA [G検定, E資格] ・Frontend: TypeScript[React,RN] ・Backend: Go[Gin,Echo,gorm,ent], Python[FastAPI,SQLAlchemy] ・Infrastructure: AWS, Cloudflare, Proxmox VE, Kubernetes ・AI tools: llama.cpp, ollama, LangChain, kiro, Antigravity, Jules 趣味で最近使う技術スタック
  2. ©Copyright SKYARCH, an IBM Company 4 Prohibited subnet Prohibited subnet

    AWS Cloud Private subnet Public subnet Private subnet NAT gateway RDS RDS ALB CodePipeline CodeBuild Deploy Git repository (GitHub) ECR Users EC2 (踏み台) Secrets Manager 構成図 Systems Manager Task Task
  3. ©Copyright SKYARCH, an IBM Company 5 CDK(IaC)のメリットは何なのか? • 何回実行しても同じ結果になることが保証される(冪等性) •

    コードが別の環境で再利用できる • 構成図やドキュメントの更新が不要/最新であることが保証される • バージョン管理できる/古いバージョンに戻すことができる • コーディングAIに構築作業を任せられる
  4. ©Copyright SKYARCH, an IBM Company 6 CICDとインフラを同じCDKで管理してよいのか? 初回デプロイ時 6 Private

    subnet Private subnet CodePipeline CodeBuild Deploy Git repository (GitHub) ECR Task Task デプロイ時点ではイメージが入っていない
  5. ©Copyright SKYARCH, an IBM Company 7 CICDとインフラを同じCDKで管理してよいのか?→良さそう 初回デプロイ時 7 Private

    subnet Private subnet CodePipeline CodeBuild Deploy Git repository (GitHub) ECR Task Task 案2:タスクの起動数を0でデプロイし、 後から1以上に変更する → どちらにせよ初回は2回デプロイが必要? 案1:CodePipelineとインフラでStackを分 けて別々にデプロイする
  6. ©Copyright SKYARCH, an IBM Company 13 CDKの変更でアプリケーションが先祖返りする? Docker Image version

    1 CDK version 1 Docker Image version 2 Docker Image version 3 CDK version 2 Docker Image version 4 1.アプリv1をデプロイするように設定 2.なんらかのインフラの変更をする 3. CDKではアプリケーションversion1を指定しているので Version1で再デプロイされる CodePipeline
  7. ©Copyright SKYARCH, an IBM Company 14 CDKの変更でアプリケーションが先祖返りする? Docker Image version

    latest CDK version 1 Docker Image version latest Docker Image version latest CDK version 2 Docker Image version latest その時のlatestを指定 “latest”で障害発生!→ どのバージョン?? Latestを指定した場合 Latest指定は推奨されていない
  8. ©Copyright SKYARCH, an IBM Company 15 CDKとアプリケーションコードを一緒に管理する Docker Image version

    1 CDK version 1 Docker Image version 2 CDK version 2 Docker Image version 3 CDK version 3 Docker Image version 4 CDK version 4 片方が更新されると両方更新される インフラとアプリの管理者が 異なる場合に障害となる
  9. ©Copyright SKYARCH, an IBM Company 16 Latestをパラメータストアで管理する Docker Image version

    1 CDK version 1 Docker Image version 2 CDK version 2 Docker Image version 3 Docker Image version 4 latest = version 1 latest = version 2 latest = version 3 latest = version 4 パラメーターストア
  10. ©Copyright SKYARCH, an IBM Company CDK Pipeline 17 CDK Pipelineというのがあるらしい

    Docker Image version 1 CDK version 1 Docker Image version 2 CDK version 1 Docker Image version 3 CDK version 2 Docker Image version 4 CDK version 2 CloudFormation v1 CloudFormation v2 CloudFormation v3 CloudFormation v4
  11. ©Copyright SKYARCH, an IBM Company 18 まとめ • CDKを使えば、一貫したワークフローでCodePipelineと、リソースをデプロイできることが確認できた •

    CDK自体のテストやデプロイを自動化し、CICD自体をCICDすることもできそう • 今度は、CDK自体を更新してデプロイできるCDK Pipelineを試してみたい • 一方で考慮することが増えて、難しいと感じる