Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Patterns In Infrastructure as Code
Takeshi Kondo
April 24, 2020
Technology
8
4.4k
Patterns In Infrastructure as Code
Infra Study Meetup#1
https://forkwell.connpass.com/event/171560/
Takeshi Kondo
April 24, 2020
Tweet
Share
More Decks by Takeshi Kondo
See All by Takeshi Kondo
Who owns the Service Level?
chaspy
5
3.3k
多様な働き方を支える Working Agreements / Working agreements that support diverse work styles
chaspy
1
530
SRE を実現するための組織マネジメント / Management to achieve SRE
chaspy
3
3.1k
サービス立ち上げ期におけるSREの取り組み / SRE efforts in the service launch phase
chaspy
0
250
Implementing Site Reliability Engineering in your organization
chaspy
6
2k
How to measure "Site Reliability Engineering"
chaspy
6
1.9k
Site Reliability Engineering における 重要領域とパフォーマンス指標の提案 / Performance Indicators for SRE
chaspy
1
1.6k
Metric-Driven Decision Making with Custom Prometheus Exporter
chaspy
1
800
想定外の負荷を乗り切ったオンライン教育サービスの裏側 / How We Overcame the COVID-19 Crisis
chaspy
7
4.8k
Other Decks in Technology
See All in Technology
紙にまつわる苦しみを機能化してきた カミナシの歴史
kaminashi
0
540
JDK Flight Recorder入門
chiroito
1
500
組織の崩壊と再生、その中で何を考え、感じたのか。 そして本当に必要だったもの
kosako
10
4k
miisan's career talk
mii3king
0
220
ソフトウェアテスト自動化、一歩前へ
yoshikiito
1
110
SI企業が「アジャイル推し」になったら 幸せになれますか?/Can SI company be happy if it becomes “Agile stan” ?
chinmo
1
1.1k
【個人的】オブジェクト指向の現在地
toranoana
0
100
The Fractal Geometry of Software Design
vladikk
0
750
20220622_FinJAWS_あのときにAWSがあったらこうできた
taketakekaho
0
110
OPENLOGI Company Profile
hr01
0
420
LINEのB2Bプラットフォームにおけるトラブルシューティング2選
line_developers
PRO
3
290
#JP_Stripes Sapporo Stripeの活用例を色々ご紹介します!
miu_crescent
0
110
Featured
See All Featured
The Invisible Customer
myddelton
110
11k
Documentation Writing (for coders)
carmenhchung
48
2.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Designing on Purpose - Digital PM Summit 2013
jponch
106
5.6k
Typedesign – Prime Four
hannesfritz
33
1.4k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
Clear Off the Table
cherdarchuk
79
280k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
269
11k
Support Driven Design
roundedbygravity
86
8.5k
Bash Introduction
62gerente
597
210k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Unsuck your backbone
ammeep
659
55k
Transcript
Patterns In Infrastructure as Code Takeshi Kondo / @chaspy Infra
Study Meetup #1
Passed
Agenda • Infrastructure as Code in Quipper • Patterns in
Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern
Agenda • Infrastructure as Code in Quipper • Patterns in
Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern • What • Why • Point • Example
Agenda • Infrastructure as Code in Quipper • Patterns in
Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern
Infrastructure as Code in Quipper (1) • Infrastructure / Cloud
(AWS) • Terraform • Codenize.tools (Miam, Roadworker) • Application Platform (Kubernetes) • Kube-aws • Server Provisioning • Ansible
Infrastructure as Code in Quipper (2) • SaaS Configuration •
Datadog • Dashboard • SLO • Monitor • Pingdom • Deadman’s snitch • CircleCI • Environment Variables
Infrastructure as Code in Quipper(2) • SaaS Configuration • Datadog
• Dashboard • SLO • Monitor • Pingdom • Deadman’s snitch • CircleCI • Environment Variables Terraform Codenize.tools (Barkdog) circleci-env (Internal tool)
Infrastructure as Code in Quipper(2) • SaaS Configuration • Datadog
• Dashboard • SLO • Monitor • Pingdom • Deadman’s snitch • CircleCI • Environment Variables Terraform Codenize.tools (Barkdog) circleci-env (Internal tool)
Infrastructure as Code in Quipper(2) • SaaS Configuration • Datadog
• Dashboard • SLO • Monitor • Pingdom • Deadman’s snitch • CircleCI • Environment Variables Terraform Codenize.tools (Barkdog) circleci-env (Internal tool)
Agenda • Infrastructure as Code in Quipper • Patterns in
Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern • What • Why • Point • Example
Environment Pattern
Environment Pattern Production Resource Staging Resource Staging Code Production Code
Infrastructure as Code - Chapter 9. Patterns for Defining Infrastructure Apply Apply Change Change
Environment Pattern: Why • To minimize blast radius • To
test before releasing to production
Environment Pattern: Point • Don’t Repeat Yourself • Minimize commonality
• Keep it simple stupid • Enforcing, not communize Infrastructure as Code - 9.2.7 Approaches to Sharing Definitions
Environment Pattern: Example services ᵓᴷᴷ hoge-service ᴹ ᵓᴷᴷ production ᴹ
ᴹ ᵓᴷᴷ aurora.tf ᴹ ᴹ ᵓᴷᴷ main.tf ᴹ ᴹ ᵓᴷᴷ provider.tf ᴹ ᴹ ᵓᴷᴷ terraform.tf ᴹ ᴹ ᵓᴷᴷ terraform.tfvars ᴹ ᴹ ᵓᴷᴷ variables.tf ᴹ ᴹ ᵋᴷᴷ versions.tf ᴹ ᵋᴷᴷ staging ᴹ ᵓᴷᴷ aurora.tf ᴹ ᵓᴷᴷ main.tf ᴹ ᵓᴷᴷ provider.tf ᴹ ᵓᴷᴷ terraform.tf ᴹ ᵓᴷᴷ terraform.tfvars ᴹ ᵓᴷᴷ variables.tf ᴹ ᵋᴷᴷ versions.tf ᵋᴷᴷ modules Terraform ansible ᵋᴷᴷ ubuntu1804 ᵓᴷᴷ reverse-proxy-production ᴹ ᵓᴷᴷ goss ᴹ ᵓᴷᴷ group_vars ᴹ ᴹ ᵓᴷᴷ all.yml ᴹ ᴹ ᵓᴷᴷ development.yml ᴹ ᴹ ᵋᴷᴷ staging.yml ᴹ ᵓᴷᴷ hosts-development ᴹ ᵓᴷᴷ hosts-test ᴹ ᵓᴷᴷ roles ᴹ ᴹ ᵋᴷᴷ nginx ᴹ ᴹ ᵓᴷᴷ files ᴹ ᴹ ᵓᴷᴷ tasks ᴹ ᴹ ᵋᴷᴷ templates ᴹ ᵋᴷᴷ site.yml ᵓᴷᴷ reverse-proxy-staging ᵓᴷᴷ common-roles ᵓᴷᴷ datadog ᵓᴷᴷ td-agent Ansible
Scaffold Pattern
Scaffold Pattern Template Input variable Code Generate
Scaffold Pattern: Why • To make self-service easier • Reduce
cognitive load Infrastructure as Code - 9.1.6 Self-Service Environments
Scaffold Pattern: Point • Write a document • Make each
program do one thing well https://en.wikipedia.org/wiki/Unix_philosophy
Scaffold Pattern: Example • Create new application with Kubernetes manifest
• Create new resource with Terraform HCL • Create AWS Aurora resource definition • Create Datadog SLO Definition
Create AWS Aurora resource definition
Backup Pattern
Backup Pattern Code Resource Import Change manually
Backup Pattern Code Resource Import Change manually Apply
Backup Pattern: Why • Easy to change from GUI (especially
SaaS Configuration) • For backup • For greppability • For bulk replacement
Backup Pattern: Point • Sync Interval • If long, it
may overwrite the actual configuration
Backup Pattern: Example • Datadog Dashboard • Datadog Monitor •
Jenkins Configuration (SCM Sync Plugin)
Datadog Dashboard
Let’s Read http://shop.oreilly.com/product/0636920294382.do
Special Thanks • @suzuki-shunsuke • To lead splitting Terraform state
• To improve CI/CD pipeline • SRE graduates • To introduce of Infrastructure as Code • To build workflow with maintainability
Happy (Infrastructure as) Coding
Thank You! chaspy chaspy_ Site Reliability Engineer at Quipper Takeshi
Kondo Terraform-jp