Slide 1

Slide 1 text

#jawsug_ohenro (CDK Pipelinesの)「self-mutate」って何? Masaki Suzuki (PayPay Card Corp.) 2024/09/07 JAWS-UG 四国クラウドお遍路 2024 in 高知

Slide 2

Slide 2 text

#jawsug_ohenro アジェンダ 1. CDK Pipelinesについて 2. self-mutateとは? 3. self-mutateの課題 & まとめ 2

Slide 3

Slide 3 text

#jawsug_ohenro 自己紹介 ◼ 名前: 鈴木 正樹 (Masaki Suzuki) ◼ 会社: PayPayカード株式会社(2024/06~) ← 株式会社DeNA(~2024/05) ◼ 職種: インフラエンジニア・DBA(本当はクラウドのアプリバックエンドが大好き) ◼ その他: • AWS(特にLambda), その他サーバーレスバックエンド全般 • Infrastructure as Code(特にAWS CDK), CI/CD (GitHub Actions, AWS CodePipeline) etc. • 主な活動支部:JAWS-UG 名古屋支部, JAWS-UG CDK支部 ◼ SNS: • @makky12 (SUZUKI Masaki@クラウドエンジニア) • @makky12.bsky.social • https://github.com/smt7174/ • http://makky12.hatenablog.com/ 3

Slide 4

Slide 4 text

#jawsug_ohenro 自己紹介その2 4 • 5/17(金)発売のSoftware Design6月号にて、記事を寄稿しました • 第2特集の「実証Bun 次世代JavaScriptランタイムの実態に迫る」の第1章お よび第3章を執筆しています

Slide 5

Slide 5 text

#jawsug_ohenro 注意事項 ◼ 今回の発表資料・発言内容は、すべて個人の見解になります • 所属企業、及びその方針・見解などとは一切無関係です ◼ 文字数の都合上、CloudFormationを「CFn」と略記しています ◼ AWSの各種サービスの詳細説明は割愛しています ◼ 本資料は、下記URLで公開しています • この資料です 5

Slide 6

Slide 6 text

#jawsug_ohenro 1. CDK Pipelinesについて

Slide 7

Slide 7 text

#jawsug_ohenro CDK Pipelinesとは? ◼ AWS CDKで、 CFn+AWS CodePipelineを利用したCDKアプリケーションのデプロ イパイプラインを構築するためライブラリ(≒コンストラクタ) ◼ L3コンストラクタ(AWS CDKの一般的なコンストラクタはL2) ◼ でも、あまり使われてないような…(※ちなみに、DeNA時代に使ってました) ◼ その理由でよく聞くのが… 7

Slide 8

Slide 8 text

#jawsug_ohenro CDK Pipelinesがあまり使われない理由 「self-mutate」なんも分からん 8

Slide 9

Slide 9 text

#jawsug_ohenro 2. self-mutateとは?

Slide 10

Slide 10 text

#jawsug_ohenro self-mutateとは ◼ 「ビルドプロバイダー(大抵はCode Build)の変更」を確認し、変更があったら先に その部分のみデプロイを行うことで、「常に最新のパイプライン設定でアプリケー ションのデプロイを行う」仕組み ◼ アプリケーションのデプロイで、2度手間が発生しなくて済む 10 AWS CodeBuild AWS Lambda 通常のデプロイ デプロイ 同時にデプロイすると、最新のビルド設定がアプ リケーションデプロイに反映されない (1つ前のビルド設定が適用される) AWS CodeBuild AWS Lambda self-mutate デプロイ1 デプロイ2 先にビルド設定をデプロイすることで、 常に最新のビルド設定で アプリケーションがデプロイされる

Slide 11

Slide 11 text

#jawsug_ohenro 3. self-mutateの課題

Slide 12

Slide 12 text

#jawsug_ohenro self-mutateの課題 12 デプロイが2度走る ・ デプロイが2回走ることになり、その分時間がかかってしまう ・ 特に開発環境ではデプロイに時間をかけたくないことも多い(※) スタックの分割 ・ CDK Pipelinesの仕様上、パイプラインとアプリでスタック分割が必要 ・ ここら辺がちょっと煩雑で、分かりにくいかも ビルド設定の変更頻度 ・ ビルド設定は一度確定すれば、そうそう変わらない ・ あまり「常に最新のビルド設定」というところに拘る必要性が薄い(かも) ※設定でself-mutateを無効にする事も可能(ただしあくまで開発用途であり、 本番環境でself-mutateを無効にするのは推奨されません)

Slide 13

Slide 13 text

#jawsug_ohenro まとめ でも、うまく使えば便利ですよ (詳しく聞きたい方は、ぜひ懇親会 で!) 13

Slide 14

Slide 14 text

#jawsug_ohenro ご清聴ありがとうございました 以上です