Goployer 문서

Goployer는 AWS 오토스케일링 그룹을 활용한 오픈소스 배포 툴입니다. Goployer는 전체 배포 사이클을 책임지고 관리하며, 배포 히스토리를 기록합니다. 사용자는 userdata를 통해서 서버 세팅에 집중하기만 하면 되고, 나머지는 Goployer가 안전하게 배포해줍니다.

특징

  • 배포 관리
    • 배포를 코드로! - Goployer는 배포에 필요한 정보를 manifest 파일로 정의하기 때문에 코드로 배포를 관리하실 수 있습니다.
  • 버저닝을 통한 안전한 배포
    • 블루/그린 배포 - Goployer는 안전한 배포를 위해서 기본적으로 블루/그린 배포를 사용합니다. Goployer는 새로운 오토스케일링 그룹을 생성하고, 이를 타겟그룹에 붙이는 방식으로 배포를 수행합니다. 새로운 오토스케일링 그룹의 인스턴스가 전부 정상인 경우에만 이전 버전의 오토스케일링 그룹을 삭제합니다.
    • 버저닝 - 오토스케일링 이름에 버전이 붙기 때문에 손쉽게 새로운 버전을 확인하실 수 있습니다.
  • 대부분의 오토스케일링 기능 지원
    • 오토스케일링 정책 - Goployer를 통해 손쉽게 AWS CloudWatch 알람과 오토스케일링 정책을 정의하실 수 있습니다.
    • Spot Instance - 스팟 인스턴스를 사용해 Launch Template을 만드실 수 있습니다.
    • Mixed Instance Policy - Mixed Instance Policy를 통해 온디맨드와 스팟 인스턴스를 동시에 사용하실 수 있습니다.
  • 매트릭 기능 지원
    • 배포 히스토리 관리 - AWS DynamoDB에 배포 히스토리를 기록함으로써 배포 히스토리를 관리하실 수 있습니다.

Demo

base

Goployer 작동 원리

  • Goployer는 아래의 단계를 통해 배포를 수행합니다.
  1. 새로운 배포 버전을 체크합니다. 만약 이전에 배포했던 오토스케일링 그룹이 있다면(예를 들어 hello-v001), 다음 버전은 hello-v002가 됩니다.
  2. 새로운 Launch Template을 생성합니다.
  3. 2번에서 생성된 Launch Template을 이용해 새로운 오토스케일링을 만듭니다. 새롭게 생성된 오토스케일링 그룹은 매니페스트 파일에서 정의한 타켓그룹들에 자동으로 붙습니다.
  4. 새로운 오토스케일링의 인스턴스들이 모두 정상인지 확인합니다. 모든 인스턴스가 health check을 통과하고 나면, 다음 단계로 넘어갑니다.
  5. (선택) 매니페스트 파일에 austocaling을 명시한 경우에는 Goployer가 Cloudwatch 알람과 함께 오토스케일링 정책을 생성합니다.
  6. 5번까지 배포가 완료되면, Goployer는 같은 어플리케이션의 이전 버전 오토스케일링 그룹을 삭제합니다. Launch Template 또한 같이 삭제됩니다.
  7. 매트릭 기능을 사용하시는 경우에는 종료된 오토스케일링에 관한 지표를 DynamoDB에 기록합니다.