TIAMAT : Python으로 만드는
AWS Provisioning Tool
윤제상
yoonjs2@hbsmith.io
HB Smith Inc.
2017.8.5
안녕하세요,
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
국가별 운영
서버 & 인프라
왜 파이썬으로 만들었나요?
처음엔 Bash로 짰었습니다…
수천라인 이상의 Bash 코드
= 가독성이 너무 나쁨
= 디버깅은 기대도 할수 없음
= 복잡한 로직 구현이 어려움
점점 더 유지보수가 어렵더라…
아…
결국 Bash를 버리고 Python으로 재개발
Python으로 바꿨더니 이런 장점이!
= 제대로 된 프로그래밍 언어의 모든 장점
= AWS 클라우드와 최고의 궁합
= 저사양 1CPU, 512RAM에도 운영가능
= 강력한 문자열 처리
= 쉬운 모듈화
= 보장된 안정성과 많은 자료 ㅋㅋㅋ
어떻게 만들었나요?
인프라를 Template로 찍어낼 수 있게 한다.
완전히 띄우거나 일부만 띄울 수 있게 한다.
완전히 부수거나 일부만 부술 수 있게 한다.
띄운 인프라는 지속적으로 업데이트 한다.
Provisioner
(Johanna)
서버 & 인프라
On Cloud
설정
Template
서버 & 인프라
On AWS
설정
Template
Provisioner
(Johanna)
Subprocess
Provisioner
(Johanna)
Template
VPC
Subnet
IGW
NAT
GW
Network
Template
Internet
gateway
VPC NAT
gateway
Provisioner
(Johanna)
Template
EC2
RDS
S3
Lambda
EC2
Template
RDS
Template
S3
Template
Lambda
Template
Provisioner
(Johanna)
설정
Template
Provisioner
(Johanna)
설정B
Template
설정A
어떤 성과가 있었나요?
경제적인 비용으로 인프라를 운용한다.
고객에게 커스텀 해주고 돈을 번다.
좋은 Provisioning 교본이 된다.
앞으로 개선해야 할 것은?
문서화가 제대로 안되어 있다.
일부분은 더 자동화가 필요하다.
추상화가 덜되어 있다.
서비스 화가 덜되어 있다.
도와주세요!
이슈, 로드맵
https://github.com/HardBoiledSmith/tiamat
핵심 프로젝트
https://github.com/HardBoiledSmith/johanna
Fork & PR 언제든 환영합니다.
여기계신 분들에게…
HB Smith는 Python을 이용하여 

API 개발자를 위한 API 테스트/모니터링 서비스를 만들고 있습
니다.
아래 링크로 신청 부탁드려요!
무료계정을 드립니다!
http://bit.ly/2w6nNpG
OST 운영중입니다.
“#스타트업 #파이썬 #서버 #고민나눠요” 에서 만나요!
12일 오후 2시 208A PSF룸 입니다.
감사합니다!

Tiamat - Python으로 만드는 AWS Provisioning Tool