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
AWS環境でIaCを使い始めて運用するためのメリットデメリットと注意点
Search
mokonist
June 26, 2020
Technology
3.8k
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.9k
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
1.2k
1年間モダンなアプリへの移行支援をやってみて分かった、モダナイズの重要性と難しさ
mokocm
1
1.7k
レガシーシステム、モダナイズへの道筋
mokocm
0
1.8k
Application Composerのすすめ
mokocm
0
1.6k
devio-2022-sapporo-moko.pdf
mokocm
2
180
DeepDive into Modern Development with AWS
mokocm
1
1.5k
IaCで全てが上手くいくと思うなよ_失敗事例のご紹介.pdf
mokocm
0
9.7k
re:Growth infra 2020
mokocm
0
4.8k
Other Decks in Technology
See All in Technology
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
Local CI × GitHub Actions
gogutan
3
230
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
190
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
300
USB PDを使ってスマホを労わりたい
raspython3
0
180
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
200
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
200
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
210
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.3k
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
130
WasmをRustにする
sansantech
PRO
0
280
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Ruling the World: When Life Gets Gamed
codingconduct
0
400
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
The Language of Interfaces
destraynor
162
27k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
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