Project TIAMAT
Infrastructure as code
Jesang Yoon

yoonjs2@hbsmith.io



2017.09.27
안녕하세요,
SW 개발자 윤제상입니다.
HB Smith라는 스타트업을 운영하고 있습니다.
블로그: https://medium.com/@yoonjs2
TIAMAT?
TIAMAT [타이마트] (하이마트아님)
Dungeon & Dragons 최종보스
머리가 여러개 달린용
Python으로 클라우드 인프라를 관리하는 도구
백엔드(Backend) 개발자의 삶
IDC 시절엔…
네트워크를 설정합니다.
서버를 사거나 설치합니다.
리눅스를 설치합니다.
여러 스택을 설치합니다.
자 이제 개발해 볼까요?
클라우드 시대엔…
네트워크를 설정합니다.
VM을 띄웁니다.
여러 스택을 설치합니다.
자 이제 개발해 볼까요?
백엔드(Backend) 개발자의 고통
IDC 시절엔…
네트워크를 설정하는데 며칠
서버를 사거나 설치하는데 며칠
리눅스를 설치하는데 몇시간
여러 스택을 설치하는데 몇시간
자 이제 개발해 볼까요? 까지 최소 며칠
클라우드 시대엔…
네트워크를 설정하는데 몇시간
VM을 띄우는데 몇분
여러 스택을 설치하는데 몇시간
자 이제 개발해 볼까요? 까지 최소 수시간
이게 끝이 아님…
개발서버에 누가 손댔어요?
인프라 문서가 없거나 오래됨
인프라 설치한 개발자가 퇴사/연락안됨
저번에 대충 고쳤더니 또 터짐
…
더 나은 방법은 없을까요?
잘하는 사람들에게 배웠습니다.
개발, 검증, 운영으로 환경을 구분하라
=> 프로비저닝(Provisioning)하라
DV QA OP
개발 검증 운영
잘하는 사람들에게 배웠습니다.
인프라를 프로그래밍 해야 한다.
=> 인프라를 코드로 관리해야 한다.
=> 인프라를 자동화 해야 한다.
코드
서버 & 인프라
설정
코드로 관리하면 뭐가 좋아지나요?
3R을 달성할수 있게 됩니다
Repeatable = 반복가능
Reproducible = 재현가능
Reliable = 신뢰가능
3R을 달성할수 있게 됩니다
Repeatable = 언제든 부수고 재건가능
Reproducible = 어느곳 에서든 생성가능
Reliable = 언제든 같은 결과를 보여줌
DV QA OP
개발 검증 운영
코드
Config
개발자 개인별
서버 & 인프라
검증용
서버 & 인프라
Config Config
국가별 운영
서버 & 인프라
AWS 위에선 이 모든게 가능
Primitives
• not derived : original, primary

• assumed as a basis; especially : axiomatic primitive concepts
One of the most important mechanisms we provided
was to offer customers a collection of primitives and
tools, where they could pick and choose their preferred
way to engage with the AWS cloud, instead of only
providing one framework that they are forced to use,
which includes everything and the kitchen sink. This
approach has enabled our customers to become so
successful, that even later generations of AWS services
make use of exactly the same primitive services our
customers have become accustomed to.
Primitives not frameworks
Werner Vogels

CTO - Amazon.com
10 Lessons from 10 Years of Amazon Web Services
어떻게 만들었나요?
인프라를 Template로 찍어낼 수 있게 한다.
완전히 띄우거나 일부만 띄울 수 있게 한다.
완전히 부수거나 일부만 부술 수 있게 한다.
띄운 인프라는 지속적으로 업데이트 한다.
Provisioner
(Johanna)
서버 & 인프라
On Cloud
설정
Template
서버 & 인프라
On AWS
설정
Template
Provisioner
(Johanna)
Subprocess
Provisioner
(Johanna)
설정B
Template
설정A
시스템 B
시스템 A
어떻게 동작하나요?
인프라 구성은 건축과 유사
Build: 네트워크 에서 시작, 어플리케이션 에서 끝
Destroy: 어플리케이션 에서 시작, 네트워크 에서 끝
Provisioner
(Johanna)
설정
Template
Provisioner
(Johanna)
Template
VPC
Subnet
IGW
NAT
GW
Network
Template
Internet
gateway
VPC NAT
gateway
Provisioner
(Johanna)
Template
VPC
Subnet
IGW
NAT
GW
Network
Template
Provisioner
(Johanna)
Template
RDS
Template
EC2
Template
S3
Template
Lambda
Template
EC2
RDS
S3
Lambda
Provisioner
(Johanna)
Template
RDS
EC2
S3
Lambda
RDS
Template
EC2
Template
S3
Template
Lambda
Template
어떤 성과가 있었나요?
경제적인 비용으로 인프라를 운용한다.
고객에게 커스텀 해주고 돈을 번다.
좋은 Provisioning 교본이 된다.
앞으로 개선해야 할 것은?
더 높은 3R의 달성
3R
Repeatable = 언제든 부수고 재건가능
Reproducible = 어느곳 에서든 생성가능
Reliable = 언제든 같은 결과를 보여줌
기타…
문서화가 제대로 안되어 있다.
일부분은 더 자동화가 필요하다.
추상화가 덜되어 있다.
서비스 화가 덜되어 있다.
도와주세요!
이슈, 로드맵
https://github.com/HardBoiledSmith/tiamat
핵심 프로젝트
https://github.com/HardBoiledSmith/johanna
Fork & PR 언제든 환영합니다.
여기계신 분들에게…
HB Smith는 “API 개발자를 위한 API 테스트/모니터링 서비스”를 만들고 있습니다.
Early Bird 고객이 되어주세요!

https://hbsmith.io
HB Smith 페이스북 그룹 좋아요 누르시고

AWS를 위한 DevOps경험 얻어가세요!
https://www.facebook.com/hbsmith.page/
블로그도 있습니다 :)

https://blog.hbsmith.io

감사합니다!

Project TIMAT - infrastructure as code