SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
HBSmith에서는 이렇게 AWS IaC로 배포한다.
8. Nov. 2018
jongwon.han@hbsmith.io
(AWS 스터디 모임)
Repeatability, Reproducibility, Reliability
1
발표자 소개
• 한종원
• 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
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분)
‘hbsmith’ 서비스의 현재 Server Infra 구성
4
Business Scenario 장애 모니터링 ‘hbsmith’
‘hbsmith’ 서비스의 현재 Server Infra 구성
• Business Scenario 장애 모니터링 ‘hbsmith’
5
‘hbsmith’ 서비스의 현재 Server Infra 구성
• Business Scenario 장애 모니터링 ‘hbsmith’
6
‘hbsmith’ 서비스의 현재 Server Infra 구성
• 사용 중인 AWS 서비스들
7
‘hbsmith’ 서비스의 현재 Server Infra 구성
• 서비스 전체 AWS Infra overview
8
‘hbsmith’ 서비스의 현재 Server Infra 구성
• 3단계 deployment phase
9
‘hbsmith’ 서비스의 현재 Server Infra 구성
• 1 phase 1 AWS account (consolidated billing)
10
‘hbsmith’ 서비스의 현재 Server Infra 구성
• 모든 computing tier(EC2, Lambda 등)는

매일 “blue-green deployment”로 교체 (daily continuous deployment)
11
‘hbsmith’ 서비스의 현재 Server Infra 구성
• 정리
• 다양한 AWS 서비스들을 사용
• 각 서비스 마다 고유의 config 가 존재
• DV, QA, OP 로 3단계 phase 존재
• ‘phase’ 마다 AWS account 가 별도로 존재
• ‘daily continuous deployment’
12
이걸 손으로 관리?
IaC 란 무엇인가? 왜 필요한가?
13
“사람의 기억과 손은 믿을 수 없다”
IaC 란 무엇인가? 왜 필요한가?
• “사람의 기억과 손은 믿을 수 없다”
• DevOps 개발팀이 겪는 3R problem
• Repeatability
• Reproducibility
• Reliability
14
“내 개발 환경에서는 문제없었는데…”
“어제까지 문제없었는데…”
“실행하면 가끔씩 다른 결과가 나오네…”
IaC 란 무엇인가? 왜 필요한가?
• 다수의 개발자로 이뤄진 DevOps 개발팀 위해 언제, 어디서나, 누구나 동일한 결
과가 나오는 실행 가능한 방법이 필요
• 즉, 모든 server infra, application의 config, provisioning 과정을 문서가 아닌
code로 관리
15
IaC 란 무엇인가? 왜 필요한가?
• IaC (Infrastructure as Code)란?

IT system 관리를 모두 code화 시킨다는 아이디어
• 모든 것이 “실행 가능한 code”이므로 3R problem 해결
16
config
tool
(IaaS와 헷갈릴 수 있으니 조심)
(사람이 아닌 기계가 대신 실행할 수 있음)
IaC 란 무엇인가? 왜 필요한가?
• EC2 서버 1EA 생성도 모두 자동화 (Python script)
17
Project ‘johanna’ 소개
18
open source software
Project ‘johanna’ 소개
• ‘johanna’는 AWS CLI 기반으로 AWS infra 전체 또는 일부를 provisioning, de-
provisioning 할 수 있는 CLI
• 100% Python3 script 로 작성되어 있으며 OSS 로 공개 개발 (since 2016)
19
https://github.com/HardBoiledSmith/johanna/
Project ‘johanna’ 소개
20
PR
https://github.com/HardBoiledSmith/johanna/
Project ‘johanna’ 소개
21
config johanna AWS infra
Project ‘johanna’ 소개
• IaC 예시: VPC
• VPC는 infrastructure의 뼈대

- public/private subnet

- public/private route table

- internet gateway (for public subnet)

- nat gateway (for private subnet)
• VPC는 network traffic 흐름과

instance(EC2, RDS 등)의 위치를 결정
22
(이미지 출처: https://kr.pinterest.com/pin/93238654757169806/)
Project ‘johanna’ 소개
• 간단한 VPC 구성 예시
23
간단해 보이는 구성 조차도 꽤 많은 설정이 필요함
Project ‘johanna’ 소개
• ‘johanna’에서 VPC 생성
24
https://github.com/HardBoiledSmith/johanna/blob/master/run_create_vpc.py
Project ‘johanna’ 소개
• ‘johanna’에서 VPC 파기
25
https://github.com/HardBoiledSmith/johanna/blob/master/run_create_vpc.py
Project ‘johanna’ 소개
• ‘johanna’에서 VPC 생성 전(왼쪽) 후(오른쪽) VPC resource 상태
26
https://github.com/HardBoiledSmith/johanna/blob/master/run_create_vpc.py
Project ‘johanna’ 소개
• ‘johanna’를 CI 에서 주기적으로 반복 실행
27
즉, daily continuous deployment 적용
IaC 장단점
28
‘누구나 그럴싸한 계획을 가지고 있다.’
IaC 장단점
29
마이크 타이슨: ‘누구나 그럴싸한 계획을 가지고 있다. 얼굴에 한방 쳐맞기 전까지는.’
IaC 장단점
• 지난 5년 넘게 IaC를 하면서 느낀 장단점
• 장점

- 3R problem 해결 (새로 입사한 개발자에게 10분만에 개발 환경 전파 가능)

- 누구도 관심없고 읽어보지 않는 문서를 위한 문서화 작업이 없어짐

- 자동화 그리고 자동화 (coding과 code review 외에는 모두 자동화)

- daily continuous deployment 적용 가능

(모든 computing tier 서버 running time이 최대 24시간)
30
‘disk 공간 부족 문제, memory leak 문제는 이제 잊어주세요.’
IaC 장단점
• 단점

- 결국 이것도 또 하나의 개발 프로젝트

- “꼭 필요한가?”라는 내부 고객의 질문에 답을 해야함

- IaC 유지 보수하는 비용(돈과 시간)을 들여서 더 득이 되는가? (ROI)

- 제대로 해본 사람이 적다.
31
<- IaC가 더 커질 수 있음
<- 본 프로젝트는 요 정도 인데
Wrap-Up
32
Repeatability, Reproducibility, Reliability
Wrap-Up
• 발표 정리



- ‘hbsmith’ 서비스의 현재 Server Infra 구성



- IaC 란 무엇인가? 왜 필요한가?



- Project ‘johanna’ 소개



- IaC 장단점
33
감사합니다
jongwon.han@hbsmith.io
010-9166-6855
34

Mais conteúdo relacionado

Mais procurados

Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기
jbugkorea
 

Mais procurados (20)

AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나 AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
 
Spring boot + java 에코시스템 #1
Spring boot + java 에코시스템 #1Spring boot + java 에코시스템 #1
Spring boot + java 에코시스템 #1
 
AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년
 
0원으로 시작하는 서버리스 데이터 수집 및 분석
0원으로 시작하는 서버리스 데이터 수집 및 분석0원으로 시작하는 서버리스 데이터 수집 및 분석
0원으로 시작하는 서버리스 데이터 수집 및 분석
 
Awskrug serverless slideshare
Awskrug serverless slideshareAwskrug serverless slideshare
Awskrug serverless slideshare
 
AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료
 
20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다
 
CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기
 
ALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + Lambda
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
 
20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
 
당근마켓 고언어 도입기, 그리고 활용법
당근마켓 고언어 도입기, 그리고 활용법당근마켓 고언어 도입기, 그리고 활용법
당근마켓 고언어 도입기, 그리고 활용법
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 
Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기
 
HB Smith - business plan - live hero - public
HB Smith - business plan - live hero - publicHB Smith - business plan - live hero - public
HB Smith - business plan - live hero - public
 
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
 
Spring Camp 2017 - DevOps for everyone
Spring Camp 2017 - DevOps for everyoneSpring Camp 2017 - DevOps for everyone
Spring Camp 2017 - DevOps for everyone
 

Semelhante a 20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다

OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
uEngine Solutions
 

Semelhante a 20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다 (20)

20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
 
20180124 naver labs aws network and security
20180124 naver labs aws network and security20180124 naver labs aws network and security
20180124 naver labs aws network and security
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
 
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
(Red hat]private cloud-osp-introduction(samuel)2017-0530(printed)
(Red hat]private cloud-osp-introduction(samuel)2017-0530(printed)(Red hat]private cloud-osp-introduction(samuel)2017-0530(printed)
(Red hat]private cloud-osp-introduction(samuel)2017-0530(printed)
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
 
AWS Summit Seoul 2015 - 엔터프라이즈에서의 하이브리드 환경 전략
AWS Summit Seoul 2015 - 엔터프라이즈에서의 하이브리드 환경 전략AWS Summit Seoul 2015 - 엔터프라이즈에서의 하이브리드 환경 전략
AWS Summit Seoul 2015 - 엔터프라이즈에서의 하이브리드 환경 전략
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 

Mais de Jongwon Han

Mais de Jongwon Han (11)

20191226 LEGACYLAND에서 살아남는 법
20191226 LEGACYLAND에서 살아남는 법20191226 LEGACYLAND에서 살아남는 법
20191226 LEGACYLAND에서 살아남는 법
 
20190518 개발하기 좋은 날
20190518 개발하기 좋은 날20190518 개발하기 좋은 날
20190518 개발하기 좋은 날
 
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 201920190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
 
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
 
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
 
20171221 naver labs aws 101
20171221 naver labs aws 10120171221 naver labs aws 101
20171221 naver labs aws 101
 
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 10120171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 
20170422 HB Smith - Primer workshop
20170422 HB Smith - Primer workshop20170422 HB Smith - Primer workshop
20170422 HB Smith - Primer workshop
 
HB Smith - Primer workshop
HB Smith - Primer workshopHB Smith - Primer workshop
HB Smith - Primer workshop
 
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
 

20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다

  • 1. HBSmith에서는 이렇게 AWS IaC로 배포한다. 8. Nov. 2018 jongwon.han@hbsmith.io (AWS 스터디 모임) Repeatability, Reproducibility, Reliability 1
  • 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
  • 7. ‘hbsmith’ 서비스의 현재 Server Infra 구성 • 사용 중인 AWS 서비스들 7
  • 8. ‘hbsmith’ 서비스의 현재 Server Infra 구성 • 서비스 전체 AWS Infra overview 8
  • 9. ‘hbsmith’ 서비스의 현재 Server Infra 구성 • 3단계 deployment phase 9
  • 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 이걸 손으로 관리?
  • 13. IaC 란 무엇인가? 왜 필요한가? 13 “사람의 기억과 손은 믿을 수 없다”
  • 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/
  • 22. Project ‘johanna’ 소개 • IaC 예시: VPC • VPC는 infrastructure의 뼈대
 - public/private subnet
 - public/private route table
 - internet gateway (for public subnet)
 - nat gateway (for private subnet) • VPC는 network traffic 흐름과
 instance(EC2, RDS 등)의 위치를 결정 22 (이미지 출처: https://kr.pinterest.com/pin/93238654757169806/)
  • 23. Project ‘johanna’ 소개 • 간단한 VPC 구성 예시 23 간단해 보이는 구성 조차도 꽤 많은 설정이 필요함
  • 24. Project ‘johanna’ 소개 • ‘johanna’에서 VPC 생성 24 https://github.com/HardBoiledSmith/johanna/blob/master/run_create_vpc.py
  • 25. Project ‘johanna’ 소개 • ‘johanna’에서 VPC 파기 25 https://github.com/HardBoiledSmith/johanna/blob/master/run_create_vpc.py
  • 26. Project ‘johanna’ 소개 • ‘johanna’에서 VPC 생성 전(왼쪽) 후(오른쪽) VPC resource 상태 26 https://github.com/HardBoiledSmith/johanna/blob/master/run_create_vpc.py
  • 27. Project ‘johanna’ 소개 • ‘johanna’를 CI 에서 주기적으로 반복 실행 27 즉, daily continuous deployment 적용
  • 28. IaC 장단점 28 ‘누구나 그럴싸한 계획을 가지고 있다.’
  • 29. IaC 장단점 29 마이크 타이슨: ‘누구나 그럴싸한 계획을 가지고 있다. 얼굴에 한방 쳐맞기 전까지는.’
  • 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가 더 커질 수 있음 <- 본 프로젝트는 요 정도 인데
  • 33. Wrap-Up • 발표 정리
 
 - ‘hbsmith’ 서비스의 현재 Server Infra 구성
 
 - IaC 란 무엇인가? 왜 필요한가?
 
 - Project ‘johanna’ 소개
 
 - IaC 장단점 33