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
240
CloudFormationの運用が 辛くならない方法を本気で考えてみた
「四国クラウドお遍路 2023 - 四国の外のモノサシを知ってみよう-」登壇資料
Yuki_Kurono
September 16, 2023
Tweet
Share
More Decks by Yuki_Kurono
See All by Yuki_Kurono
今年のre:inventから学ぶこと
yuki_kurono
0
55
re_invent 2023事前勉強会
yuki_kurono
0
71
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
710
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
560
CodeGuru Security ってなんだ?
yuki_kurono
0
1k
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
380
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
560
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
1
1.4k
Hashicorp VaultでAWSクレデンシャルの管理を楽にしたい
yuki_kurono
0
630
Other Decks in Technology
See All in Technology
知覚とデザイン
rinchoku
1
680
猫でもわかるAmazon Q Developer CLI 解体新書
kentapapa
1
190
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
710
初海外がre:Inventだった人間の感じたこと
tommy0124
1
140
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
570
OpenCensusと歩んだ7年間
bgpat
0
280
Kotlinで型安全にバイテンポラルデータを扱いたい! ReladomoラッパーをAIと実装してみた話
itohiro73
3
130
マルチエージェントのチームビルディング_2025-10-25
shinoyamada
0
230
AIでデータ活用を加速させる取り組み / Leveraging AI to accelerate data utilization
okiyuki99
6
1.6k
re:Invent 2025の見どころと便利アイテムをご紹介 / Highlights and Useful Items for re:Invent 2025
yuj1osm
0
480
AIとの協業で実現!レガシーコードをKotlinらしく生まれ変わらせる実践ガイド
zozotech
PRO
2
210
プロファイルとAIエージェントによる効率的なデバッグ / Effective debugging with profiler and AI assistant
ymotongpoo
1
620
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
The Pragmatic Product Professional
lauravandoore
36
7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Code Reviewing Like a Champion
maltzj
526
40k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Facilitating Awesome Meetings
lara
57
6.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.9k
Fireside Chat
paigeccino
41
3.7k
We Have a Design System, Now What?
morganepeng
53
7.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