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
Terraform ですべてを管理するのに疲れた😭
Search
Hasegawa Takuya
December 14, 2021
Programming
1
650
Terraform ですべてを管理するのに疲れた😭
社内LTなのでちょいちょい雑です
Hasegawa Takuya
December 14, 2021
Tweet
Share
More Decks by Hasegawa Takuya
See All by Hasegawa Takuya
1014-AWS-EC2-Graviton2
rluisr
0
870
Other Decks in Programming
See All in Programming
Team operations that are not burdened by SRE
kazatohiei
1
240
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
270
ReadMoreTextView
fornewid
1
480
VS Code Update for GitHub Copilot
74th
1
410
Benchmark
sysong
0
270
XSLTで作るBrainfuck処理系
makki_d
0
210
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
250
Select API from Kotlin Coroutine
jmatsu
1
190
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
900
技術同人誌をMCP Serverにしてみた
74th
1
380
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
VelocityConf: Rendering Performance Case Studies
addyosmani
330
24k
Done Done
chrislema
184
16k
Optimizing for Happiness
mojombo
379
70k
Fireside Chat
paigeccino
37
3.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
How to train your dragon (web standard)
notwaldorf
94
6.1k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
490
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Transcript
Terraform ですべてを管理す るのは疲れた😭 SRG 長谷川
6年間 手入れがされてない サービスがあった。 ※ Disってるわけではない
それはいつしか こっちの持ち物になった
そのコンポーネントは 日々重要度を増していた...
自己紹介 • 長谷川 拓也 ◦ 2018年度新卒入社 ◦ メディア系サービスの横断組織 ◦
サービスリライアビリティグループ(SRG)所属 ◦ 合同会社HCloud の社長でもある • 好きなこと(もの) ◦ 色々
現在の状況 • AWS を利用 • 使ってるサービスはたった2つ • EC2 ◦ m1.small
もいる ◦ 全台に Elasitc IP が付与されている • Classic Load Balancer ◦ Classic !!!
CentOS6 で... Chef で... munin/nagios で... • この EC2 たちの問題点
• EC2 は m1.small • OS は CentOS 6 • Chef は個人的に嫌いだし • アプリログをどこかに送ってるわけでもなく • 監視は munin と nagios • 運用管理を楽にして、監視も Datadog に一元管理したい
どのサービスを利用するか • Fargate vs ECS on EC2 ◦ ECS on
EC2 のメリットは今回は無い ◦ EC2 の管理したくない >< • Fargate vs App Runner ◦ App Runner は VPC 内のリソースにアクセスできない ▪ ref: https://github.com/aws/apprunner-roadmap/issues/1 = Fargate に決定!
で、Chef はどうする? • コンテナ化にするから Chef は不要になる • かといって IaC 環境がないのは心理的安全性に欠ける
• Terraform or Pulumi or CDK ◦ 最初は Terraform を書いていた ▪ 既存のコードのコピペができて楽だった ▪ でもこのコードを環境ごとに追加していくのは辛い ◦ Pulumi は個人的に好きだけどこのためだけにゼロから書くのは辛い ◦ CDK もゼロから書くのは辛い
で、Chef はどうする? • コンテナ化にするから Chef は不要になる • かといって IaC 環境がないのは心理的安全性に欠ける
• Terraform or Pulumi or CDK ◦ 最初は Terraform を書いていた ▪ 既存のコードのコピペができて楽だった ▪ でもこのコードを環境ごとに追加していくのは辛い ◦ Pulumi は個人的に好きだけどこのためだけにゼロから書くのは辛い ◦ CDK もゼロから書くのは辛い
Terraform Workspace • やりたいことは dev, stg, prd と分けて管理したい • Terraform
Workspace でできるんじゃないかと思った • がそのような使い方(分離の度合いが強い)は非推奨とされている ref: https://www.terraform.io/docs/language/state/workspaces.html
IaC のこと考えるの疲れた😭
AWS Copilot • What’s AWS Copilit AWS App Runner、Amazon ECS、AWS
Fargate を活用したプロダクションレディなコ ンテナアプリケーションのビルド、 リリース、運用をかんたんに実現しよう。 GitHub: https://github.com/aws/copilot-cli Document: https://aws.github.io/copilot-cli/ • やりたいことはだいたいできそう!
1. Dockerfile を用意する - EXPOSE は必須 - ENV JAVA_OPTS=”” は
Copilot から変数を注入する - 1.3-labs からヒアドキュメントが 利用できるようになったの便利
2. copilot init • 各質問に答えていくとマニフェストが作成されます
3. copilot env init • dev, stg ごとの環境を用意する • すでにネットワーク周りはあるので
--import を利用する
4. copilot deploy - deploy コマンドがやること - Dockerfile からイメージの作成
- ECR にプッシュ - CFn にパッケージング - ECS タスク定義、Job, Service の作成・更新
5. マニフェストをいじる - init を行うと copilot/service-test/manifest.yml が作成される - copilot はこれを元にリソースを変更したりする
マニフェスト http
マニフェスト image
マニフェスト リソース
マニフェスト 値の上書き • 例 メインコンテナのメモリ量を指定
マニフェスト 環境ごとに • sbx と prd で別の値を使う • 最上位のキーから指定しないと適用されない •
サイドカーパターンももちろん可能 ◦ メインコンテナが これらのサイドカーに依存することも可能
まとめ • Terraform x AWS Copilot の組み合わせで IaC に対するコスト削減 ◦
Fargate 周りは Copilit と割り切る ◦ SecurityGroup や EC2, RDS は Terraform と分ける • AWS Copilot でデプロイ管理もできるため、CI/CD との親和性が高い • かゆいところにも手が届く。Copilot に対するデメリットはない • どんな場合にこの組み合わせがオススメか ◦ 多くの場合にメリットがあると思う ▪ すでに Terraform でガチガチならあえてやる必要性もない