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

JAWS DAYS2021 1年間運用して分かったCDKアンチパターン

D4d93646eedaaf5a9551cfc0ccd5b020?s=47 msato
March 20, 2021
410

JAWS DAYS2021 1年間運用して分かったCDKアンチパターン

D4d93646eedaaf5a9551cfc0ccd5b020?s=128

msato

March 20, 2021
Tweet

Transcript

  1. 1年間運用してわかった
 CDKアンチパターン
 レバレジーズ株式会社 佐藤 雅樹 


  2. 佐藤 雅樹(さとう まさき) : @chari7311 レバレジーズ株式会社 レバテック開発部インフラチーム WhoAmI

  3. 1年近くCDKを運用して経験した 失敗パターンをお話します

  4. AWS CDKとは AWSの環境をプログラミング言語で
 記述できるツール
 - TypeScript,JavaScript,Python,Java,C#
 - CloudFormationテンプレート生成


  5. AWS CDKとは 2. cfnテンプレート生成 3. テンプレートをもとに、 リソースが作成される 1.CDKデプロイ

  6. 例) 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が生成 される
  7. なぜCDKを導入したか - CloudFormationからの脱却 - 肥大化して可読性が低い状態になっていた
 - DevOpsの推進 - 開発チームからインフラのPRを上げやすくする


  8. 導入当初の感想 なにこれめっちゃ楽! - プログラミング言語だから、繰り返しとか関数とか使える - 自動補完が効くから、リファレンス行ったり来たりしなくても 書ける

  9. 導入からしばらく経ち 運用辛い、、

  10. なぜ運用が辛いか - CDKの使い方が悪かった - 可読性低い - 修正怖い

  11. ファイル/スタックの分割単位が 良くなかった

  12. 1アプリケーション1ファイル ・1ファイルのコード量が 多い(1000行近いものも) ・スタック作成/削除がやりづ らい

  13. 解決策: ライフサイクルごとにスタックの分割 ・1ファイル当たりの コード量減った ・スタックの作成/削除しやす くなった ECSとロググルー プ・ECRは別スタッ クで作るのがおす すめ

  14. コード量を減らすことを 重視しすぎた (共通化を頑張りすぎた)

  15. 長い関数を作って複数スタックで使った ・変更時の影響範囲が大き い 関数

  16. 設定の柔軟性が失われた - 特定のスタックのリソースだけ設定変えるこ とができない状態に - 例) Codeシリーズをまとめて作る関数を作成 - CodeBuildのキャッシュの設定を変えたくなって全部変わ る

  17. 変更が怖くないのが第一 - ある程度似たような記述は許容する - High Level Construct,Patternsを使えばそこまで記述量 は増えない - ライブラリ化する

    - 使っている側でバージョン上げない限りは変更されない
  18. まとめ - CloudFormationのベストラクティスを意識 - コード量を減らすことより、安心してデプロイ できること

  19. ご清聴ありがとうございました