SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
41.
자동화된 생성, 제거, 배포
자동화의 영역 수동의 영역
Name Type Count
server1 m4.large 4
server2 m4.2xlarge 2
server3 m4.large 1
>_
수동으로 관리되던 인프라 구성 관리
42.
자동화의 영역 수동의 영역
Name Type Count
server1 m4.large 3
server2 m4.2xlarge 2 1
server3 m4.large 1
server4 m4.large 1
>_
자동화된 생성, 제거, 배포
수동으로 관리되던 인프라 구성 관리
인프라 구성이 바뀌면, 인프라 정보 동기화 필요!!
43.
Fabric
배포저장소에 코드 푸시
GitLab CI
앱 배포 시, Git 저장소에서 필요한 코드를 복제
44.
Fabric
배포저장소에 코드 푸시
셀프 DDoS Attack!
앱 배포 시, Git 저장소에서 필요한 코드를 복제
DDoS attack: Distributed Denial of Service attack
GitLab CI
45.
Fabric
배포저장소에 코드 푸시
큰 규모의 인프라가, 저장소 서버에 과부하를 야기!!
셀프 DDoS Attack!
DDoS attack: Distributed Denial of Service attack
GitLab CI
앱 배포 시, Git 저장소에서 필요한 코드를 복제
46.
마일스톤 막바지가 되면..
※ 설치형 GitLab EE를 사용하고 있습니다.
GitLab 코드 푸시
GitLab 장애
코드 푸시를 못 함. (쌓임)
GitLab이 살아남 배포 (DDoS를 야기)
60.
Python 프로그램을 배포하는 4가지 방법
• Git+pip
• Docker
• PEX
• dh-virtualenv
61.
pip은 Python 패키지를 설치하는 도구
Python Package Index(https://pypi.org/)로부터 패키지를
내려받아 설치하거나, Git 저장소에서 내려받아 설치할 수 있다.
Git+pip
62.
Docker는 컨테이너 가상화 도구
VM과 달리 컨테이너 단위로 환경을 격리해 준다
프로그램과 필요한 의존성을 모아 컨테이너화해서 사용할 수 있다
Docker
63.
PEX (Python EXecutable)는 Python 의존성을 같이 패키징
한 .pex 라는 단일 실행 파일을 만들어주는 도구
PEX
https://github.com/pantsbuild/pex
64.
PEX (Python EXecutable)는 Python 의존성을 같이 패키징
한 .pex 라는 단일 실행 파일을 만들어주는 도구
PEX
https://github.com/pantsbuild/pex
65.
dh-virtualenv는 Python 의존성을 포함한 Debian 패키지 파일
을 생성하는 도구
Debian 패키지를 빌드하는 debhelper의 빌드 과정에
dh_virtualenv 빌드 시퀀스를 추가하여 동작하는 방식
dh-virtualenv
https://github.com/spotify/dh-virtualenv
66.
부끄럽지만..
pip으로 내부 Git 저장소를 통해 설치하는 방식으로 배포를 하고 있었고,
이게 GitLab에 부하를 일으켰던 원인
115.
Ansible이 수행을 마치면 출력하는 Play Recap에서 실패한 호스트를 따로 볼 수 있다
실패 호스트는?
116.
Ansible은 실패 호스트를 <playbook filename>.retry
파일을 자동으로 만들어 기록한다.
바로 전 실행 명령어 뒤에 --limit @<playbook filename>.retry
옵션을 붙이면, 실패한 호스트만 재시도할 수 있다
멱등성 덕분에, 혹시나 중복 실행이 가져오는 부작용을 걱정하지 않아도 된다.
실패 호스트는?