SlideShare a Scribd company logo
1 of 20
AWS Lambda를 이용한
Continuous Integration & Deployment
2017.1.11
Jesang Yoon (yoonjs2@hbsmith.io)
윤제상
Co-Founder & CTO of HBSmith
- 삼성전자 소프트웨어 멤버십 17기
- (전) 삼성전자 무선사업부 서비스 개발팀 선임연구원
- (전) Kanizsa Lab Co-Founder & CTO
- (현) KOSSLAB 오픈 프론티어 3기
- Apache Zeppelin Contributor
- Linkedin & GitHub: yoonjs2
- 개인 Email: yoonjs2@gmail.com
Continuous Integration (지속적인 통합)
- Build & Packaging을 자주 행함
- 여러 사람이 작성한 코드가 병합되었을때 생기는 문제를 미리 감지
- 언제든 최신 Build를 고객에게 바로 제공가능
Continuous Deployment (지속적인 배포)
- Deployment를 자주 행함
- System과 Application을 최대한 Fresh한 상태로 유지
- 장시간 운영시 발생하는 문제를 예방
=> Jenkins, Bamboo, CruiseControl 등을 그동안 주로 사용
Jenkins, Bamboo 같은 솔루션의 문제
- 설치/운영비용 소요
(최소 t2.medium = Android App 필요시)
- 여러 Job들이 같은 서버에서 실행,
Job끼리 영향을 미칠수 있음
- 낮은 활용률: 큰 프로젝트가 아니면
서버가 24시간 내내 바쁠일이 드뭄
=> 운영(관리)에 드는
돈, 시간, 노력을 줄일수 있는 방법은 없을까?
우리는 왜 IDC에서 AWS로 이동하는가?
1. 서버관리를 위한 잡일을 AWS에 위임
2. 시간 및 비용이 절감됨
3. 작은 개발팀으로 큰 시스템 개발/운영 가능
4. 집에 일찍 감
5. 가정이 안정되고 …
6. 나라가 좋아지고 ...
HBSmith의 개발 Stack (AS of 2017.1)
- AWS
- GitHub
- Bamboo => Travis CI
- Atlassian Cloud (JIRA/Confluence)
- Slack
GitHub + Travis CI = 최적의 조합
- GitHub 와의 Seamless한 통합
- 2016 CI Ranking Top 3
(Travis CI, CodeShip, Jenkins)
- 수많은 GitHub기반 OpenSource
프로젝트들이 이용 (ex: Apache
Zeppelin)
- Managed CI 중 가장 많은 Reference
- Docker 기반으로 모든 Job이
Independent한 환경에서 수행
- 정말정말 배우기 쉬움
아직 아쉬운? Travis CI 기능
- Job기반이 아닌, 저장소 기반
- GUI에서 할수 있는게 거의 없음
(대신 REST API는 엄청나게 많음)
- 일부 중요해 보이는 기능이 Beta
- CronJob이 Beta인 상황 (as of 2017.1)
- Cron Expression을 지원 안함
Lambda를 이용하여 Travis CI를 제어해 보자!
- 1 Job = 1 Lambda
- Lambda의 Cron Expression 이용
- Lambda에서 Travis CI의 Build API 호출
참고사항
- 저장소의 .travis.yml은 최소설정만 사용
- Build API는 위 설정 위에 CI/CD에 맞는 설
정을 Override 하여 실행할수 있음
- 모든 과정은 Python Script로 언제나 재현
가능 (Provisioning Ready)
결과: 최신 Stack + 신뢰성 높은 CI/CD 툴 탄생
- Lambda or Travis CI가 장애가 생기지 않
는 한 멈출일이 없음
- 장애가 생겨도 그쪽에서 빨리 복구함, 우리는
기다리면 됨
- iOS도 빌드 가능 (CodeBuild엔 미지원)
- 문제생기면 Slack으로 바로 Notification
=> 2016년 10월 첫 Setup이후 2개월 동안
1700 빌드 이상 진행
중단X, 장애X
Jenkins 대비 비용비교 (TCO)
- 비교기준
- Travis CI Docker Instance: 2 CPU + 4G Ram
- AWS: 위와 가장 유사한 t2.medium Instance
- 1 Job = 1 Instance로 계산 (논쟁의 여지는 있음)
- 결론
- t2.medium = 약 $59/월
- Travis CI = 약 $69/월
- Concurrent Instance가 늘어날수록 가격차 커짐
- 의견
- EC2 관리자로 1 Man-month를 고용/투입하는 것
보다 월 $10을 더 내고 투입 안하는게 더 효율적
- 서버가 늘어날수록 Travis CI가 EC2 대비 더 저렴
- 보안, 퍼포먼스 등이 맘에 안들면 Travis CI
Enterprise도 고려가능
Code Build & Code Deploy 스택은?
- 아직 HBSmith의 선택기준엔 아직 미 부합
- 충분한 Reference 있음?
- 기존것을 대체할 만큼 충분한 기능있음?
- 확실히 옮길만한 이유가 존재?
- 그러나
- 안정성과 가격으로는 Benefit은 존재
- GitHub 연동이 Travis 대체재가
될 정도라면 쓸만함
- 지켜보겠음 ...?
Code Build vs Travis CI
Code Build Travis CI
아래 요건이 만족되면 Travis CI 보다 훨씬 나음
● 월 돌리는 Build 개수, Build 완료까지 걸리는 시
간이 짧고 유동적일 경우
(시간당 과금이어서 느릴수록 비용이 더 늘어남)
● AWS 인프라만 이용해야 할 경우
● GitHub 외에 다른 저장소일 경우
아래 상황일 경우 Code Build보다 더 나음
● 월 돌리는 기본 Build 개수가 고정되어 있을 경우
● Build 완료까지 걸리는 시간이 꽤 걸릴 경우
(Travis CI는 시간당 과금 없음)
● 팀이 GitHub를 적극적으로 사용할 경우
(특히 PR 및 Review 기능)
● iOS 및 앱 빌드가 필요할 경우
결론: 하나씩 잘하는 것들을 조합, 확실한것을 만들다.
- Execution: AWS Lambda
- Build: Travis CI
=> 이 모든게 서로 잘 조합될수 있는 이유:
- 훌륭한 외부 인터페이스를 가지고 있으며
- Full Managed 이기 때문
Q & A
제 블로그 follow 하시고 더 많은 AWS 팁 가져가세요 ^^
https://medium.com/@yoonjs2
yoonjs2@hbsmith.io

More Related Content

What's hot

DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개태준 문
 
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기Jongwon Han
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례Amazon Web Services Korea
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석Amazon Web Services Korea
 
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...Jongwon Han
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화KTH, 케이티하이텔
 
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드Amazon Web Services Korea
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년Jongwon Han
 
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20Amazon Web Services Korea
 
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트)
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트) AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트)
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트) AWSKRUG - AWS한국사용자모임
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기SungChanHwang
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편Darion Kim
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS LambdaSeungho Kim
 
Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Junyoung Sung
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017Amazon Web Services Korea
 
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...Amazon Web Services Korea
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)완철 김
 
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)Amazon Web Services Korea
 

What's hot (20)

DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
 
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
 
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
 
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년
 
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트)
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트) AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트)
AWS re:Invent 신규 서비스 총정리 (윤석찬, AWS테크에반젤리스트)
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
Aws로 ci하기 안기욱
Aws로 ci하기 안기욱Aws로 ci하기 안기욱
Aws로 ci하기 안기욱
 
Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
 
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
 

Viewers also liked

131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...
다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...
다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...Joseph Yonggoo Yeo
 
메릴린(Marilyn) by SKY KOREA
메릴린(Marilyn) by SKY KOREA메릴린(Marilyn) by SKY KOREA
메릴린(Marilyn) by SKY KOREA경식 윤
 
Designing International Development Programs by upgrading Global Value Chain
Designing International Development Programs by upgrading Global Value Chain Designing International Development Programs by upgrading Global Value Chain
Designing International Development Programs by upgrading Global Value Chain Shomi Kim
 
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전Atlassian 대한민국
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발Terry Cho
 

Viewers also liked (6)

131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...
다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...
다른 회사는 어떻게 QA, 테스팅을 하고 있을까? (google, facebook, atlass...
 
메릴린(Marilyn) by SKY KOREA
메릴린(Marilyn) by SKY KOREA메릴린(Marilyn) by SKY KOREA
메릴린(Marilyn) by SKY KOREA
 
Designing International Development Programs by upgrading Global Value Chain
Designing International Development Programs by upgrading Global Value Chain Designing International Development Programs by upgrading Global Value Chain
Designing International Development Programs by upgrading Global Value Chain
 
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전
Atlassian Product Overview (아틀라시안 제품 소개) - 2016년 4월 버전
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발
 

Similar to AWS Lambda를 이용한 CI/CD 기법

Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포KwangSeob Jeong
 
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집AWSKRUG - AWS한국사용자모임
 
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)Amazon Web Services Korea
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online SeriesAmazon Web Services Korea
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기Youngjae Kim
 
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈 [애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈 Amazon Web Services Korea
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축BESPIN GLOBAL
 
Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기productab180
 
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기인수 장
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
ALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaKyuhyun Byun
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기Amazon Web Services Korea
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 

Similar to AWS Lambda를 이용한 CI/CD 기법 (20)

Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
 
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
 
모두싸인의 AWS 성장기
모두싸인의 AWS 성장기모두싸인의 AWS 성장기
모두싸인의 AWS 성장기
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
Ansible과 CloudFormation을 이용한 배포 자동화
Ansible과 CloudFormation을 이용한 배포 자동화Ansible과 CloudFormation을 이용한 배포 자동화
Ansible과 CloudFormation을 이용한 배포 자동화
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
 
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈 [애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축
 
Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기Feature Branch Branch Dev QA 환경 구성기
Feature Branch Branch Dev QA 환경 구성기
 
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
ALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + Lambda
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 

More from Jesang Yoon

AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료Jesang Yoon
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?Jesang Yoon
 
Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기Jesang Yoon
 
AWS S3를 이용한 효과적인 SPA 배포
AWS S3를 이용한 효과적인 SPA 배포AWS S3를 이용한 효과적인 SPA 배포
AWS S3를 이용한 효과적인 SPA 배포Jesang Yoon
 
대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상Jesang Yoon
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 

More from Jesang Yoon (6)

AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?
 
Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기
 
AWS S3를 이용한 효과적인 SPA 배포
AWS S3를 이용한 효과적인 SPA 배포AWS S3를 이용한 효과적인 SPA 배포
AWS S3를 이용한 효과적인 SPA 배포
 
대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 

AWS Lambda를 이용한 CI/CD 기법

  • 1. AWS Lambda를 이용한 Continuous Integration & Deployment 2017.1.11 Jesang Yoon (yoonjs2@hbsmith.io)
  • 2. 윤제상 Co-Founder & CTO of HBSmith - 삼성전자 소프트웨어 멤버십 17기 - (전) 삼성전자 무선사업부 서비스 개발팀 선임연구원 - (전) Kanizsa Lab Co-Founder & CTO - (현) KOSSLAB 오픈 프론티어 3기 - Apache Zeppelin Contributor - Linkedin & GitHub: yoonjs2 - 개인 Email: yoonjs2@gmail.com
  • 3. Continuous Integration (지속적인 통합) - Build & Packaging을 자주 행함 - 여러 사람이 작성한 코드가 병합되었을때 생기는 문제를 미리 감지 - 언제든 최신 Build를 고객에게 바로 제공가능 Continuous Deployment (지속적인 배포) - Deployment를 자주 행함 - System과 Application을 최대한 Fresh한 상태로 유지 - 장시간 운영시 발생하는 문제를 예방 => Jenkins, Bamboo, CruiseControl 등을 그동안 주로 사용
  • 4. Jenkins, Bamboo 같은 솔루션의 문제 - 설치/운영비용 소요 (최소 t2.medium = Android App 필요시) - 여러 Job들이 같은 서버에서 실행, Job끼리 영향을 미칠수 있음 - 낮은 활용률: 큰 프로젝트가 아니면 서버가 24시간 내내 바쁠일이 드뭄 => 운영(관리)에 드는 돈, 시간, 노력을 줄일수 있는 방법은 없을까?
  • 5. 우리는 왜 IDC에서 AWS로 이동하는가? 1. 서버관리를 위한 잡일을 AWS에 위임 2. 시간 및 비용이 절감됨 3. 작은 개발팀으로 큰 시스템 개발/운영 가능 4. 집에 일찍 감 5. 가정이 안정되고 … 6. 나라가 좋아지고 ...
  • 6. HBSmith의 개발 Stack (AS of 2017.1) - AWS - GitHub - Bamboo => Travis CI - Atlassian Cloud (JIRA/Confluence) - Slack
  • 7. GitHub + Travis CI = 최적의 조합 - GitHub 와의 Seamless한 통합 - 2016 CI Ranking Top 3 (Travis CI, CodeShip, Jenkins) - 수많은 GitHub기반 OpenSource 프로젝트들이 이용 (ex: Apache Zeppelin) - Managed CI 중 가장 많은 Reference - Docker 기반으로 모든 Job이 Independent한 환경에서 수행 - 정말정말 배우기 쉬움
  • 8.
  • 9. 아직 아쉬운? Travis CI 기능 - Job기반이 아닌, 저장소 기반 - GUI에서 할수 있는게 거의 없음 (대신 REST API는 엄청나게 많음) - 일부 중요해 보이는 기능이 Beta - CronJob이 Beta인 상황 (as of 2017.1) - Cron Expression을 지원 안함
  • 10. Lambda를 이용하여 Travis CI를 제어해 보자! - 1 Job = 1 Lambda - Lambda의 Cron Expression 이용 - Lambda에서 Travis CI의 Build API 호출 참고사항 - 저장소의 .travis.yml은 최소설정만 사용 - Build API는 위 설정 위에 CI/CD에 맞는 설 정을 Override 하여 실행할수 있음 - 모든 과정은 Python Script로 언제나 재현 가능 (Provisioning Ready)
  • 11.
  • 12.
  • 13.
  • 14. 결과: 최신 Stack + 신뢰성 높은 CI/CD 툴 탄생 - Lambda or Travis CI가 장애가 생기지 않 는 한 멈출일이 없음 - 장애가 생겨도 그쪽에서 빨리 복구함, 우리는 기다리면 됨 - iOS도 빌드 가능 (CodeBuild엔 미지원) - 문제생기면 Slack으로 바로 Notification => 2016년 10월 첫 Setup이후 2개월 동안 1700 빌드 이상 진행 중단X, 장애X
  • 15. Jenkins 대비 비용비교 (TCO) - 비교기준 - Travis CI Docker Instance: 2 CPU + 4G Ram - AWS: 위와 가장 유사한 t2.medium Instance - 1 Job = 1 Instance로 계산 (논쟁의 여지는 있음) - 결론 - t2.medium = 약 $59/월 - Travis CI = 약 $69/월 - Concurrent Instance가 늘어날수록 가격차 커짐 - 의견 - EC2 관리자로 1 Man-month를 고용/투입하는 것 보다 월 $10을 더 내고 투입 안하는게 더 효율적 - 서버가 늘어날수록 Travis CI가 EC2 대비 더 저렴 - 보안, 퍼포먼스 등이 맘에 안들면 Travis CI Enterprise도 고려가능
  • 16. Code Build & Code Deploy 스택은? - 아직 HBSmith의 선택기준엔 아직 미 부합 - 충분한 Reference 있음? - 기존것을 대체할 만큼 충분한 기능있음? - 확실히 옮길만한 이유가 존재? - 그러나 - 안정성과 가격으로는 Benefit은 존재 - GitHub 연동이 Travis 대체재가 될 정도라면 쓸만함 - 지켜보겠음 ...?
  • 17. Code Build vs Travis CI Code Build Travis CI 아래 요건이 만족되면 Travis CI 보다 훨씬 나음 ● 월 돌리는 Build 개수, Build 완료까지 걸리는 시 간이 짧고 유동적일 경우 (시간당 과금이어서 느릴수록 비용이 더 늘어남) ● AWS 인프라만 이용해야 할 경우 ● GitHub 외에 다른 저장소일 경우 아래 상황일 경우 Code Build보다 더 나음 ● 월 돌리는 기본 Build 개수가 고정되어 있을 경우 ● Build 완료까지 걸리는 시간이 꽤 걸릴 경우 (Travis CI는 시간당 과금 없음) ● 팀이 GitHub를 적극적으로 사용할 경우 (특히 PR 및 Review 기능) ● iOS 및 앱 빌드가 필요할 경우
  • 18. 결론: 하나씩 잘하는 것들을 조합, 확실한것을 만들다. - Execution: AWS Lambda - Build: Travis CI => 이 모든게 서로 잘 조합될수 있는 이유: - 훌륭한 외부 인터페이스를 가지고 있으며 - Full Managed 이기 때문
  • 19.
  • 20. Q & A 제 블로그 follow 하시고 더 많은 AWS 팁 가져가세요 ^^ https://medium.com/@yoonjs2 yoonjs2@hbsmith.io