' Make ' 유틸리티를 모르는 소프트웨어 엔지니어를 찾기는 어려울 것입니다 . ' GNU Make '는 실행 파일 생성 및 애플리케이션 코드 빌드와 관련된 여러 작업을 제어하는 도구입니다.
' Make '는 간단한 코드 컴파일 및 설치부터 애플리케이션의 모든 종속성 파일을 수집하는 것까지 다양한 기능을 제공합니다. Make는 솔루션 배포 파이프라인을 구현하는 데에도 활용할 수 있도록 훌륭하게 설계되었습니다. 이제 이를 어떻게 구현할 수 있는지 살펴보겠습니다.
최근 저희에게 필요한 것 중 하나는 클라우드 에 서비스를 자동화하여 배포하는 것이었습니다 . 저희 시스템은 다른 여러 제품 및 서비스의 핵심이기 때문에 기능 테스트, 성능 테스트, 통합 테스트 등 각기 다른 목적에 맞는 여러 환경이 필요하게 되었습니다.
전용 환경에 대한 이러한 수요를 충족하기 위해, 저희는 다른 클라우드 전용 도구 대신 ' Make ' 유틸리티를 사용하기로 했습니다. 그리고 저희의 기술 선택이 성공적이어서 매우 기쁩니다. 자세한 내용을 설명해 드리겠습니다.
운영 비용을 최소화하는 것이 주요 제약 조건 중 하나였기 때문에, 새로운 도구와 기술의 수를 최소화하고 오픈소스 기술만 고수하기로 결정했습니다. 이미 ' Go ' 언어 로 작성된 컴포넌트를 빌드하기 위해 ' Make ' 도구를 사용하고 있었습니다 . 다음 단계는 'Make'를 사용하여 Docker 이미지 빌드 작업을 실행하고, 이미지를 비공개 저장소에 푸시하고, 서비스 운영에 필요한 모든 클라우드 서비스를 시작/생성하는 것이었습니다.
Makefile의 타겟 규칙 덕분에 전체 워크플로우를 더 작고 독립적인 모듈로 나눌 수 있었습니다. 도커 이미지 빌드, 이미지 푸시, 클러스터 실행 등 각 단계에 대해 별도의 타겟 규칙을 작성했습니다.
코드 빌드 및 Docker 이미지 생성
짓다:
@echo “코드 컴파일…”
# 언어별 빌드 명령이 여기에 있습니다.
docker-build: 빌드
@echo “Docker 이미지 빌드 중…”
$(DOCKERBUILD) . -t $(ENV)$(바이너리_이름) -f $(PROJBASE)/Dockerfile
Docker 이미지를 개인 저장소에 푸시하기
도커 푸시:
@echo “클라우드 허브에 Docker 이미지를 푸시하는 중…”
# 여기에는 Docker 이미지를 해당 저장소에 푸시하기 위한 클라우드 서비스 제공자별 명령이 포함되어 있습니다.
해당 클라우드에 애플리케이션 배포
배포:
@echo “환경에 애플리케이션 배포…”
# 여기에는 클러스터에 애플리케이션을 배포하기 위한 클라우드 서비스 공급자별 명령이 포함되어 있습니다.
# 예를 들어 AWS 클라우드의 경우 여기에는 스택을 생성하는 cloudformation 명령이 포함됩니다.
# 마찬가지로 Terraform을 사용하여 해당 클라우드에 애플리케이션을 배포할 수도 있습니다.
테이블 생성 시작
테이블 생성:
# 여기에는 모든 애플리케이션 테이블의 생성이 포함됩니다.
@sh 배포/테이블_생성.sh
종단 간 배포 시작
e2e-deploy: docker-build docker-push create-table 배포
바로 그것입니다. 애플리케이션 배포를 트리거하는 간단하면서도 효과적인 접근 방식이 아닐까요? 게다가, 어떤 클라우드에든 비용 효율적으로 애플리케이션을 배포할 수 있습니다. 게다가 클라우드에 구애받지 않는 배포 방식이라 어떤 것도 밀접하게 결합되지 않습니다.



