3. 발표자 소개
• 스포카 프로그래머
• 첫 AWS…
• 첫 발표…
• bright@spoqa.com
• http://blog.aioo.ooo/
4. CI?
• Continuos Integration
위키백과 曰: 소프트웨어 공학에서, 지속적인 통합(continuous integration, CI)은 지속적으로
퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것이다. - 작은 단위의 작업, 빈번한 적용. 지속
적인 통합은 모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는 고전적인 방법을 대체하는 방
법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이
맞추어져 있다. 무슨 소리야
• 개발자들의 작업본을 지속적으로(자주) 통합함으로써 통합
시 발생할 수 있는 다양한 문제들을 미리 예방하거나 줄일 수
있는 방법
• 통합에는 자동화된 빌드와 테스트가 포함
7. 실제 환경과 같아지자
1. 실제 DB의 백업본으로 프로토타입 DB를 동기화
2. 프로토타입 DB를 복제한 클론 DB를 적당량 생성
3. 통합 진행 시마다 클론 DB을 1개씩 소모시킴
4. 클론 DB의 갯수는 항상 유지
5. 각 클론의 정보는 별도의 Pool DB에 저장
6. 위에서 언급한 DB들은 AWS RDS 인스턴스에 저장
8. 기존 구조
Integr. 1
Integr. 2
Integr. 3
…
클론 정보
Integr. 4
클론 요청
EC2 RDS
Pool
Prototype
Clone1
Clone2
…
CI
API
Server
소모되지 않은
클론 조회 및
소모처리 및
새로 생성
클론에 연결해서 테스트 진행
9. 잘 되긴 하는데…
• 테스트용 RDS는 1개인 반면 CI용 컨테이너는 4개
• 테스트가 몰리면 펑펑펑펑 (특히 퇴근 1시간 전)
• 에러가 나면 반사적으로 리빌드를 누르게 됨
19. • Python AWS 라이브러리 Boto!
https://github.com/boto/boto
• Boto는 아직 Python 3를 완벽히 지원하지는 않음
• Boto는 최신 업데이트 대응이 느린 편임
(당시 RDS 인스턴스 생성 시 SSD 볼륨 선택 불가)
개발하자
20. AWS CLI
• 급한 대로 AWS CLI 를 이용해 개발하기로 결정
http://docs.aws.amazon.com/cli/latest/index.html
• 커맨드 라인 기반
• 문서가 잘 되어 있음
• 업데이트도 잘 됨
• 될 건 다 됨
24. 깨달은 점
• IRC는 위험하다
• CI 시스템의 신뢰성은 생산성에 큰 영향을 끼친다
• Magnetic -> SSD 업그레이드는 용량이 클 때만 좋다
IOPS 제한 때문에 낮은 용량에서는 큰 성능 차이가 없음
• 오늘 찾아보니 Boto3 Developer Preview가 있다
https://boto3.readthedocs.org/en/latest/index.html
• AWS는 코드로 조작해야 제맛