SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Terraform을 이용한
AWS 기반 대규모 마이크로서비스
인프라 운영
이용욱 책임, 삼성전자
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
• 대규모 마이크로서비스 인프라 구성하기
= 레고 함께 조립하기
• Terraform 모듈 만들기
= 레고 블록 만들기
• Building block
= 단순하고, 확장되고, 단단해야
레고 블록처럼…
https://www.maxpixel.net/Colorful-Play-Children-Lego-Building-Blocks-2285065
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Who am I?
이용욱
삼성전자 / Cloud운영 그룹
uks.lee@samsung.com / uks78n@gmail.com
Dev, DA/DBA, TechOps, DevOps, 이제는 SRE
• Likes: 효율적이고 재활용 가능하면서 단순한 코드
• Dislikes: 단순 작업 2번 이상 반복하기
2012
2014
2015
2016
2017
2018
2019
awspec
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Agenda
IaC를 통한 대규모 마이크로 서비스 인프라 운영
운영을 고려한 Terraform 코드 구조화
Terraform 모듈 코드 테스트
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
마이크로서비스
• 소규모 팀이 관리하는
작은 크기의 서비스
• 다수의 팀이 관리하는
다수의 마이크로서비스
https://github.com/Netflix/vizceral
100+
microservices ~= teams
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
다양한 조직 및 구성원
• 초보자 ~ 전문가
• 폭발 반경(Blast radius) 제한
• 다양한 환경 및 요구사항
• 작업환경
• 네트워크 환경
• 권한 관리
https://www.maxpixel.net/Doll-Amphitheatre-Both-Lego-The-People-The-Per-1044891
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
일관성 유지의 어려움
• 일관된 관리 필요
• 보안 규정 준수
• 이름 규칙, 태그 규칙 등 관리 정책
• 끊임없는 변경
• 마이크로 서비스 생성/삭제
• 마이크로 서비스 구조/연관성 변경
• 담당자 변경
정책 변경?
https://www.maxpixel.net/Vote-Lego-Choice-Staff-Selector-Crowd-Survey-1699137
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
IaC (Infrastructure as Code)
• 인프라 생성, 설정, 관리를 코드를 통해 작업 à 반복 재현성, 이력관리
• 인프라 코드 = 인프라 설정 = 아키텍쳐 문서
• 빠른 공유 및 병렬 작업
Provisioned
Architecture
Desired
Architecture
Terraform
Code
Terraform
Plan/Apply
인프라 운영
= 유지 보수
= 변경 관리
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
용도에 맞는 도구 사용
도구 자원 관리 범위
인프라 관리
• 정적 인프라 자원
• VPC, IAM, …
• ECS/EKS Clusters
Immutable
image 생성
• 이미지 생성에 필요한 모든 설정
Continuous
Delivery
• 배포시 생성되는 동적 인프라 자원
• AutoScalingGroup, LaunchConfig
• 배포 파이프라인 설정
• App 배포 설정(VM/ECS)
K8s 배포 spec. • App 배포 설정(K8s)
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Agenda
IaC를 통한 대규모 마이크로 서비스 인프라 운영
운영을 고려한 Terraform 코드 구조화
Terraform 모듈 코드 테스트
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
관리 범위 쪼개기
• Communication cost
• 담당자 밖에 몰라
• 상호 간섭 최소화
• 문제 발생시 영향 범위
(Blast range) 최소화
• 개인별 필요 권한 최소화
마이크로서비스 단위로 관리
http://minifigpriceguide.com/wordpress/wp-content/uploads/2016/04/Lego-Minifigure-DIsplay-Case-with-Dust-Door-3-Copy.jpg
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
• 환경 별 리소스 차이 최소화
• 동일 코드를
DEV à STG à PROD
환경으로 단계적 승격
• 테스트, 테스트, 테스트
• Fail fast, Fail safe
DEV
STG
PROD
동일 코드 기반의 인프라 환경 구성
https://pixabay.com/pt/photos/stormtrooper-star-wars-lego-2899993/
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
재사용 가능한 공용 모듈
• VPC
• ECS, EKS Cluster
• LoadBalancer
• LB, SecurityGroup, TargetGroup, …
• ServerGroup
• AutoScalingGroup, AutoScalingPolicy,
LaunchConfig, SecurityGroup, IAM, …
1. 일관된 인프라 관리
2. 신규 서비스 추가 용이
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
• Local path
• Github
• Git
• S3
module "consul" {
source = "hashicorp/consul/aws"
version = "0.3.3"
aws_region = "us-east-1"
num_servers = "3"
}
Terraform modules
consul.tf
• 미리 준비해둔 모듈을 이용하여
복잡한 리소스 모음을 손쉽게 구성
source = "./consul"
source = "git@github.com:hashicorp/example.git"
username@example.com/storage.git
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Terraform workspaces
• 분리된 tfstate 공간 제공
• 동일 코드로 다른 세트의 인프라 관리
• Workspace variables / 별도 tfvars 파일
resource "aws_instance" "example" {
tags {
Name = "web - ${terraform.workspace}"
}
# ... other arguments
}
main.tf
.
├── envs
│ ├── dev.tfvars
│ └── stg.tfvars
├── main.tf
├── outputs.tf
├── provider.tf
├── variables.tf
└── remote.tf
$ terraform apply -var-file=./envs/dev.tfvars
숙련자 또는
자동화한
경우만 권장
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Terraform 코드 저장소 폴더 구조 예
• main-repo • 마이크로서비스별 모듈 repo
.
└── terraform
├── account1
│ ├── apne2
│ │ ├── microservice1
│ │ │
│ │ │
│ │ ├── microservice2
│ │ ├── databases
│ │ ├── ecs_cluster
│ │ ├── eks_cluster
│ │ └── vpc
│ ├── usw2
│ └── global
│ └── iam
├── account2
└── tfbackend
.
├── iam.tf
├── main.tf
├── outputs.tf
└── variables.tf
• 공용 리소스의 폴더 분리 관리
• VPC, database, container clusters, …
• 마이크로 서비스 별 분리 관리
• Pluggable하도록 모듈 이용, 버전 관리
• 마이크로 서비스의 모든 리소스 포함 (IAM!!)
source = "git@github.com:example/microservice1.git?ref=v0.1.0"
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
• microservice1-repo
.
├── iam.tf
├── s3.tf
├── servergroup.tf
├── outputs.tf
└── variables.tf
마이크로서비스 리소스
…
완전 분산형 저장소 구조
• 환경별 코드 관리
• git branch/tag 활용
• 환경별 Terraform state 관리
• Terraform workspace 활용
• Terraform apply 자동화!!
• Terraform enterprise
• Atlantis
• CI tools
Remote state 참조
모듈
사용
• vpc-module-repo
.
├── vpc.tf
├── subnets.tf
├── outputs.tf
└── variables.tf
공통 모듈
…
• vpc-repo
.
├── vpc.tf
├── outputs.tf
└── variables.tf
공용 리소스
…
모듈 사용
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Agenda
IaC를 통한 대규모 마이크로 서비스 인프라 운영
운영을 고려한 Terraform 코드 구조화
Terraform 모듈 코드 테스트
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
v0.2
Terraform 모듈 코드도 테스트?
vpc
loadbalancer
servergroup
v0.10
• ap-northeast-2
v0.11
• us-east-2
v0.2
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Terraform 코드 테스트
• Linting
• 정적 코드 분석을 통해 잠재적 버그 리포트
• terraform fmt
• terraform validate
• Dry-run
• terraform plan
• 단위/통합 테스트
• TDD (Test Driven Development)
• kitchen-terraform
• InSpec, awspec, terratest
• 보안 준수 검수
• terraform-compliance
• Inspec-Iggy
우선
Terraform 모듈
단위 테스트 부터!!
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
KitchenCI
• https://kitchen.ci
• 다양한 테스트 환경 지원을 위한 Plugin 구조
• Driver
• 테스팅을 위한 인프라 구성
• Ec2, DigitalOcean, Vagrant
• Docker, openstack, terraform
• Provisioner
• 테스팅 인프라에 설정 적용
• Ansible, chef, puppet, shell
• Verifier
• 실제 테스트 suite 수행
• Shell, InSpec, ServerSpec
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Infrastructure testing frameworks
• InSpec
• https://www.inspec.io/
• RSpec 기반 Auditing and Testing framework
• Support
• OS resources / AWS / Azure / GCP
• awspec
• https://github.com/k1LoW/awspec
• AWS 리소스를 위한 RSpec 테스트 툴
• terratest
• https://github.com/gruntwork-io/terratest
• gruntwork에서 만든 인프라 테스트용 Go 라이브러리
awspec
terratest
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
InSpec vs. awspec vs. terratest
InSpec awspec terratest
대상 리소스
• OS 리소스
• 인프라 리소스
(AWS/GCP/Azure)
• 인프라 리소스
(AWS only)
• Go 라이브러리로 접근
가능한 모든 리소스
• 인프라 리소스
(AWS, GCP)
• K8s, Helm chart
• Packer, docker
• …
AWS 리소스 속성 coverage • 부족 • 충분 • 충분
테스트 작성 언어 • Ruby (Rspec기반) • Ruby (Rspec기반) • Go
테스트 작성 난이도 • 쉬움 • 쉬움 • 어려움
KitchenCI 통합
• Kitchen-inspec
• Kitchen-terraform
• Kitchen-verifier-
awspec
• 필요 없음
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Terraform module testing pipeline
• Terraform module에 대한 단위 테스트
• 자동화된 테스트 환경 생성, 검증 및 삭제
• 다양한 입력 조건에 대한 기능 검증
• 다양한 환경에 대한 사전 테스트
• Terraform version
• Cloud provider region
terraform
코드 변경
Kitchen-terraform (driver plugin)
awspec (verifier plugin)
(verifier plugin)
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
다양한 Terraform provider
• Github
• Datadog
• Grafana
• PagerDuty
• MySQL
• PostgreSQL
• PowerDNS
…
• Community providers
• Spinnaker
• Kafka
• Keycloak
• Kibana
• Kong
• Okta
…
https://www.terraform.io/docs/providers/ https://www.terraform.io/docs/providers/type/community-index.html
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Terraform v0.12 개선사항
https://www.hashicorp.com/blog/terraform-0-1-2-preview
더 유연하고 이해하기 쉬운
모듈 코드 작성에 도움
© 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
• 대규모 마이크로서비스 인프라 구성 및 운영
ü Infrastructure as Code 적용하여 함께 레고 조립하듯이
ü 레고 블록과 같이 Terraform 코드 모듈화
ü 단위 테스트로 모듈 품질 확보
마무리하며
https://www.maxpixel.net/Colorful-Play-Children-Lego-Building-Blocks-2285065

Más contenido relacionado

La actualidad más candente

AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018 AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
Amazon Web Services Korea
 
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 

La actualidad más candente (20)

ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
 
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션  - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션  - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
 
세션 3: IT 담당자를 위한 Cloud 로의 전환
세션 3: IT 담당자를 위한 Cloud 로의 전환세션 3: IT 담당자를 위한 Cloud 로의 전환
세션 3: IT 담당자를 위한 Cloud 로의 전환
 
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
 
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
 
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive [2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
 
Amazon VPC와 ELB/Direct Connect/VPN 알아보기 - 김세준, AWS 솔루션즈 아키텍트
Amazon VPC와 ELB/Direct Connect/VPN 알아보기 - 김세준, AWS 솔루션즈 아키텍트Amazon VPC와 ELB/Direct Connect/VPN 알아보기 - 김세준, AWS 솔루션즈 아키텍트
Amazon VPC와 ELB/Direct Connect/VPN 알아보기 - 김세준, AWS 솔루션즈 아키텍트
 
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
 
AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기
 
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
 
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015 AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
 
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
 
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018 AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
AWS 클라우드 핵심 서비스로 클라우드 기반 아키텍처 빠르게 구성하기 - 문종민 솔루션즈 아키텍트, AWS :: AWS Summit Seo...
AWS 클라우드 핵심 서비스로 클라우드 기반 아키텍처 빠르게 구성하기 - 문종민 솔루션즈 아키텍트, AWS :: AWS Summit Seo...AWS 클라우드 핵심 서비스로 클라우드 기반 아키텍처 빠르게 구성하기 - 문종민 솔루션즈 아키텍트, AWS :: AWS Summit Seo...
AWS 클라우드 핵심 서비스로 클라우드 기반 아키텍처 빠르게 구성하기 - 문종민 솔루션즈 아키텍트, AWS :: AWS Summit Seo...
 
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
 
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나
AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나
AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나
 

Similar a Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul 2019

Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
uEngine Solutions
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
Amazon Web Services Korea
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
Amazon Web Services Korea
 

Similar a Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul 2019 (20)

[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
 
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 - 박성훈 NEOWIZ 팀장,...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 -  박성훈 NEOWIZ 팀장,...[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 -  박성훈 NEOWIZ 팀장,...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 - 박성훈 NEOWIZ 팀장,...
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 
AWS Builders Online Series | EC2와 Lambda로 AWS 시작하기 - 조용진, AWS 솔루션즈 아키텍트
AWS Builders Online Series | EC2와 Lambda로 AWS 시작하기 - 조용진, AWS 솔루션즈 아키텍트AWS Builders Online Series | EC2와 Lambda로 AWS 시작하기 - 조용진, AWS 솔루션즈 아키텍트
AWS Builders Online Series | EC2와 Lambda로 AWS 시작하기 - 조용진, AWS 솔루션즈 아키텍트
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
국내 미디어 고객사의 AWS 활용 사례 - POOQ서비스 그리고 마이크로서비스 아키텍처, 콘텐츠연합플랫폼 - 박명순부장, 콘텐츠연합플랫폼 ...
국내 미디어 고객사의 AWS 활용 사례 - POOQ서비스 그리고 마이크로서비스 아키텍처, 콘텐츠연합플랫폼 - 박명순부장, 콘텐츠연합플랫폼 ...국내 미디어 고객사의 AWS 활용 사례 - POOQ서비스 그리고 마이크로서비스 아키텍처, 콘텐츠연합플랫폼 - 박명순부장, 콘텐츠연합플랫폼 ...
국내 미디어 고객사의 AWS 활용 사례 - POOQ서비스 그리고 마이크로서비스 아키텍처, 콘텐츠연합플랫폼 - 박명순부장, 콘텐츠연합플랫폼 ...
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
 
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
 
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
 
AWS re:Invent 2018 콘테이너 신규 서비스 기능 살펴보기 - 윤석찬, AWS 테크에반젤리스트
AWS re:Invent 2018 콘테이너 신규 서비스 기능 살펴보기 - 윤석찬, AWS 테크에반젤리스트AWS re:Invent 2018 콘테이너 신규 서비스 기능 살펴보기 - 윤석찬, AWS 테크에반젤리스트
AWS re:Invent 2018 콘테이너 신규 서비스 기능 살펴보기 - 윤석찬, AWS 테크에반젤리스트
 
마이크로 서비스를 위한 AWS의 다양한 컨테이너 옵션 l 이창수 솔루션즈 아키텍트
마이크로 서비스를 위한 AWS의 다양한 컨테이너 옵션 l 이창수 솔루션즈 아키텍트마이크로 서비스를 위한 AWS의 다양한 컨테이너 옵션 l 이창수 솔루션즈 아키텍트
마이크로 서비스를 위한 AWS의 다양한 컨테이너 옵션 l 이창수 솔루션즈 아키텍트
 

Más de Amazon Web Services Korea

Más de Amazon Web Services Korea (20)

AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 2AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 2
 
AWS Modern Infra with Storage Roadshow 2023 - Day 1
AWS Modern Infra with Storage Roadshow 2023 - Day 1AWS Modern Infra with Storage Roadshow 2023 - Day 1
AWS Modern Infra with Storage Roadshow 2023 - Day 1
 
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
 
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
 
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
 
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
 
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
 
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
 
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
 
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
 
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
 
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
 
From Insights to Action, How to build and maintain a Data Driven Organization...
From Insights to Action, How to build and maintain a Data Driven Organization...From Insights to Action, How to build and maintain a Data Driven Organization...
From Insights to Action, How to build and maintain a Data Driven Organization...
 
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
 
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
 
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
 
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
 
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
 
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
 
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
 

Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul 2019

  • 1. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Terraform을 이용한 AWS 기반 대규모 마이크로서비스 인프라 운영 이용욱 책임, 삼성전자
  • 2. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. • 대규모 마이크로서비스 인프라 구성하기 = 레고 함께 조립하기 • Terraform 모듈 만들기 = 레고 블록 만들기 • Building block = 단순하고, 확장되고, 단단해야 레고 블록처럼… https://www.maxpixel.net/Colorful-Play-Children-Lego-Building-Blocks-2285065
  • 3. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Who am I? 이용욱 삼성전자 / Cloud운영 그룹 uks.lee@samsung.com / uks78n@gmail.com Dev, DA/DBA, TechOps, DevOps, 이제는 SRE • Likes: 효율적이고 재활용 가능하면서 단순한 코드 • Dislikes: 단순 작업 2번 이상 반복하기 2012 2014 2015 2016 2017 2018 2019 awspec
  • 4. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Agenda IaC를 통한 대규모 마이크로 서비스 인프라 운영 운영을 고려한 Terraform 코드 구조화 Terraform 모듈 코드 테스트
  • 5. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. 마이크로서비스 • 소규모 팀이 관리하는 작은 크기의 서비스 • 다수의 팀이 관리하는 다수의 마이크로서비스 https://github.com/Netflix/vizceral 100+ microservices ~= teams
  • 6. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. 다양한 조직 및 구성원 • 초보자 ~ 전문가 • 폭발 반경(Blast radius) 제한 • 다양한 환경 및 요구사항 • 작업환경 • 네트워크 환경 • 권한 관리 https://www.maxpixel.net/Doll-Amphitheatre-Both-Lego-The-People-The-Per-1044891
  • 7. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. 일관성 유지의 어려움 • 일관된 관리 필요 • 보안 규정 준수 • 이름 규칙, 태그 규칙 등 관리 정책 • 끊임없는 변경 • 마이크로 서비스 생성/삭제 • 마이크로 서비스 구조/연관성 변경 • 담당자 변경 정책 변경? https://www.maxpixel.net/Vote-Lego-Choice-Staff-Selector-Crowd-Survey-1699137
  • 8. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. IaC (Infrastructure as Code) • 인프라 생성, 설정, 관리를 코드를 통해 작업 à 반복 재현성, 이력관리 • 인프라 코드 = 인프라 설정 = 아키텍쳐 문서 • 빠른 공유 및 병렬 작업 Provisioned Architecture Desired Architecture Terraform Code Terraform Plan/Apply 인프라 운영 = 유지 보수 = 변경 관리
  • 9. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. 용도에 맞는 도구 사용 도구 자원 관리 범위 인프라 관리 • 정적 인프라 자원 • VPC, IAM, … • ECS/EKS Clusters Immutable image 생성 • 이미지 생성에 필요한 모든 설정 Continuous Delivery • 배포시 생성되는 동적 인프라 자원 • AutoScalingGroup, LaunchConfig • 배포 파이프라인 설정 • App 배포 설정(VM/ECS) K8s 배포 spec. • App 배포 설정(K8s)
  • 10. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Agenda IaC를 통한 대규모 마이크로 서비스 인프라 운영 운영을 고려한 Terraform 코드 구조화 Terraform 모듈 코드 테스트
  • 11. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. 관리 범위 쪼개기 • Communication cost • 담당자 밖에 몰라 • 상호 간섭 최소화 • 문제 발생시 영향 범위 (Blast range) 최소화 • 개인별 필요 권한 최소화 마이크로서비스 단위로 관리 http://minifigpriceguide.com/wordpress/wp-content/uploads/2016/04/Lego-Minifigure-DIsplay-Case-with-Dust-Door-3-Copy.jpg
  • 12. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. • 환경 별 리소스 차이 최소화 • 동일 코드를 DEV à STG à PROD 환경으로 단계적 승격 • 테스트, 테스트, 테스트 • Fail fast, Fail safe DEV STG PROD 동일 코드 기반의 인프라 환경 구성 https://pixabay.com/pt/photos/stormtrooper-star-wars-lego-2899993/
  • 13. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. 재사용 가능한 공용 모듈 • VPC • ECS, EKS Cluster • LoadBalancer • LB, SecurityGroup, TargetGroup, … • ServerGroup • AutoScalingGroup, AutoScalingPolicy, LaunchConfig, SecurityGroup, IAM, … 1. 일관된 인프라 관리 2. 신규 서비스 추가 용이
  • 14. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. • Local path • Github • Git • S3 module "consul" { source = "hashicorp/consul/aws" version = "0.3.3" aws_region = "us-east-1" num_servers = "3" } Terraform modules consul.tf • 미리 준비해둔 모듈을 이용하여 복잡한 리소스 모음을 손쉽게 구성 source = "./consul" source = "git@github.com:hashicorp/example.git" username@example.com/storage.git
  • 15. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Terraform workspaces • 분리된 tfstate 공간 제공 • 동일 코드로 다른 세트의 인프라 관리 • Workspace variables / 별도 tfvars 파일 resource "aws_instance" "example" { tags { Name = "web - ${terraform.workspace}" } # ... other arguments } main.tf . ├── envs │ ├── dev.tfvars │ └── stg.tfvars ├── main.tf ├── outputs.tf ├── provider.tf ├── variables.tf └── remote.tf $ terraform apply -var-file=./envs/dev.tfvars 숙련자 또는 자동화한 경우만 권장
  • 16. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Terraform 코드 저장소 폴더 구조 예 • main-repo • 마이크로서비스별 모듈 repo . └── terraform ├── account1 │ ├── apne2 │ │ ├── microservice1 │ │ │ │ │ │ │ │ ├── microservice2 │ │ ├── databases │ │ ├── ecs_cluster │ │ ├── eks_cluster │ │ └── vpc │ ├── usw2 │ └── global │ └── iam ├── account2 └── tfbackend . ├── iam.tf ├── main.tf ├── outputs.tf └── variables.tf • 공용 리소스의 폴더 분리 관리 • VPC, database, container clusters, … • 마이크로 서비스 별 분리 관리 • Pluggable하도록 모듈 이용, 버전 관리 • 마이크로 서비스의 모든 리소스 포함 (IAM!!) source = "git@github.com:example/microservice1.git?ref=v0.1.0"
  • 17. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. • microservice1-repo . ├── iam.tf ├── s3.tf ├── servergroup.tf ├── outputs.tf └── variables.tf 마이크로서비스 리소스 … 완전 분산형 저장소 구조 • 환경별 코드 관리 • git branch/tag 활용 • 환경별 Terraform state 관리 • Terraform workspace 활용 • Terraform apply 자동화!! • Terraform enterprise • Atlantis • CI tools Remote state 참조 모듈 사용 • vpc-module-repo . ├── vpc.tf ├── subnets.tf ├── outputs.tf └── variables.tf 공통 모듈 … • vpc-repo . ├── vpc.tf ├── outputs.tf └── variables.tf 공용 리소스 … 모듈 사용
  • 18. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Agenda IaC를 통한 대규모 마이크로 서비스 인프라 운영 운영을 고려한 Terraform 코드 구조화 Terraform 모듈 코드 테스트
  • 19. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. v0.2 Terraform 모듈 코드도 테스트? vpc loadbalancer servergroup v0.10 • ap-northeast-2 v0.11 • us-east-2 v0.2
  • 20. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Terraform 코드 테스트 • Linting • 정적 코드 분석을 통해 잠재적 버그 리포트 • terraform fmt • terraform validate • Dry-run • terraform plan • 단위/통합 테스트 • TDD (Test Driven Development) • kitchen-terraform • InSpec, awspec, terratest • 보안 준수 검수 • terraform-compliance • Inspec-Iggy 우선 Terraform 모듈 단위 테스트 부터!!
  • 21. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. KitchenCI • https://kitchen.ci • 다양한 테스트 환경 지원을 위한 Plugin 구조 • Driver • 테스팅을 위한 인프라 구성 • Ec2, DigitalOcean, Vagrant • Docker, openstack, terraform • Provisioner • 테스팅 인프라에 설정 적용 • Ansible, chef, puppet, shell • Verifier • 실제 테스트 suite 수행 • Shell, InSpec, ServerSpec
  • 22. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Infrastructure testing frameworks • InSpec • https://www.inspec.io/ • RSpec 기반 Auditing and Testing framework • Support • OS resources / AWS / Azure / GCP • awspec • https://github.com/k1LoW/awspec • AWS 리소스를 위한 RSpec 테스트 툴 • terratest • https://github.com/gruntwork-io/terratest • gruntwork에서 만든 인프라 테스트용 Go 라이브러리 awspec terratest
  • 23. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. InSpec vs. awspec vs. terratest InSpec awspec terratest 대상 리소스 • OS 리소스 • 인프라 리소스 (AWS/GCP/Azure) • 인프라 리소스 (AWS only) • Go 라이브러리로 접근 가능한 모든 리소스 • 인프라 리소스 (AWS, GCP) • K8s, Helm chart • Packer, docker • … AWS 리소스 속성 coverage • 부족 • 충분 • 충분 테스트 작성 언어 • Ruby (Rspec기반) • Ruby (Rspec기반) • Go 테스트 작성 난이도 • 쉬움 • 쉬움 • 어려움 KitchenCI 통합 • Kitchen-inspec • Kitchen-terraform • Kitchen-verifier- awspec • 필요 없음
  • 24. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Terraform module testing pipeline • Terraform module에 대한 단위 테스트 • 자동화된 테스트 환경 생성, 검증 및 삭제 • 다양한 입력 조건에 대한 기능 검증 • 다양한 환경에 대한 사전 테스트 • Terraform version • Cloud provider region terraform 코드 변경 Kitchen-terraform (driver plugin) awspec (verifier plugin) (verifier plugin)
  • 25. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. 다양한 Terraform provider • Github • Datadog • Grafana • PagerDuty • MySQL • PostgreSQL • PowerDNS … • Community providers • Spinnaker • Kafka • Keycloak • Kibana • Kong • Okta … https://www.terraform.io/docs/providers/ https://www.terraform.io/docs/providers/type/community-index.html
  • 26. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Terraform v0.12 개선사항 https://www.hashicorp.com/blog/terraform-0-1-2-preview 더 유연하고 이해하기 쉬운 모듈 코드 작성에 도움
  • 27. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. • 대규모 마이크로서비스 인프라 구성 및 운영 ü Infrastructure as Code 적용하여 함께 레고 조립하듯이 ü 레고 블록과 같이 Terraform 코드 모듈화 ü 단위 테스트로 모듈 품질 확보 마무리하며 https://www.maxpixel.net/Colorful-Play-Children-Lego-Building-Blocks-2285065