발표자 소개
• 한종원
•Python과 Cloud Infra, Lean/Agile 방법론 그리고 애플의 제품을 사랑.
• 2012년 석사 학위를 마치고, startup을 시작
• '의미가 있는 일을, 올바르게 하고 싶다.’
• 경력
• (현) DevOps 전문 스타트업 ‘HBsmith’ 대표
• 택시 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
• 발표 대상
-Infra, backend 관련 legacy 해결법을 찾는 분
- Public cloud 를 적극적으로 활용하는 또는 하고 싶은 분
- 개발 관련 밤샘 토론을 즐기는 분
3
(예상 토론 시간: 30분)
4.
Zombie와 Legacy 특징비교
4
🧟🧟
Zombie Legacy
시체인데 돌아다님 동작하긴 하는데 어떻게 동작하는지 잘 모름
잘 안 죽음 버그 수정이나 기능 추가가 힘듦
죽었다고 생각했는데, 다시 움직임 버그를 지난 번에 고쳤는데, 다시 문제가 발생함
전염성이 있음 전파성이 있음
도시와 문명을 파괴함 개발팀, 개발자의 멘탈을 파괴하는 야근을 발생함
나에게 Legacy란?
• 재현가능하지 않은 모든 것
• "디버깅 작업은 '인지된 도전과 인지된 기술 사이의 경기' (..중략..) 발생한 문제를
재현할 수 있다면 반드시 해결할 수 있다.”, Effective Debugging
• (가설) 그럼 계속 재현 가능하도록 유지하면 어떨까?
6
RULE #1 여러번 반복 실행
• 모든 computing tier(EC2, Lambda 등)는
매일 “blue-green deployment”로 교체 (daily continuous deployment)
26
27.
RULE #1 여러번 반복 실행
• 매일 정해진 시간에
provisioning / deprovisioning 을 반복
27
28.
RULE #1 여러번 반복 실행
• 반복의 장점
• 불필요한 과정, 잘못된 과정을 좀 더 빨리 찾아내 수정할 기회가 생긴다.
(예: 오래되어 배포 중단된 3rd party library 문제)
• 반복할 수 있다는 건, 재현할 가능성이 높다는 의미
(‘반복 가능함’과 '재현 가능함’은 다른 의미)
28
RULE #2 IaC와자동화
• “사람의 기억과 손은 믿을 수 없다”
• DevOps 개발팀이 겪는 3R problem
• Repeatability
• Reproducibility
• Reliability
30
“내 개발 환경에서는 문제없었는데…”
“어제까지 문제없었는데…”
“실행하면 가끔씩 다른 결과가 나오네…”
31.
RULE #2 IaC와자동화
• 다수의 개발자로 이뤄진 DevOps 개발팀 위해 언제, 어디서나, 누구나 동일한 결
과가 나오는 실행 가능한 방법이 필요
• 즉, 모든 server infra, application의 config, provisioning 과정을 문서가 아닌
code로 관리
31
(IaC: Infrastructure as Code)
32.
RULE #2 IaC와자동화
• IaC (Infrastructure as Code)란?
IT system 관리를 모두 code화 시킨다는 아이디어
• 모든 것이 “실행 가능한 code”이므로 3R problem 해결
32
config
tool
(IaaS와 헷갈릴 수 있으니 조심)
(사람이 아닌 기계가 대신 실행할 수 있음)
33.
RULE #2 IaC와자동화
• EC2 서버 1EA 생성도 모두 자동화 (Python script)
33
34.
RULE #2 IaC와자동화
• ‘johanna’는 AWS CLI 기반으로 AWS infra 전체 또는 일부를 provisioning, de-
provisioning 할 수 있는 CLI
• 100% Python3 script 로 작성되어 있으며 OSS 로 공개 개발 (since 2016)
34
https://github.com/HardBoiledSmith/johanna/
35.
RULE #2 IaC와자동화
• IaC의 단점
- 결국 이것도 또 하나의 개발 프로젝트
- “꼭 필요한가?”라는 내부 고객의 질문에 답을 해야함
- IaC 유지 보수하는 비용(돈과 시간)을 들여서 더 득이 되는가? (ROI)
- 제대로 해본 사람이 적다.
35
<- IaC가 더 커질 수 있음
<- 본 프로젝트는 요 정도 인데
36.
RULE #3 Fullmanaged service 사용
36
계속 재현 가능하기 위한 개발 규칙들
37.
RULE #3 Fullmanaged service 사용
• Cloud 인프라 Abstraction level
• SaaS: Software 통채로 대여
• PaaS: Platform 까지 대여
• IaaS: Infrastructure만 대여
• On-Premises: Cloud 안 씁니다..
37
이미지 출처
http://www.hostingadvice.com/how-to/iaas-vs-paas-vs-saas/
38.
RULE #3 Fullmanaged service 사용
• ‘EC2에 DBMS를 설치하지 않고, 왜 RDS를 왜 쓰나요?'
• ‘EC2에 DBMS를 설치해서 쓰는게 더 싸지 않나요?”
38
이미지 출처
https://aws.amazon.com/blogs/database/part-1-role-of-the-dba-when-
moving-to-amazon-rds-responsibilities/
-> Platform 보다는 Application(business logic)에 더 집중할 수 있음
-> IT 기업에서 가장 비싼 자원은 개발자의 시간
-> 즉, legacy 가 될만한 요소
들을 알아서 관리해줌
39.
RULE #3 Fullmanaged service 사용
• (잠깐! PPL 입니다.) 인공지능 QA 자동화 서비스 'HBsmith'
39
실제 고객사 서비스의 사용자처럼 동작하는
‘hbsmith’ bot을 작성해서 QA 업무를 대체함
https://hbsmith.io
40.
RULE #3 Fullmanaged service 사용
• (잠깐! PPL 입니다.) 인공지능 QA 자동화 서비스 'HBsmith'
40
(실제 서비스 제공 예시)
https://hbsmith.io