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.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.8k
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.4k
IaCで全てが上手くいくと思うなよ_失敗事例のご紹介.pdf
mokocm
0
9.7k
re:Growth infra 2020
mokocm
0
4.8k
Other Decks in Technology
See All in Technology
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.4k
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.2k
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
HHKBエバンジェリストになる方法
941
0
110
人間はどの意思決定を手放せるのか
kawasima
15
7.3k
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
990
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
160
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
170
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
400
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
360
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Marketing to machines
jonoalderson
1
5.8k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
A designer walks into a library…
pauljervisheath
211
25k
Speed Design
sergeychernyshev
33
2.1k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
The Curious Case for Waylosing
cassininazir
1
510
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
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