Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Patterns In Infrastructure as Code

Patterns In Infrastructure as Code

Avatar for Takeshi Kondo

Takeshi Kondo

April 24, 2020
Tweet

More Decks by Takeshi Kondo

Other Decks in Technology

Transcript

  1. Agenda • Infrastructure as Code in Quipper • Patterns in

    Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern
  2. Agenda • Infrastructure as Code in Quipper • Patterns in

    Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern • What • Why • Point • Example
  3. Agenda • Infrastructure as Code in Quipper • Patterns in

    Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern
  4. Infrastructure as Code in Quipper (1) • Infrastructure / Cloud

    (AWS) • Terraform • Codenize.tools (Miam, Roadworker) • Application Platform (Kubernetes) • Kube-aws • Server Provisioning • Ansible
  5. Infrastructure as Code in Quipper (2) • SaaS Configuration •

    Datadog • Dashboard • SLO • Monitor • Pingdom • Deadman’s snitch • CircleCI • Environment Variables
  6. 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)
  7. 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)
  8. 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)
  9. Agenda • Infrastructure as Code in Quipper • Patterns in

    Infrastructure as Code 1. Environment Pattern 2. Scaffold Pattern 3. Backup Pattern • What • Why • Point • Example
  10. Environment Pattern Production Resource Staging Resource Staging Code Production Code

    Infrastructure as Code - Chapter 9. Patterns for Defining Infrastructure Apply Apply Change Change
  11. 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
  12. 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
  13. Scaffold Pattern: Why • To make self-service easier • Reduce

    cognitive load Infrastructure as Code - 9.1.6 Self-Service Environments
  14. Scaffold Pattern: Point • Write a document • Make each

    program do one thing well https://en.wikipedia.org/wiki/Unix_philosophy
  15. Scaffold Pattern: Example • Create new application with Kubernetes manifest

    • Create new resource with Terraform HCL • Create AWS Aurora resource definition • Create Datadog SLO Definition
  16. Backup Pattern: Why • Easy to change from GUI (especially

    SaaS Configuration) • For backup • For greppability • For bulk replacement
  17. Backup Pattern: Point • Sync Interval • If long, it

    may overwrite the actual configuration
  18. 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