aws를 통한 신뢰성 높은 지속적 배포 및 통합(cd/ci) 사례 - aws summit seoul 2017
TRANSCRIPT
i�.,-3(�: Ph �NT �JT dXRTa(�A R � �Xba�:UUX XPbTa �: � XVWba� TaT dTS
(�k@ �J XbWl� >G
AWS를�통한�신뢰성�높은�지속적�배포�및�통합(CD/CI)�사례�
1부
본�강연에서�다룰�내용�
- �%., �)� �
A b ScRbX �
PX g� bX c ca� T g T b �% � SPX g� l � �
H Pg�eXbW�:NJ�
� � �
N P �L �
. �%., �)�
.
Introduction
발표자�소개
�%�Wbb a6++eee X TSX R +X +PSS c +� �
HgbW � cS�A U P(�DTP +:VX T� � � � � �
.,-. � � � (� � �% �:NJ � ScRbX � TdT � �
o� � (� x� � l�
z ��
% � TdG a� � �k@ �J XbWl� �%�Wbb a6++W a XbW X � �
%.,-2 � �G.G� � �kCP XhaP�DP l � PR T S�aT dT �+�X U P�STd a� �
%.,-1 � cS�R cbX V� � � :.�R P g �R )U c ST �%kCA Ol � �
%.,-, �JP ac V�J UbeP T�ET T aWX �% (� �
%.,,3 � >OG � EP TJb g� �DXdT�KTP � :(�J: � �% �… �
0
Introduction
Hg �:H: �.,-2�%�Wbb a6++eee gR +.,-2P PR+ V P +-1� �
m PX g� bX c ca� T g T b � cab � DA�s � �:NJ�> PabXR� TP abP � …n
1
Introduction
�kSPX g� l �:NJ�> PabXR� TP abP � �
kSPX g� l � (� � o8�
�:NJ� � o8�
�> PabXR� TP abP � o8
2
Daily�CD로의�여정
Continuous�Deployment란?
U �NX X TSXP" bX c ca�ST XdT g�Xa�a TbX Ta�R UcaTS�eXbW�R bX c ca�ST g T b �
bX c ca�ST g T b� TP a�bWPb�TdT g�RWP VT�Xa�Pcb PbXRP g�ST gTS�b � ScRbX n�
6� � � � � � (� (�
� 6�Wbb 6++Td cbgh X +STd a Wb
4
Daily�CD란?
6�m n� � � � � � (� (� �
x� �o � �
I>JK�:HA�aT dT �%N:J (�N T �%Pag R� �
�R cbX V � �SPbP(� V� �u � � � �
…� � �
(�Jb PVT�
�SPbP(� V� � �
5
Daily�CD로의�여정
TdG a� � �
.,,2 � Tf �EP TJb g�s �J:(� : � �
� � z�%A �
)ab � PbRW(� I� � © �
�@:�© � �
D0�aeXbRW� �
H (�H � �H �
”j
-,
Daily�CD로의�여정
TdG a� � �
.,-. � cS� �abP bc (�k:.�R P gl� �
�JA+JE �:NJ � � �
G T JbPR �:NJ � �APPJ �© �%kBc l �
.,-2 � TdG a� �abP bc (�k@ �J XbWl�
--
Daily�CD로의�여정
�-, p� � %STd a � j�
� … � ”� % � � �
/I�%IT TPbP T(�IT ScRX T(�IT XP T � © �
% (�ME � (�r …� �p % T g� TP 8 �
� T b � � � � % �
-.
� 6�Wbb a6++ X bT Tab R + agRW ePR +STd a+
Daily�CD로의�여정
� � � �
)ab � �aT dT � PbRW�
@: � I�
� ’ � �% � � � (� …� � � u… � � � �
-/
Daily�CD로의�여정
�
� %ME � � � %ST g T b � � � �
(� �k l � �
© �
/I�%IT TPbP T(�IT ScRX T(�IT XP T �
)ab �%hT �S e bX T(�aTP Taa �
@: � I
-0
Play�with�AWS
AWS와�첫만남
m> .�aT dT no� �m> .�X abP RTn�
ME� � cVo� �a UbeP T�
�r …� o � � � � �
A U P� �-,, � � � � … (m � ©no�o �agabT �P RWXbTRbc T �©
-2
왜�AWS�인가?
.,-. � � ScRbX � TdT � �
� �
�/ S� P bg�
� �!!!�
:NJ � (�s + � o� �x� (� �
-3
왜�AWS�인가?
�b c TaW bX V
-4
왜�AWS�인가?
� �… (�
-5
###�QUIZ�###
�:NJ� 8�
Wbb a6++Pea P Ph R + Va+Pea+Pea) V)bWT)UX ab)UXdT)gTP a+
.,
Play�with�AWS�#1
> .%:EA �'�>D � � PX g� � �
>D �WTP bW�RWTR �… � �
>D � � �> .� � �STbPRW� �
STbPRW �> . � PbRW�% (�:J? � �:EA� �
�PbbPRW� �” � �STbPRW�
STbPRW �> . � PbRW�
�PbbPRW
.-
Play�with�AWS�#1
> .%:EA �'�>D � � �
:EA�dT aX � � �% � � o� u 8 �
GJ� TdT �aTRc Xbg� PbRW� � �
:EA� � � …�% � � (� � �
>D � �STbPRW(�PbbPRW� � u �
� p (� PbRW �> . � � �> .o� �>D �PbbPRW � o�
..
Play�with�AWS�#2
> � PX g� � �
> �T dX T b%> .�'�>D � � �ST g T b�
�> �T d � �
� � �> . GJ%: Ph �DX cf � �:EA � �
> .� �a UbeP T�abPR � � �
�> �T do�V TT �abPbca � ‘ (�> �T d � :E>�aeP X V �
./
Play�with�AWS�#2
> � PX g� � �
> � � � % 6�k+ b+ gbW + STR l�z o�” �k+ b+ gbW +Rc T bl � z �
> �… � � �v (� � � � o� � � �
�> �T d � � p�b PUUXR � �%R XT b� J�RPRWX V �
� �- p� � � � �> �T d� �
D V� � �
… �-1 �J/ � �R � � … � x� � � Wbb 6++S Ra Pea P Ph R +T PabXR TP abP + PbTab+SV+caX V)UTPbc Ta VVX V Wb
.0
Play�with�AWS�#2
> � PX g� � �
� © � � �
/I�%IT TPbP T(�IT ScRX T(�IT XP T �)7� �s x� x�s � z� �o �
)ab �%hT �S e bX T(�aTP Taa �
@: � I�
� o � �
� ’ � �% � � � (� …� � � u… � � � � �
� o�o � (� � y�% T g� TP (� � T b� �
s � VXR�R ST � � �
�bXT � x� t� � �% (� XR aT dXRTa� � P aT dXRTa�o�o �
K.�X abP RT � ca� HL�R TSXb�!!!
.1
실제�운영�사례들
실제�운영�사례�#1
�:NJ�K g � TVX � � �
.,-2 �:NJ�JT c � TVX � T �
:NJ�K g � TVX � �X U P� �JT c � TVX � XV PbX �
… � PX g� � � � � XV PbX � ” � �w �
K g � TVX �J/(�I J�SPbP �JT c � TVX � XV PbX �% �
I>JK�:HA�aT dT �%N:J (�N T �%Pag R� � PX g� � kP ) bWTPab)-l �kP ) bWTPab).l � z � �
�- p�
.3
실제�운영�사례�#2
� c XR�R cS� � � �
- �ME �P )X ) T% (�N:Jj � �
:J)AJ�R ST� � �N:J(�e T (�ab PVT(� �bXT � � �:NJ� � XV PbX �
:NJ� XV PbX � � �N:J(�N T � � PX g� � � �
:NJ � �X U P� XV PbX � � �0 � �
� �2s � � �
.4
실제�운영�사례�#3
�k@ �J XbWl� �%�Wbb a6++W a XbW X � �
� �:NJ�X U P � PX g� � � �
(� �SPbP(� V� � � % 6�I J � �
�HgbW �R ST �GJJ�kKXP Pbl � s�
Wbb a6++VXbWc R +@P S X TSJ XbW+bXP Pb�
Wbb a6++VXbWc R +@P S X TSJ XbW+ WP P
.5
운영하면서�느낀�Daily�CD�단점
H dXaX X V�R ST� � o� � � �
� � (� � � �
…6�k… �© (� cV� � (� � w � p � � 8l�
6�k v�s (� � � x� x� (� � x� …� l
/,
Wrap�Up
체크�포인트�
� �e P �c �
SPX g� l � �
kSPX g� l � (� � � �
H Pg�eXbW�:NJ�
�:NJ � (� � x�kSPX g� l �© �
� � �
/s � � � � …p� � “�k l
/.
본�강연이�끝난�후…
:NJ�> PabXR� TP abP � …�
Wbb 6++S Ra Pea P Ph R +T PabXR TP abP + PbTab+SV+?TbbX VJbP bTS Wb �
HgbW �'�:NJ�> � �© �kSPX g� l � � � …�
Wbb a6++eee gR +.,-2P PR+ V P +-1�
?Xb@c �kKXP Pbl�%:NJ� DA�… �R b X cb � �
Wbb a6++VXbWc R +@P S X TSJ XbW+bXP Pb�
:NJ� XV PbX ”�> � % �bc X V � � …�
Wbb a6++W a XbW X �
WT 9W a XbW X
//
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
윤제상, CTO (HBSmith Inc.)
AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 2부
AWS Lambda + Travis CI
본 강연에서 다룰 내용
• Continuous Integration & Continuous Deployment • 기존 Unmanaged CI/CD의 문제 • 왜 GitHub와 Travis CI 인가? • Travis CI의 한계, AWS Lambda로 뛰어넘다 • Code Build vs Travis CI • 신뢰성 높은 Software Stack 이란?
Introduction
안녕하세요, SW 개발자 윤제상 입니다.
(현) DevOps 전문 스타트업 HBSmith Inc. Co-Founder, CTO
https://hbsmith.io/
- (전) 삼성전자 소프트웨어 멤버십 17기
- (전) 삼성전자 무선사업부 서비스 개발팀 선임연구원
- (전) Kanizsa Lab Co-Founder & CTO
- (전) KOSSLAB 오픈 프론티어 3기
- Apache Zeppelin Contributor
- Linkedin & GitHub: yoonjs2
- 개인 Email: [email protected]
배경
Definition
Continuous Integration (지속적인 통합) • Build & Packaging을 자주 행함 • 여러 사람이 작성한 코드가 병합되었을 때 생기는 문제를 미리 감지 • 언제든 최신 Build를 고객에게 바로 제공가능 Continuous Deployment (지속적인 배포) • Deployment를 자주 행함 • System과 Application을 최대한 Fresh한 상태로 유지 • 장시간 운영 시 발생하는 문제를 예방
� Jenkins, Bamboo, Cruise Control등을 주로 사용해 옴
Jenkins, Bamboo 같은 CI 의 문제
• 설치/운영비용 소요 (최소 t2.medium = Android App 필요 시)
• 여러 Job들이 같은 서버에서 실행, Job끼리 영향을 미칠 수 있음
• 낮은 활용률: 큰 프로젝트가 아니면 서버가 24시간 내내 바쁠 일이 적음
� 운영(관리)에 드는 돈, 시간, 노력을
줄일 수 있는 방법은 없을까?
우리는 왜 IDC에서 AWS로 이동 하는가?
1. 서버관리를 위한 잡일을 AWS에 위임
2. 시간 및 비용이 절감됨
3. 작은 개발팀으로 큰 시스템 개발/운영 가능
4. 집에 좀더 일찍 감
5. 가정이 안정되고 …
6. 나라가 좋아지고 ...
…
개발
HBSmith의 개발 Stack (As of 2017.4)
• AWS
• GitHub
• Jenkins -> Bamboo -> Travis CI
• Atlassian Cloud (JIRA/Confluence)
• Slack https://hbsmith.io/
GitHub + Travis CI = 최적의 조합
• GitHub 와의 Seamless한 통합
• 2016 CI Ranking Top 3
(Travis CI, CodeShip, Jenkins)
• 수많은 GitHub기반 Open Source
프로젝트들이 이용 (ex: Apache Zeppelin)
• Managed CI 중 가장 많은 Reference
• Docker 기반으로 모든 Job이
Independent한 환경에서 수행
• 정말정말 배우기 쉬움(Easy)
아직 아쉬운? Travis CI 기능
• Job기반이 아닌, 저장소 기반
• GUI에서 할 수 있는 게 거의 없음 (대신 REST API는 엄청나게 많음)
• 정말 중요해 보이는 기능이 Beta
• CronJob이 Beta인 상황 (as of 2017.4)
• Cron Expression을 지원 안 함
AWS 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도 Build 가능 (Code Build엔 미 지원)
• 문제생기면 Slack으로 바로 Notification
� 2016년 10월 첫 Setup이후 6개월 동안 3000 Build
이상 진행하는 동안 중단 및 장애 거의 없음
� Travis CI 장애 발생시 Travis Team에서 빠르게 대응
� Lambda 장애 발생시 AWS에서 빠르게 대응
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도 고려가능
(Enterprise는 EC2 환경에서 동작함!)
Code Build & Code Deploy로 옮길 생각은?
우리 팀 기준엔 아직 미 부합
- 충분한 Reference 있음?
- 기존 것을 대체할 만큼 충분한 기능 있음?
- 확실히 옮길만한 이유가 존재?
그러나 충분히 가능성 있음
- 안정성, 가격측면서 확실한 Benefit이 존재
- GitHub 연동이 Travis 보다 좋아진다면…
- 특히 iOS Build 만 지원이 된다면…
� 망설임 없이 옮길 예정!
?
Code Build vs Travis CI
Code Build Travis CI
• 월 돌리는 Build 개수, Build 완료까지
걸리는 시간이 짧고 유동적일 경우
(시간당 과금 = Build 가 느릴수록 비용이 더 늘어남)
• AWS 인프라만 이용해야 할 경우
• GitHub 외에 다른 저장소일 경우
• Linux 또는 Windows Build 환경만 필요할 경우
• 월 돌리는 기본 Build 개수가 고정되어 있을 경우
• Build 완료까지 걸리는 시간이 꽤 걸릴 경우
(Travis CI는 시간당 과금 없음)
• 팀이 GitHub를 적극적으로 사용할 경우
(특히 PR 및 Review 기능)
• iOS App Build가 필요할 경우 (XCode Server)
결론: 한가지 일을 잘하는 것들을 조합, 확실한 것을 만들다.
- Trigger = AWS Lambda
- Build = Travis CI
� 이 모든 게 서로 잘 조합될 수 있는 이유
- 훌륭한 표준 인터페이스 (API)
- 완전 관리 형 서비스 (Full Managed)
- 각자 1가지의 목적에 충실 (Primitive)
Unix 창시자 Douglas McIlroy 께서 말씀하시길…
AWS = Unix 철학에 가장 가까운 Public Cloud
본 강연이 끝난 후…
여러분도 AWS Lambda로 멋진 자동화 시스템을 만들 수 있습니다! 지금 떠오르는 아이디어로 시작해보세요!
https://aws.amazon.com/lambda/getting-started/
도움이 필요하세요? 아래로 언제든 문의주세요 - https://hbsmith.io/