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
0
58
CloudFormationの運用が 辛くならない方法を本気で考えてみた
「四国クラウドお遍路 2023 - 四国の外のモノサシを知ってみよう-」登壇資料
Yuki_Kurono
September 16, 2023
Tweet
Share
More Decks by Yuki_Kurono
See All by Yuki_Kurono
re_invent 2023事前勉強会
yuki_kurono
0
8
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
260
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
120
CodeGuru Security ってなんだ?
yuki_kurono
0
320
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
140
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
350
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
0
520
Hashicorp VaultでAWSクレデンシャルの管理を楽にしたい
yuki_kurono
0
430
回転re:Invent寿司
yuki_kurono
0
39
Other Decks in Technology
See All in Technology
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
160
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.3k
APIファーストなプロダクトマネジメントの実践 〜SaaSus Platformでの例〜 / "Practicing API-First Product Management - An Example with SaaSus Platform
oztick139
0
110
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
400
競技としてのKaggle、役に立つKaggle
yu4u
5
2.1k
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
610
今日からできる!簡単 .NET 高速化 Tips -2024 edition-
xin9le
5
2.3k
.NET Profiler in 2024.
kkamegawa
1
230
ルーターでプレゼンする
puhitaku
0
930
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
310
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
120
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
1
330
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Into the Great Unknown - MozCon
thekraken
10
1k
Gamification - CAS2011
davidbonilla
76
4.6k
Optimizing for Happiness
mojombo
370
69k
Web development in the modern age
philhawksworth
202
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
243
12k
It's Worth the Effort
3n
180
27k
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