Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CloudFormationの運用が 辛くならない方法を本気で考えてみた
Search
Yuki_Kurono
September 16, 2023
Technology
320
0
Share
CloudFormationの運用が 辛くならない方法を本気で考えてみた
「四国クラウドお遍路 2023 - 四国の外のモノサシを知ってみよう-」登壇資料
Yuki_Kurono
September 16, 2023
More Decks by Yuki_Kurono
See All by Yuki_Kurono
Terraform(IaC)と実環境の乖離どうしていますか?
yuki_kurono
0
22
今年のre:inventから学ぶこと
yuki_kurono
0
100
re_invent 2023事前勉強会
yuki_kurono
0
98
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
850
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
680
CodeGuru Security ってなんだ?
yuki_kurono
0
1.2k
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
440
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
620
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
1
1.5k
Other Decks in Technology
See All in Technology
Fabric-cicd によるAzure DevOps デプロイ
ryomaru0825
0
150
食べログのサーキットブレーカー導入を振り返って
atpons
1
150
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
690
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
150
APIテストとは?
nagix
0
160
CloudFront VPCオリジンとVPC Latticeサービスの内部ALBをマルチアカウントで一元利用しよう
duelist2020jp
5
260
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
280
Claude Codeを組織で使いこなす— サーバサイドAIエージェント運用の実践知
techtekt
PRO
0
130
JJUG CCC 2026 Spring AI時代の開発こそ標準化を武器に! ― 方式・プロセス・プラットフォームの標準化
s27watanabe
2
630
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
250
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
470
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.1k
Visualization
eitanlees
152
17k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
180
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
230
Crafting Experiences
bethany
1
160
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
150
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
760
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Are puppies a ranking factor?
jonoalderson
1
3.4k
Transcript
CloudFormationの運用が 辛くならない方法を本気で考えてみた 黒野 雄稀 | 2023/9/16 1
自己紹介 twitter(X):@kurono_98 #jawsug #cloudohenro 2 黒野 雄稀 Yuki Kurono アイレット株式会社 名古屋で仕事してマス
普段はインフラ設計・構築や運用構築に従事 2022/2023 Japan AWS All Certifications Engineers 2023 Japan AWS Top Engineers AWS Community Builders(Cloud Operations)
今日お話しすること 3 CloudFormationを運用するうえで大変だと感じること、それに対する解決策に ついてお話しします。 注意:アンチCloudFormationではないです!disるつもりも一切ないです。 #jawsug #cloudohenro
ここでクイズ 4 #jawsug #cloudohenro CloudFormationのアイコンは以下4つのうちどれでしょう? A C D B
正解はB 5 #jawsug #cloudohenro CloudFormationのアイコンは以下4つのうちどれでしょう? A C D B ClodFormation
CodePipeline CodeCommit X-Ray
CloudFormationとは 6 AWSで提供されるInfrastructure as Code(IaC)サービス IaC = コードしてインフラを管理しようぜ! テンプレートと呼ばれるファイルにコードを記述する。 記述方法はJson
or YAMLを使うことができる。 2011/02/25リリース(御年12歳) #jawsug #cloudohenro AWSTemplateFormatVersion: '2010-09-09' Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 Virtual private cloud (VPC) デプロイ
CFnってなんで使うんだっけ? 7 #jawsug #cloudohenro 標準化がしたいんだっけ?構築を楽にしたいんだっけ?なんとなく?? みんな色々な理由があるのかなと思いますが、自分は圧倒的に 「構築を楽にしたい」からです。 けど何故か大変な思いをして使うのを敬遠し、何か素晴らしいアップ デートが入るのを日々待っているだけの自分がいる。 辛さを感じて避けてきてたけど、解決策があるのではないかと思って
色々考えてみました。
なにが辛いと感じるのか • スタックが肥大化しがち • 冗長的な記述が多い • トライ&エラーに時間がかかる • 更新時に変更される部分が分かりにくいとかもあるけど...w 8
自分なりに何故辛いと感じるのか、何故敬遠してしまうのか考えてみました。 以下の3大要素が自分の中では辛く感じている部分というのが分かりました。 #jawsug #cloudohenro
スタックが肥大化しがち問題 9 少し大きめなシステムをCFnで構築しようとすると1つのスタックが肥大がしが ち。サービスごとにスタックを分けようとすると煩雑化してさらなる地獄に。 #jawsug #cloudohenro vpc.yaml subnet.yaml ec2.yaml role.yaml
巨大system.yaml 分割
スタックが肥大化しがち問題 10 スタックはサービスごとではなく、機能ごとに分けていく。 スタック間の結合も少なくなり分割もできてハッピー。 #jawsug #cloudohenro subA.yaml subB.yaml subC.yaml subD.yaml
分割 巨大system.yaml
冗長的な記述が多くなる問題 11 CloudFormationの従来の書き方だと同じリソースを複数回定義する必要があ る。S3を100個作りたいとかなった時に絶望する。(これは無いと思うけど) #jawsug #cloudohenro ×100 AWSTemplateFormatVersion: '2010-09-09' Resources:
- "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" AWSTemplateFormatVersion: '2010-09-09' Resources: - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" AWSTemplateFormatVersion: '2010-09-09' Resources: - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" AWSTemplateFormatVersion: '2010-09-09' Resources: - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: 死
冗長的な記述が多くなる問題 12 ForEachを使うことでかなり記述量を抑えることが可能に。 それでも動的に渡すBacket名などは記述する必要はある。Mappingsを並行して 使用することを心からオススメする。 #jawsug #cloudohenro ×100 AWSTemplateFormatVersion: 2010-09-09
Transform: "AWS::LanguageExtensions" Resources: "Fn::ForEach::BucketLoopName": - BucketName - - bucketkurono1 - bucketkurono2 - bucketname ・・・100まで - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: !Ref BucketName 流石にまだ良い
トライ&エラーに時間かかる問題 13 AWSコンソールからデプロイを行うと、ブラウザのロード速度に足を引っ張ら れることや画面遷移、操作が多くストレスが多い。 #jawsug #cloudohenro トライ エラー デプロイ
トライ&エラーに時間かかる問題 14 デプロイ方法をコンソールからAWS CLIに変更することでブラウザに依存して いたストレスから解放される。再実行も同じコマンドなので楽になる。 #jawsug #cloudohenro トライ エラー デプロイ
まとめ 15 CloudFormationだけが、辛いということはないと思います。 #jawsug #cloudohenro • やり方次第で、辛いと思える部分は解消できると思いました。 • アップデートもされているので、日々良い方向へ運用方法を改善していく のが大事だと思います。
• あとは元々やりたかったことから逸脱するのであれば、諦める。 ◦ CloudFormationは目的ではなく手段なので履き違えないように。
16