2. 발표자 소개
• 한종원
• Python과 Cloud Infra, Lean/Agile 방법론 그리고 애플의 제품을 사랑.
• 2012년 석사 학위를 마치고, startup을 시작
• '의미가 있는 일을, 올바르게 하고 싶다.’
• 경력
• (현) DevOps 전문 스타트업 ‘HB Smith’ 대표
• 택시 O2O 서비스 스타트업 ‘Kanizsa Lab’의 backend server / infra devops 담당
• Cloud computing 전문 스타트업 'A2 company' co-founder (‘KINX’에 인수합병)
• NEXON 'MapleStory 국내 Live Team'에서 DBA, SA로 근무 (산업 기능 요원)
2
https://www.linkedin.com/in/addnull/
https://hbsmith.io
3. Contents
• 발표 대상
- AWS 3개 이상의 서비스(예: EC2, RDS, S3 등)를 써본 분
- Backend server application 개발자 (프로그래머)
- Server infra(예: Server Rack, Netwok Switch, RAID, NAS 등)에 대한 경험과
이해가 있는 분
• 발표 목차
- ‘hbsmith’ 서비스의 현재 Server Infra 구성
- IaC 란 무엇인가? 왜 필요한가?
- Project ‘johanna’ 소개
- IaC 장단점
3
(예상 발표 시간: 40분)
4. ‘hbsmith’ 서비스의 현재 Server Infra 구성
4
Business Scenario 장애 모니터링 ‘hbsmith’
5. ‘hbsmith’ 서비스의 현재 Server Infra 구성
• Business Scenario 장애 모니터링 ‘hbsmith’
5
6. ‘hbsmith’ 서비스의 현재 Server Infra 구성
• Business Scenario 장애 모니터링 ‘hbsmith’
6
10. ‘hbsmith’ 서비스의 현재 Server Infra 구성
• 1 phase 1 AWS account (consolidated billing)
10
11. ‘hbsmith’ 서비스의 현재 Server Infra 구성
• 모든 computing tier(EC2, Lambda 등)는
매일 “blue-green deployment”로 교체 (daily continuous deployment)
11
12. ‘hbsmith’ 서비스의 현재 Server Infra 구성
• 정리
• 다양한 AWS 서비스들을 사용
• 각 서비스 마다 고유의 config 가 존재
• DV, QA, OP 로 3단계 phase 존재
• ‘phase’ 마다 AWS account 가 별도로 존재
• ‘daily continuous deployment’
12
이걸 손으로 관리?
14. IaC 란 무엇인가? 왜 필요한가?
• “사람의 기억과 손은 믿을 수 없다”
• DevOps 개발팀이 겪는 3R problem
• Repeatability
• Reproducibility
• Reliability
14
“내 개발 환경에서는 문제없었는데…”
“어제까지 문제없었는데…”
“실행하면 가끔씩 다른 결과가 나오네…”
15. IaC 란 무엇인가? 왜 필요한가?
• 다수의 개발자로 이뤄진 DevOps 개발팀 위해 언제, 어디서나, 누구나 동일한 결
과가 나오는 실행 가능한 방법이 필요
• 즉, 모든 server infra, application의 config, provisioning 과정을 문서가 아닌
code로 관리
15
16. IaC 란 무엇인가? 왜 필요한가?
• IaC (Infrastructure as Code)란?
IT system 관리를 모두 code화 시킨다는 아이디어
• 모든 것이 “실행 가능한 code”이므로 3R problem 해결
16
config
tool
(IaaS와 헷갈릴 수 있으니 조심)
(사람이 아닌 기계가 대신 실행할 수 있음)
17. IaC 란 무엇인가? 왜 필요한가?
• EC2 서버 1EA 생성도 모두 자동화 (Python script)
17
19. Project ‘johanna’ 소개
• ‘johanna’는 AWS CLI 기반으로 AWS infra 전체 또는 일부를 provisioning, de-
provisioning 할 수 있는 CLI
• 100% Python3 script 로 작성되어 있으며 OSS 로 공개 개발 (since 2016)
19
https://github.com/HardBoiledSmith/johanna/
30. IaC 장단점
• 지난 5년 넘게 IaC를 하면서 느낀 장단점
• 장점
- 3R problem 해결 (새로 입사한 개발자에게 10분만에 개발 환경 전파 가능)
- 누구도 관심없고 읽어보지 않는 문서를 위한 문서화 작업이 없어짐
- 자동화 그리고 자동화 (coding과 code review 외에는 모두 자동화)
- daily continuous deployment 적용 가능
(모든 computing tier 서버 running time이 최대 24시간)
30
‘disk 공간 부족 문제, memory leak 문제는 이제 잊어주세요.’
31. IaC 장단점
• 단점
- 결국 이것도 또 하나의 개발 프로젝트
- “꼭 필요한가?”라는 내부 고객의 질문에 답을 해야함
- IaC 유지 보수하는 비용(돈과 시간)을 들여서 더 득이 되는가? (ROI)
- 제대로 해본 사람이 적다.
31
<- IaC가 더 커질 수 있음
<- 본 프로젝트는 요 정도 인데