22. Continuous Integration?
• 코드의 변경 사항이 자동으로 서비스에 배포
– Unit / Mock 테스트 완료 후
• 코드의 변경과 배포를 하나의 덩어리로 처리하는
대신 변경 발생시 마다 지속적으로 배포
• 버그의 빠른 발견
• 자동화된 배포
• 신속한 개발과 배포를 가능하게 함
25. PAIN POINTS
• Unit 테스트의 비 종료
• MOCK 테스트의 메인터넌스
• 고 비용의 테스트 환경
• 테스트 환경 ≠ 실서비스 환경
• 배포 주기
26. 소프트웨어 개발 라이프사이클
10/13/14 26
MonitorProvisionDeployTestBuildCode
AWS Elastic Beanstalk
AWS OpsWorks
Amazon
CloudWatch
AWS
CloudFormation
?
27. AWS code 서비스
AWS CodeCommit
곧 출시 됩니다
AWS CodePipeline
곧 출시 됩니다
AWS CodeDeploy
절찬리 판매중
28. Source Control
아마존 S3 위에서 서비스되는 사설 Git 코드 저장소
• Git 완벽 호환 (기존의 도구 그대로 사용 가능)
• 클라우드 사용의 잇점을 모두 도입 가능
(확장성, 내구성, 신뢰성, 사용량 기반의 저렴한
과금 체계)
• 저장소의 크기 제한 없음(바이너리도 마음껏
저장)
• 온라인 도구 제공 – 코드 확인, 수정, diff
10/13/14 28
30. Continuous Delivery
커스터마이즈 가능한 빌드, 테스트를 포함한 배포 자동화
• 커스텀된 배포 자동화 흐름을 한눈에 확인
(source build beta gamma prod)
• 자동 빌드, 테스트, 그리고 배포
• 커스텀 정책, 승인 및 게이트 구성이 가능
• 3rd party 도구 또는 커스텀 도구와 연동 가능
10/13/14 30
31.
32. Deployment
EC2 인스턴스 그룹에 소프트웨어 업데이트를 조정
• 다운타임 없이 업데이트 가능 - 롤링 업데이트
• Health check 와 함께 배포하여 손쉬운 Rollback
• 오토 스케일 연동
• 어떠한 어플리케이션과도 연동 가능
• 기존의 설정 도구와 함께 연동 가능
(Bash, Powershell, Chef, Puppet…)
10/13/14 32
54. OpsWorks 기본 구조
OpsWorks에 정의된 일련의 명령을
다운로드,
Agent에서 Chef solo(Chef
Zero)에서 레시피를 실행
EC2 인스턴스의
OpsWorks Agent
Chef 11.10에서 Chef
Client의 local mode
55. OpsWorks 요구사항
• Amazon Linux 또는 Ubuntu 12.04LTS,14.04LTS
기반
– 사용자가 생성한 AMI 역시 사용 가능
• Chef 버전 0.9, 11.4, 11.10 지원
• VPC 지원
– Default VPC, Customer VPC 모두 사용 가능
• ELB, RDS, CloudFormation, CloudTrail 지원
• 신규로 구동한 인스턴스에서 OpsWorks endpoint 에
접근 하도록 구성 가능
56. OpsWorks 사용 방법
• AWS 관리 콘솔
• AWS SDK
• AWS CLI
• OpsWorks Agent CLI
– OpsWorks에서 시작된 인스턴스에 SSH로 로그인하여 agent
전용 명령어를 실행
70. 인스턴스가 상태가 변경되면 Configure가 실행
Setup Deploy Configure Execute Recipe Shutdown
App 서버
시작
App
서버
DB
서버
App
서버
DB 서버
시작
App 서버
시작
수동
배포
실행
레시피 실행 App 서버
종료
71. 시간 기반으로 인스턴스를 rolling update 예
• 매일 지정된 시간에 인스턴스를 시작 / 중지
– 각 인스턴스별로 시간을 늦추어 시작 / 중지
• 인스턴스가 부팅할 때마다 Setup, Deploy 라이프
사이클 이벤트에 의해 업데이트되어 최신 버전으로
어플리케이션을 구동
72. 배포한 App 의 rollback
• 1회 이전의 버전의 App 으로도 rollback 이 가능
– 예:App의 업데이트를 3회 수행한 경우, 한번 롤백하면 두번째 버전으로, 두번
롤백하면 첫번째 버전으로 롤백
• OpsWorks는 기본적으로 5가지 버전의 App 을 보유
– 보유하고 있는 버전 수를 넘어 롤백을 시도하면 실패하게되고, 가장 오래된
버전으로 적용된다.
– [:opsworks][:deploy_keep_releases]을 변경하여 전체 스택에서 유지할
버전의 수를 변경 가능
– 개별 App 버전의 보유 수를 변경하려면
[:deploy][‘appshortname’][:keep_releases]를 변경
73. CloudWatch 를 통한 모니터링
• OpsWorks는 CloudWatch를 사용하여 다음의 메트릭을 1분 단위로
모니터링
• 14개 메트릭 (무료 제공)
– CPU(5)
• Idle / User CPU / System CPU / IO Wait / nice(Unix)
– 메모리
• 메모리 합계 / 사용중인 메모리 / swap / free / 메모리 버퍼
– 부하 (3)
• 1분 / 5분 / 15분 단위 평균 부하
– 프로세스(1)
• 프로세스의 수
• 인스턴스의 OS 레벨에서 얻을 수 있는 정보는 OpsWorks 에이전트가
수집하여 CloudWatch 서비스로 전송하여 얻어진다.
– 이를 통해 메모리, 프로세스 같은 표준 CloudWatch 모니터링에선 얻을 수 없는
데이터도 확인할 수 있다.