Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CloudFormationの運用が 辛くならない方法を本気で考えてみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuki_Kurono
September 16, 2023
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CloudFormationの運用が 辛くならない方法を本気で考えてみた
「四国クラウドお遍路 2023 - 四国の外のモノサシを知ってみよう-」登壇資料
Yuki_Kurono
September 16, 2023
More Decks by Yuki_Kurono
See All by Yuki_Kurono
Terraform(IaC)と実環境の乖離どうしていますか?
yuki_kurono
0
55
今年のre:inventから学ぶこと
yuki_kurono
0
120
re_invent 2023事前勉強会
yuki_kurono
0
110
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
910
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
740
CodeGuru Security ってなんだ?
yuki_kurono
0
1.2k
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
460
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
670
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
1
1.6k
Other Decks in Technology
See All in Technology
今さら理解するウェブフォントver.2026
takanorip
3
690
FOSS4Gを活用した自治体業務DXの試み
470715
0
150
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
110
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3k
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
270
Loop Engineering, beyond prompt, context, and harness engineering
glaforge
0
110
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
110
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.5k
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
370
ゲームのリアルタイム通信から見た QUIC と MoQ
segadevtech
0
120
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
310
しろおびから始める!ログ活用の第一歩
shumei_ito
0
930
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Unsuck your backbone
ammeep
672
58k
HDC tutorial
michielstock
2
960
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Making the Leap to Tech Lead
cromwellryan
135
10k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
Balancing Empowerment & Direction
lara
6
1.3k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
A Modern Web Designer's Workflow
chriscoyier
699
190k
My Coaching Mixtape
mlcsv
0
350
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
How to train your dragon (web standard)
notwaldorf
96
6.9k
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