Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
JAWS DAYS2021 1年間運用して分かったCDKアンチパターン
msato
March 20, 2021
0
660
JAWS DAYS2021 1年間運用して分かったCDKアンチパターン
msato
March 20, 2021
Tweet
Share
More Decks by msato
See All by msato
IAM_Access_Analyzer使ってみた.pdf
msato
0
190
Featured
See All Featured
Side Projects
sachag
449
37k
How to Ace a Technical Interview
jacobian
265
21k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
A Tale of Four Properties
chriscoyier
149
20k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
172
8.3k
What’s in a name? Adding method to the madness
productmarketing
11
1.5k
Building Your Own Lightsaber
phodgson
94
4.6k
Optimizing for Happiness
mojombo
365
63k
The Invisible Side of Design
smashingmag
289
48k
YesSQL, Process and Tooling at Scale
rocio
157
12k
What the flash - Photography Introduction
edds
61
9.9k
Documentation Writing (for coders)
carmenhchung
48
2.5k
Transcript
1年間運用してわかった CDKアンチパターン レバレジーズ株式会社 佐藤 雅樹
佐藤 雅樹(さとう まさき) : @chari7311 レバレジーズ株式会社 レバテック開発部インフラチーム WhoAmI
1年近くCDKを運用して経験した 失敗パターンをお話します
AWS CDKとは AWSの環境をプログラミング言語で 記述できるツール - TypeScript,JavaScript,Python,Java,C# - CloudFormationテンプレート生成
AWS CDKとは 2. cfnテンプレート生成 3. テンプレートをもとに、 リソースが作成される 1.CDKデプロイ
例) VPCの作成 import * as ec2 from '@aws-cdk/aws-ec2'; import *
as cdk from '@aws-cdk/core'; export class SampleVpcStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const vpc = new ec2.Vpc(this, "vpc") } } VPC,IGW,NATGW,Subn etなどが作成される 600行くらいのCFNが生成 される
なぜCDKを導入したか - CloudFormationからの脱却 - 肥大化して可読性が低い状態になっていた - DevOpsの推進 - 開発チームからインフラのPRを上げやすくする
導入当初の感想 なにこれめっちゃ楽! - プログラミング言語だから、繰り返しとか関数とか使える - 自動補完が効くから、リファレンス行ったり来たりしなくても 書ける
導入からしばらく経ち 運用辛い、、
なぜ運用が辛いか - CDKの使い方が悪かった - 可読性低い - 修正怖い
ファイル/スタックの分割単位が 良くなかった
1アプリケーション1ファイル ・1ファイルのコード量が 多い(1000行近いものも) ・スタック作成/削除がやりづ らい
解決策: ライフサイクルごとにスタックの分割 ・1ファイル当たりの コード量減った ・スタックの作成/削除しやす くなった ECSとロググルー プ・ECRは別スタッ クで作るのがおす すめ
コード量を減らすことを 重視しすぎた (共通化を頑張りすぎた)
長い関数を作って複数スタックで使った ・変更時の影響範囲が大き い 関数
設定の柔軟性が失われた - 特定のスタックのリソースだけ設定変えるこ とができない状態に - 例) Codeシリーズをまとめて作る関数を作成 - CodeBuildのキャッシュの設定を変えたくなって全部変わ る
変更が怖くないのが第一 - ある程度似たような記述は許容する - High Level Construct,Patternsを使えばそこまで記述量 は増えない - ライブラリ化する
- 使っている側でバージョン上げない限りは変更されない
まとめ - CloudFormationのベストラクティスを意識 - コード量を減らすことより、安心してデプロイ できること
ご清聴ありがとうございました