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
AWS環境でIaCを使い始めて運用するためのメリットデメリットと注意点
Search
mokonist
June 26, 2020
Technology
3.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS環境でIaCを使い始めて運用するためのメリットデメリットと注意点
mokonist
June 26, 2020
More Decks by mokonist
See All by mokonist
devio-2024-Introduction-golang-backend
mokocm
7
4.7k
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
1.1k
1年間モダンなアプリへの移行支援をやってみて分かった、モダナイズの重要性と難しさ
mokocm
1
1.6k
レガシーシステム、モダナイズへの道筋
mokocm
0
1.8k
Application Composerのすすめ
mokocm
0
1.5k
devio-2022-sapporo-moko.pdf
mokocm
2
170
DeepDive into Modern Development with AWS
mokocm
1
1.4k
IaCで全てが上手くいくと思うなよ_失敗事例のご紹介.pdf
mokocm
0
9.7k
re:Growth infra 2020
mokocm
0
4.8k
Other Decks in Technology
See All in Technology
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
3
610
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
9.8k
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
190
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
580
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1k
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
130
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
LLMにもCAP定理があるという話
harukasakihara
0
280
爆速でマルチプロダクトを立ち上げる時 事業・CTO目線で大事にしたい事
miyatakoji
0
100
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
360
失敗を資産に変えるClaude Code
shinyasaita
0
300
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
3
1.4k
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Evolving SEO for Evolving Search Engines
ryanjones
0
210
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Docker and Python
trallard
47
3.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Designing for Performance
lara
611
70k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Prompt Engineering for Job Search
mfonobong
0
340
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
The SEO identity crisis: Don't let AI make you average
varn
0
490
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Transcript
AWS環境でIaCを使い始めて運⽤するための メリットデメリットと注意点 クラスメソッド株式会社 AWS事業本部 コンサルティング部 moko (@mokocm ) 2020/06/26
2 ⾃⼰紹介 もこ クラスメソッド株式会社 AWS事業本部 コンサルティング部ソリューションアーキテクト 2020 APN AWS Top
Engineers 現職: Terraform/CDKでAWS環境の構築 前職: ECサイトのSREっぽい事 好き: アプリとインフラの中間、TypeScript 好きなAWSサービス: ECS/Amplify/CDK Twitter/GitHub: mokocm
3 本⽇お話しすること ・IaC(Infrastructure as Code)の利点、⽋点 ・Terraform/CloudFormation/CDKの紹介 ・IaCの運⽤⽅法(例) ・まとめ
4 今回持って帰って欲しい事 Infrastructure as Codeを利点と⽋点を理解して、 本番環境でも利⽤出来るかを判断出来るようになり、 運⽤が苦じゃなくなる
5 対象 = 既にAWS環境でゴリゴリIaCとかCI/CDをしてる ⽅は物⾜りないかもしれません。
6 ・IaCの利点、⽋点 ・Terraform/CloudFormation/CDKの紹介 ・IaCの運⽤⽅法(例) ・まとめ
IaCとは︖ Infrastructure as Code(IaC) AWS環境やOSなどの構成をコードベースで 記述、更新を⾏うツール、サービス AWSだとTerraform/CloudFormation/CDK/OpsWorks など
8 利点 ・環境の変更をコードベースでレビュー出来る ・⼿動での適⽤が無くなるため、ミスが少なくなる ・GitHubなどと連携してIssue/PRでトラッキングできる ・最新の環境をコードベースで管理出来るため、管理が楽 ※AWS環境を⼿で触らないようしている場合に限る ・楽しい←重要
9 IaCを導⼊することで幸せになる例 ・⼤規模(20台〜)かつAutoScaling Groupが複数環境ある ・構成変更を⾏う時に⼤量の環境に対してマネコンから⼿動で 更新しないといけない ・同じような構成で複数の環境を⽤意する必要がある
10 IaCを導⼊することで幸せになる例 ・⼤規模(20台〜)かつAutoScaling Groupが複数環境ある →複数の環境に対してアップデートが出来る ・構成変更を⾏う時に⼤量の環境に対してマネコンから⼿動で 更新しないといけない ・同じような構成で複数の環境を⽤意する必要がある
11 IaCを導⼊することで幸せになる例 ・⼤規模(20台〜)かつAutoScaling Groupが複数環境ある →複数の環境に対してアップデートが出来る ・構成変更を⾏う時に⼤量の環境に対してマネコンから⼿動で 更新しないといけない →コードベースで管理出来るため、ミスを少なくして時間を節約 ・同じような構成で複数の環境を⽤意する必要がある
12 IaCを導⼊することで幸せになる例 ・⼤規模(20台〜)かつAutoScaling Groupが複数環境ある →複数の環境に対してアップデートが出来る ・構成変更を⾏う時に⼤量の環境に対してマネコンから⼿動で 更新しないといけない →コードベースで管理出来るため、ミスを少なくして時間を節約 ・同じような構成で複数の環境を⽤意する必要がある →コードを使い回すことで同じ環境を簡単に早く⽤意出来る
13 ⽋点 ・Terraform/CloudFormation/CDKなど、ツールに依存するため 学習コストが増える ・暗黙的なデフォルト値がAWSマネコンのデフォルト値と違う場合 がある ・IaC管理外でAWS環境を更新すると対応が⼤変になる ・ツール固有のバグを踏むことがある ・時間がかかる
14 ⽋点 ・Terraform/CloudFormation/CDKなど、ツールに依存するため 学習コストが増える ・暗黙的なデフォルト値がAWSマネコンのデフォルト値と違う場合 がある ・IaC管理外でAWS環境を更新すると対応が⼤変になる ・ツール固有のバグを踏むことがある ・時間がかかる
15 ツール固有のバグを踏むことがある TerraformのSecurity Group Cycle Error… Applyしても出続ける謎の差分… 実⾏中に切れるセッション… エラーログにGitHubのIssueのリンク… 環境とコード上の差分を全て⾒てくれない…
16 時間がかかる マネコンからポチポチしたほうが早い場合もある
17 AWSの知識に加えてIaCの学習コストが掛かることを妥協できますか︖ ⼤量の差分を⽬の前にして、諦めずにやっていけますか︖ IaCに掛けるコストと規模が⾒合っていますか︖
18 そもそもIaCを導⼊する必要が本当にあるのか︖
19 ・・・とは⾔っても 導⼊した⽅が良かったり、後々楽だったりする場合がある。 IaCを使い始めて運⽤をするなら、マネコンで触らない⽅が良い 構築だけで、運⽤はIaCを離れるなら
20 ・IaCの利点、⽋点 ・Terraform/CloudFormation/CDKの紹介 ・IaCの運⽤⽅法(例) ・まとめ
21 Terraform HashiCorpが⼿がける クラウドの構成管理ツール AWS以外にもGCP/Azure/DigitalOcean/CloudFlareなどが対応 Providerを独⾃で⽤意することが出来る。 HCL(HashiCorp Configuration Language)でインフラを記述 様々なサービスで対応、とても書きやすい
22 Terraform // vpc resource "aws_vpc" "vpc" { cidr_block =
"10.0.0.0/16" } // igw resource "aws_internet_gateway" "igw" { vpc_id = aws_vpc.vpc.id } // subnet (a) resource "aws_subnet" "subnet_a" { cidr_block = "10.0.0.0/24" vpc_id = aws_vpc.vpc.id availability_zone = "ap-northeast-1a" } // subnet (c) resource "aws_subnet" "subnet_c" { cidr_block = "10.0.0.1/24" vpc_id = aws_vpc.vpc.id availability_zone = "ap-northeast-1c" }
23 Terraform // Route Table(0.0.0.0/0 igw) resource "aws_route_table" "public" {
vpc_id = aws_vpc.vpc.id route { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.igw.id } } // RouteTableにAssociation resource "aws_route_table_association” "subnet_a" { route_table_id = aws_route_table.public.id subnet_id = aws_subnet.subnet_a.id } resource "aws_route_table_association" "subnet_c" { route_table_id = aws_route_table.public.id subnet_id = aws_subnet.subnet_c.id }
24 CloudFormation AWSが提供するIaCツール リソースをJSON/YAMLで記述 ・Stackset機能でリージョン、 AWSアカウントに⼀括実⾏が可能 ・プログラミングが書けなくても 良い感じに書ける
25 CDK 使い慣れたプログラミング⾔語から CloudFormationを出⼒ ⼀般的なCloudFormationのように明⽰的に全てのリソースを 記述出来るほか、数⾏で複数のリソースを作れるモジュールが提供 JavaScript/TypeScript/Python/Java/C#で利⽤可能 今激アツなIaCツール
26 CDK import { Stack, Construct, StackProps, Duration } from
'@aws-cdk/core'; import { Vpc } from '@aws-cdk/aws-ec2’ export class SlackTranslateBotStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); const vpc = new Vpc(this, 'TheVPC', { cidr: "10.0.0.0/16" }) } }
27 CDK Ref: h'ps://dev.classmethod.jp/ar6cles/aws-cdk-intro-nw/
28 CDK https://dev.classmethod.jp/articles/aws-cdk-serverless-develop/ CDK + Lambdaで開発がめちゃめちゃ捗る︕ constructor(scope: Construct, id: string,props?:StackProps)
{ super(scope, id, props); const lambda = new NodejsFunction(this, 'lambda', { entry: 'lambda/app.ts’, handler: 'handler’, runtime: Runtime.NODEJS_12_X, timeout: Duration.minutes(5) }); const api = new LambdaRestApi(this, 'api', { handler: lambda }); }
29 その他 | Serverless ・AWS SAM(Serverless Application Model) ・CLIとCloudFormationの拡張、デプロイが楽 ・実態はCloudFormationのTransform
・Serverless Framework ・ymlでサーバーレス環境を簡単に設定
30 ・IaCの利点、⽋点 ・Terraform/CloudFormation/CDKの紹介 ・IaCの運⽤⽅法(例) ・まとめ
31 IaCの運⽤⽅法 ・Gitで管理して、開発者がトピックブランチからmasterブランチに Pull Requestを出し、CIで現環境との差分、コードのレビューを受ける ・もちろんmasterブランチは保護して、承認なく直接Push出来ないように ・masterブランチにマージされたら環境に適⽤する ・Terraformの場合はS3にtfstateを保存する terraform {
backend "s3" { bucket = "bucket-name-here" key = "terraform.tfstate" encrypt = ture region = "ap-northeast-1" } }
32 運⽤⽅法 | GitHub
33 運⽤⽅法 | GitHub
34 運⽤⽅法 | GitHub
35 運⽤⽅法 | Terraform Cloud Terraform Cloudを使うのもあり。 https://dev.classmethod.jp/articles/terraform-cloud/
36 運⽤⽅法 | Terraform Cloud
37 IaCの運⽤⽅法 ・IaCの実⾏に使うIAM UserにのみAWS環境の編集権限を与える ・普段マネコンを使うユーザーにはReadOnlyAccessポリシーを付与 ・本当に⼿動での対応が必要な場合にのみ⼀時的に権限を付与するなど ・AWS環境を⼿で触らない
38 AWS環境を素⼿で触らない強い意志
39 AWS環境を素⼿で触らない強い意思 ・IaCで管理、運⽤するならAWS環境を直接触らない強い意志が必要 ・環境の変更はGitHub上で承認を受けてmasterにマージする =masterブランチが最新である⽅が整合性が取れて管理しやすい ・出来るならば、OSレイヤーは簡潔にして極⼒触らずに、 使い捨て出来るように
40 IaCの運⽤⽅法 Q. それって「Immutable Infrastructure」では︖
41 IaCの運⽤⽅法 Q. それって「Immutable Infrastructure」では︖ A. はい。
42 IaCの運⽤⽅法 Q. それって「Immutable Infrastructure」では︖ A. はい。 // あくまで個⼈的感想であり理想論で、今⽇⼀番伝えたかった事 開発者はインフラを積極的に世話したいとは思わないし
アプリケーション開発に集中したい
43 IaCの運⽤⽅法 Q. それって「Immutable Infrastructure」では︖ A. はい。 // あくまで個⼈的感想であり理想論で、今⽇⼀番伝えたかった事 開発者はインフラを積極的に世話したいとは思わないし
アプリケーション開発に集中したい せっかくクラウドにリフトするなら、インフラを極⼒世話しない環境に しませんか︖
44 ・IaCの利点、⽋点 ・Terraform/CloudFormation/CDKの紹介 ・IaCの運⽤⽅法(例) ・まとめ
45 まとめ ・Infrastructure as Codeで運⽤する場合環境を素⼿で 触らないようにする ・これからオンプレミスからクラウドに移⾏する⽅は、 Immutable Infrastructureの考え⽅を再認識する ・チームや組織でIaCツールを使っていけるモチベーションが
あるのかを確認する
46