발표자
- nackot
- 당근마켓
Packer
- 커스텀 이미지 빌드 도구
- Base 이미지를 기반으로 타겟 어플리케이션에 필요한 구성을 프로비저닝 완료한 이미지 생성
- 기존에는 만들어진 이미지를 실행시키고 수정 후 다시 이미지로 생성해서 사용하는 것이 혁신적이었음
- 이미지 빌드 과정을 재현할 수 없기 때문에 자동화가 어려움
- 이미지 빌드/삭제를 손수 해야함
- 이미지가 계속 쌓이기만 하고 지울 수 없는 상태가 됨
- 패커의 핵심 도구
- 빌더 / 프로비저너의 조합으로 구성됨
- 빌더 : 특정 플랫폼의 이미지를 만드는 플러그인
- 프로비저너 : 프로비저닝을 수행하는 플러그인
- 실제 Packer가 하는 것은 아니고 쉘 스크립트나, 쉐프, 앤서블과 같은 도구로 프로비저닝
- AWS뿐만아니라 docker, virtual box 이미지 빌드까지 일관된 방식(빌더와 프로비저너의 조합)으로 이미지 생성
- 빌더 / 프로비저너의 조합으로 구성됨
- 이미지 빌드 특징
- 프로비저너와 함께 코드로 관리
- 변경이 있을 때마다 매번 이미지 새로 빌드
- 변경사항이 모두 저장되기 때문에 재현 가능
- 코드로 관리되므로 자동화 가능
- 빌드 과정
- 인스턴스 및 임시 리소스 생성
- 단점
- 모든 과정이 한방에 이루어짐
- 빌드 시간이 길어짐
- 빌드 과정에 개입이 불가능
- 문제가 생기면 롤백하고 처음부터 다시 진행
- 모든 과정이 한방에 이루어짐
Vagrant
- 가상머신의 특정 상태를 만들어주는 도구
- 구성요소
- 프로바이더와 프로비저너로 구성
- 프로바이더 : 결과물을 VM 이미지로 만들어줌
- 프로비저너는 Packer와 의미가 동일
- 프로바이더와 프로비저너로 구성
- Packer는 코드 업데이트 시 이미지를 제거하고 다시 만들지만 Vagrant는 변경된 부분만 프로비저닝
- 가상환경은 Packer를 사용하는 환경과 다를 수 있음
- 이를 위해 vagrant-aws 사용
- Vagrant AWS 프로바이더
- VM 대신 AWS 인스턴스가 실행 됨
- 마지막 커밋이 2016년이라는 문제점
- Packer의 경우 키 파일까지 생성해서 이미지에 넣어주지만 Vagrant는 환경 변수로 등록해서 사용
- 라이프사이클 관리가 필요
- Destroy 하지 안흐면 인스턴스가 AWS상에 그대로 남아잇음
- 자동적으로 종료하도록 구성하는 것이 좋음
- Vagrant는 업데이트된 부분만 프로비저닝 하기 때문에 이 과정에서 Packer와 결과물이 달라질 소지가 있음
- 업데이트 시 제거 후 잘 동작하는지 테스트 필요
당근마켓에서 사용하는 방법
- 패커를 통해 이미지 빌드 자동화 하고 Vagrant로 동작 테스트
- 프로덕션에서 잘 사용하고 있음
'Work > Conference' 카테고리의 다른 글
HashCorp 밋업 - 데브시스터즈 Valut 사용기 (0) | 2018.08.15 |
---|---|
HashoCorp 밋업 - 레거시 위에서 재현 가능한 환경 구축하기 (0) | 2018.08.15 |
Golang 밋업 - Bazel 소개와 카카오 게임즈 사례 (0) | 2018.08.14 |
GDG Korea WebTech 후기 (0) | 2016.09.25 |
SK Tech Planet 2015 참관 후기 (0) | 2015.10.08 |
댓글