애저 파이프라인
1. 개요
1. 개요
애저 파이프라인은 마이크로소프트의 클라우드 컴퓨팅 플랫폼인 마이크로소프트 애저에서 제공하는 핵심 CI/CD 도구이다. 소프트웨어의 빌드, 테스트, 배포를 자동화하는 워크플로를 구축하고 관리하는 데 사용되며, 데브옵스 실천법과 소프트웨어 개발 생명주기 전반의 효율성을 높이는 것을 목표로 한다.
이 서비스는 코드 변경사항을 지속적으로 통합하고 다양한 환경에 안정적으로 배포하는 파이프라인을 구성할 수 있게 해준다. 사용자는 시각적 디자이너 또는 YAML 파일을 통해 파이프라인을 정의하여, 애플리케이션 개발부터 프로덕션 환경에 이르는 복잡한 과정을 자동으로 처리할 수 있다.
애저 파이프라인은 마이크로소프트 애저 생태계와 긴밀하게 통합되어 있으며, 깃허브나 애저 레포지토리와 같은 다양한 소스 코드 저장소와 연결할 수 있다. 이를 통해 개발 팀은 코드 품질을 유지하면서도 보다 빠른 릴리스 주기를 달성할 수 있게 된다.
2. 주요 구성 요소
2. 주요 구성 요소
2.1. 파이프라인
2.1. 파이프라인
애저 파이프라인은 마이크로소프트 애저의 핵심 CI/CD 도구로, 소프트웨어의 빌드, 테스트, 배포 과정을 자동화하는 클라우드 컴퓨팅 서비스이다. 이 서비스는 데브옵스 관행을 구현하여 개발과 운영 팀 간의 협업을 강화하고, 소프트웨어 제공 속도와 안정성을 높이는 데 주력한다.
파이프라인은 코드 변경 사항을 감지하여 자동으로 실행되는 일련의 작업 흐름을 정의한다. 이는 소프트웨어 개발 라이프사이클 전반에 걸쳐 반복 가능하고 신뢰할 수 있는 프로세스를 구축하는 데 기여한다. 사용자는 파이프라인을 통해 애플리케이션 코드를 컴파일하고, 단위 테스트를 실행하며, 다양한 환경에 배포하는 작업을 자동으로 처리할 수 있다.
주요 구성 요소로는 전체 자동화 프로세스를 정의하는 파이프라인, 파이프라인 내의 논리적 단계를 구분하는 스테이지, 각 스테이지에서 실행되는 작업 단위인 잡, 그리고 잡 내의 개별 명령이나 스크립트를 수행하는 태스크가 있다. 이러한 구성 요소들은 함께 협력하여 복잡한 배포 워크플로우를 관리한다.
애저 파이프라인은 클래식 파이프라인과 YAML 파이프라인이라는 두 가지 주요 유형을 제공하며, 사용자는 프로젝트 요구사항과 선호도에 따라 선택할 수 있다. 또한 마이크로소프트 애저 DevOps 서비스 제품군과 긴밀하게 통합되어 프로젝트 관리, 버전 제어, 테스트 계획 수립 등 포괄적인 데브옵스 생태계를 구성한다.
2.2. 스테이지
2.2. 스테이지
스테이지는 애저 파이프라인에서 실행 흐름을 논리적으로 구분하는 단위이다. 하나의 파이프라인은 여러 개의 스테이지로 구성될 수 있으며, 각 스테이지는 특정한 목표를 가진 작업들의 집합을 나타낸다. 일반적인 예로는 코드 빌드, 단위 테스트 실행, 스테이징 환경 배포, 프로덕션 환경 배포 등을 각각 별도의 스테이지로 정의한다. 스테이지는 파이프라인의 실행 흐름을 시각적으로 구조화하고, 특정 단계의 성공 또는 실패를 명확히 구분할 수 있게 해준다.
스테이지 내에는 하나 이상의 잡이 포함된다. 각 스테이지는 독립적으로 실행될 수 있으며, 스테이지 간의 의존 관계를 설정하여 특정 순서대로 실행되도록 제어할 수 있다. 예를 들어, '테스트' 스테이지는 '빌드' 스테이지가 성공적으로 완료된 후에만 실행되도록 설정할 수 있다. 이는 지속적 통합 및 지속적 배포 프로세스에서 각 단계의 무결성을 보장하는 데 중요한 역할을 한다.
스테이지의 주요 기능 중 하나는 승인과 검토를 통한 배포 제어이다. 특히 프로덕션 환경과 같은 중요한 환경으로의 배포를 담당하는 스테이지에는 수동 승인 또는 자동 검증 게이트를 설정할 수 있다. 이를 통해 배포 전에 필요한 검토를 수행하거나 특정 조건이 충족되었는지 확인한 후에만 다음 단계로 진행할 수 있어, 배포의 안정성과 신뢰성을 높인다.
또한 스테이지는 서로 다른 에이전트 풀이나 가상 머신 이미지를 사용하도록 구성할 수 있다. 이는 각 작업 단계에 맞는 최적의 실행 환경을 제공하기 위함이다. 예를 들어, 리눅스 기반의 빌드 작업과 윈도우 기반의 패키징 작업을 별도의 스테이지로 분리하여 각각에 적합한 에이전트에서 실행하도록 할 수 있다. 이러한 유연성은 복잡한 소프트웨어 개발 라이프사이클을 효율적으로 관리하는 데 도움이 된다.
2.3. 잡
2.3. 잡
잡은 애저 파이프라인에서 실행되는 하나의 독립적인 작업 단위이다. 하나의 파이프라인은 여러 개의 잡으로 구성될 수 있으며, 각 잡은 지정된 에이전트 풀에서 실행된다. 각 잡은 서로 다른 운영 체제나 환경(예: Windows, Linux, macOS)에서 병렬로 실행될 수 있어, 크로스 플랫폼 빌드나 테스트와 같은 시나리오에 유용하다.
잡 내부에는 순차적으로 실행되는 하나 이상의 태스크가 포함된다. 태스크는 빌드 스크립트 실행, 테스트 프레임워크 호출, 패키지 관리자를 통한 의존성 설치 등 구체적인 작업을 수행하는 가장 작은 실행 블록이다. 잡은 자신에게 할당된 에이전트에서 모든 태스크를 실행하며, 잡이 완료되면 해당 에이전트는 해제된다.
잡 간에는 기본적으로 의존 관계가 없으며 독립적으로 실행된다. 그러나 파이프라인 정의에서 특정 잡의 실행을 다른 잡의 성공 여부에 따라 조건부로 설정하거나, 잡 간에 아티팩트를 전달하도록 구성할 수 있다. 이를 통해 복잡한 워크플로우를 모델링하고, 예를 들어 빌드 잡이 성공한 후에만 배포 잡이 실행되도록 할 수 있다.
2.4. 태스크
2.4. 태스크
태스크는 애저 파이프라인에서 실행되는 가장 기본적인 작업 단위이다. 하나의 잡은 여러 개의 태스크로 구성되며, 각 태스크는 빌드, 테스트, 배포, 스크립트 실행 등 특정 작업을 수행하는 실행 파일 또는 스크립트를 의미한다. 태스크는 재사용이 가능한 미리 정의된 블록으로, 복잡한 자동화 과정을 단순화하고 표준화하는 데 기여한다.
애저 파이프라인은 다양한 공통 작업을 위한 기본 제공 태스크를 제공한다. 예를 들어, Git 리포지토리에서 코드를 체크아웃하는 태스크, .NET 또는 Node.js 프로젝트를 빌드하는 태스크, Docker 이미지를 빌드하고 푸시하는 태스크, Azure App Service나 Azure Kubernetes Service에 애플리케이션을 배포하는 태스크 등이 있다. 사용자는 마켓플레이스에서 커뮤니티 또는 마이크로소프트가 제공하는 추가 태스크를 설치하거나, 직접 스크립트를 작성하는 커스텀 태스크를 정의하여 파이프라인을 확장할 수 있다.
각 태스크는 입력 매개변수, 실행 조건, 출력 변수 등을 구성할 수 있다. 이를 통해 태스크 간에 데이터를 전달하거나, 특정 조건이 충족될 때만 태스크가 실행되도록 제어하는 것이 가능하다. 태스크의 이러한 유연성과 모듈성은 복잡한 CI/CD 워크플로우를 효율적으로 구축하는 핵심 요소가 된다.
3. 파이프라인 유형
3. 파이프라인 유형
3.1. 클래식 파이프라인
3.1. 클래식 파이프라인
클래식 파이프라인은 마이크로소프트 애저 파이프라인의 초기 구성 방식으로, 마이크로소프트가 제공하는 웹 기반의 시각적 편집기를 사용하여 구축된다. 이 방식은 코드 작성 없이도 CI/CD 워크플로우를 설계할 수 있어, 파이프라인 개념에 익숙하지 않은 사용자나 빠르게 자동화 프로세스를 구성해야 하는 경우에 적합하다. 사용자는 브라우저 상에서 드래그 앤 드롭으로 스테이지, 잡, 태스크를 추가하고 순서를 구성하여 소프트웨어의 빌드, 테스트, 배포 과정을 정의한다.
클래식 파이프라인의 구조는 주로 빌드 파이프라인과 릴리스 파이프라인으로 구분된다. 빌드 파이프라인은 소스 코드 저장소(Git, Azure Repos 등)의 변경 사항을 감지하여 애플리케이션을 컴파일하고, 단위 테스트를 실행하며, 배포 가능한 패키지(아티팩트)를 생성하는 역할을 담당한다. 이후 릴리스 파이프라인은 이렇게 생성된 아티팩트를 받아 다양한 환경(개발, 스테이징, 프로덕션 등)으로의 배포를 관리하고, 필요한 승인 과정을 설정할 수 있다.
이 방식의 주요 장점은 낮은 진입 장벽과 직관적인 사용자 경험에 있다. 그러나 파이프라인 설정이 JSON 형식의 백엔드 정의 파일에 저장되기 때문에, 버전 관리와 코드 리뷰, 대규모 복제나 템플릿화에는 YAML 파이프라인에 비해 제약이 따른다. 따라서 복잡하고 반복적인 배포 파이프라인을 코드로서 관리하고자 하는 현대적인 데브옵스 실무에는 YAML 방식이 더 권장되는 편이다.
3.2. YAML 파이프라인
3.2. YAML 파이프라인
애저 파이프라인은 YAML 형식을 사용하여 파이프라인을 코드로 정의하는 방식을 제공한다. 이 방식은 파이프라인 설정을 텍스트 파일로 관리하여 버전 관리 시스템에 저장하고, 코드 리뷰와 협업을 용이하게 한다. YAML 파일은 파이프라인의 전체 구조, 스테이지, 잡, 태스크를 선언적으로 기술한다.
YAML 파이프라인은 애저 데브옵스 리포지토리에 azure-pipelines.yml 파일을 생성하여 구성한다. 이 파일에는 빌드나 배포를 실행할 조건을 정의하는 트리거, 작업을 실행할 에이전트 풀, 그리고 실행할 일련의 스테이지와 잡이 명시된다. 각 잡 내에서는 스크립트 실행, 도구 설치, 아티팩트 게시 등 구체적인 작업을 태스크로 정의한다.
기존의 클래식 편집기를 통해 UI로 구성하던 방식과 비교하여, YAML 파이프라인은 구성의 일관성, 재현성, 버전 관리의 장점을 가진다. 특히 다중 스테이지 파이프라인 구성을 지원하여 빌드, 테스트, 다양한 환경(개발, 스테이징, 프로덕션)에 대한 배포 과정을 하나의 YAML 파일에서 관리할 수 있다. 이를 통해 지속적 통합과 지속적 배포 워크플로우를 보다 효율적으로 구현한다.
YAML 파이프라인은 마이크로소프트 애저의 다양한 서비스와의 통합뿐만 아니라, 깃허브 같은 외부 버전 관리 시스템과도 연동이 가능하다. 또한 템플릿 기능을 활용하여 공통적인 작업 단위를 재사용하거나, 파라미터를 사용하여 파이프라인을 유연하게 구성할 수 있어 대규모 프로젝트에서도 확장성을 보장한다.
4. 작동 방식
4. 작동 방식
4.1. 트리거 및 실행
4.1. 트리거 및 실행
애저 파이프라인의 실행은 다양한 트리거에 의해 시작된다. 가장 일반적인 트리거는 버전 관리 시스템인 애저 레포나 깃허브의 특정 브랜치에 코드 변경(커밋)이 푸시되는 것이다. 또한, 일정에 따라 주기적으로 실행되도록 예약하거나, 다른 파이프라인의 완료를 트리거로 삼거나, 수동으로 직접 실행을 시작할 수도 있다.
파이프라인이 실행되면 정의된 워크플로에 따라 스테이지와 잡이 순차적 또는 병렬로 처리된다. 각 실행은 고유한 실행 기록을 생성하며, 애저 데브옵스 포털에서 실시간 로그와 결과를 상세히 확인할 수 있다. 실행 상태는 성공, 실패, 취소됨 등으로 표시되며, 실패한 태스크의 경우 문제를 진단하고 재실행하는 것이 가능하다.
4.2. 에이전트 및 풀
4.2. 에이전트 및 풀
애저 파이프라인에서 작업을 실제로 실행하는 컴퓨팅 리소스를 에이전트라고 한다. 에이전트는 파이프라인에 정의된 태스크를 수행하는 서버 또는 가상 머신으로, 소스 코드를 가져오거나 애플리케이션을 빌드하고 테스트하며 배포하는 등의 작업을 처리한다. 사용자는 직접 호스트하는 자체 호스팅 에이전트를 구성하거나, 마이크로소프트가 관리하는 마이크로소프트 호스팅 에이전트를 사용할 수 있다.
에이전트들은 에이전트 풀이라는 논리적 그룹으로 관리된다. 풀은 특정 요구 사항이나 목적을 공유하는 에이전트들의 집합이다. 예를 들어, 특정 운영체제나 필수 소프트웨어가 설치된 에이전트들을 별도의 풀로 구성하여 파이프라인이 해당 환경에서 실행되도록 할 수 있다. 조직 수준의 기본 풀 외에도 프로젝트별로 전용 풀을 생성해 리소스를 격리하고 관리 효율성을 높일 수 있다.
파이프라인 작업이 실행될 때, 시스템은 파이프라인 YAML 파일이나 클래식 편집기에서 지정한 요구사항에 맞는 사용 가능한 에이전트를 해당 풀에서 찾아 작업을 할당한다. 이를 통해 운영체제, 에이전트 사양, 또는 특수 소프트웨어 요구사항을 만족하는 환경에서 작업이 안정적으로 수행된다. 에이전트와 풀 메커니즘은 애저 파이프라인이 다양한 빌드 및 배포 시나리오에 유연하게 대응할 수 있는 기반을 제공한다.
4.3. 아티팩트 관리
4.3. 아티팩트 관리
애저 파이프라인에서 아티팩트는 파이프라인 실행 과정에서 생성되거나 소비되는 파일 또는 패키지 모음이다. 주로 빌드 결과물, 테스트 보고서, 배포 패키지 등이 여기에 해당하며, 파이프라인의 각 스테이지나 잡 간에 데이터를 전달하는 핵심 매개체 역할을 한다. 아티팩트 관리는 이러한 파일들을 효율적으로 저장, 공유, 배포할 수 있도록 지원하여, 지속적 통합과 지속적 배포 워크플로우의 원활한 연계를 가능하게 한다.
아티팩트를 게시하거나 다운로드하는 작업은 파이프라인 정의 내의 태스크를 통해 수행된다. 파이프라인은 게시된 아티팩트를 중앙 저장소에 자동으로 보관하며, 이후의 스테이지나 다른 파이프라인 실행에서 이를 참조하여 사용할 수 있다. 이를 통해 빌드 단계에서 생성된 동일한 결과물을 테스트 및 배포 단계에서 재사용함으로써 일관성을 보장하고, 불필요한 재빌드를 방지한다.
아티팩트 관리의 주요 장점은 파이프라인 실행 기록과 함께 결과물의 버전이 명확하게 추적된다는 점이다. 사용자는 특정 빌드에서 생성된 정확한 아티팩트를 쉽게 식별하고 검색할 수 있으며, 필요시 이전 버전으로의 롤백이나 배포도 용이하다. 이는 데브옵스 실천법 중 하나인 변경 사항의 완전한 추적성과 감사 가능성을 실현하는 데 기여한다.
5. 주요 기능
5. 주요 기능
5.1. 지속적 통합(CI)
5.1. 지속적 통합(CI)
애저 파이프라인은 지속적 통합의 핵심 원칙을 구현하는 데 사용된다. 지속적 통합은 개발자들이 코드 변경 사항을 중앙 저장소에 자주 병합하는 실천법으로, 애저 파이프라인은 이를 자동화된 빌드 및 테스트 과정을 통해 지원한다. 개발자가 코드를 커밋하거나 풀 리퀘스트를 생성하면 파이프라인이 자동으로 실행되어 최신 소스 코드를 가져오고, 애플리케이션을 컴파일하며, 미리 정의된 일련의 테스트를 실행한다. 이 과정은 코드 품질을 지속적으로 검증하고 통합 문제를 조기에 발견하는 데 목적이 있다.
파이프라인 내에서 지속적 통합 워크플로우는 일반적으로 여러 태스크로 구성된 잡을 통해 정의된다. 주요 태스크로는 소스 코드 체크아웃, 종속성 관리, 컴파일, 단위 테스트 실행, 코드 분석 도구 실행 등이 포함될 수 있다. 애저 파이프라인은 Windows, Linux, macOS 에이전트를 모두 지원하므로, 다양한 기술 스택과 언어로 작성된 프로젝트의 빌드 및 테스트 환경을 구성할 수 있다. 또한 Docker 컨테이너를 빌드하거나 컨테이너 내에서 작업을 실행하는 것도 가능하다.
지속적 통합 파이프라인의 결과물은 빌드 아티팩트로 관리된다. 컴파일된 이진 파일, 패키지, 테스트 리포트, 코드 커버리지 보고서 등이 여기에 해당한다. 애저 파이프라인은 이러한 아티팩트를 애저 아티팩트 피드나 다른 저장소에 게시하여, 후속 지속적 배포 단계에서 쉽게 활용할 수 있도록 한다. 이를 통해 개발 팀은 자동화된 파이프라인을 통해 소프트웨어의 통합 상태를 항상 확인하고, 안정적인 빌드 결과를 빠르게 제공받을 수 있다.
5.2. 지속적 배포(CD)
5.2. 지속적 배포(CD)
애저 파이프라인의 지속적 배포(CD) 기능은 소프트웨어의 빌드 및 테스트가 완료된 후, 이를 다양한 환경에 자동으로 릴리스하고 배포하는 과정을 담당한다. 이는 지속적 통합으로 완성된 아티팩트를 실제 서비스 환경에 안정적으로 전달하는 데 중점을 둔다. 사용자는 파이프라인을 구성하여 개발, 스테이징, 프로덕션과 같은 다중 배포 환경으로의 자동화된 릴리스 워크플로를 정의할 수 있으며, 이를 통해 수동 개입을 최소화하고 배포의 일관성과 신뢰성을 높인다.
CD 파이프라인은 일반적으로 승인 게이트, 조건부 실행, 롤백 전략과 같은 고급 제어 메커니즘을 포함한다. 예를 들어, 프로덕션 환경으로의 배포 전에 담당자의 수동 승인을 요구하거나, 자동화된 스모크 테스트를 통과한 후에만 다음 스테이지로 진행하도록 설정할 수 있다. 또한 애저 파이프라인은 애저 앱 서비스, 애저 쿠버네티스 서비스, 가상 머신 또는 온프레미스 서버를 포함한 다양한 대상 플랫폼에 대한 배포 작업을 광범위하게 지원한다.
이를 통해 팀은 애자일 및 데브옵스 관행에 따라 소프트웨어 업데이트를 더 빠르고 빈번하게 제공할 수 있다. 애저 파이프라인의 CD 기능은 인프라스트럭처 배포, 데이터베이스 스키마 변경, 다중 클라우드 환경 배포와 같은 복잡한 사용 사례를 자동화하는 데도 활용된다. 결과적으로 지속적 배포는 소프트웨어 제공 가치 흐름의 최종 단계를 자동화하여 신속한 출시와 높은 서비스 품질 유지를 동시에 가능하게 한다.
5.3. 다중 에이전트 지원
5.3. 다중 에이전트 지원
애저 파이프라인은 복잡한 워크플로를 처리하기 위해 다중 에이전트를 동시에 사용하는 것을 지원한다. 이를 통해 병렬 처리가 가능해져 빌드, 테스트, 배포 작업의 전체 소요 시간을 크게 단축할 수 있다. 단일 파이프라인 실행 내에서 서로 다른 태스크를 여러 에이전트에 분배하여 동시에 실행함으로써 효율성을 극대화한다.
이 기능은 특히 대규모 애플리케이션이나 마이크로서비스 아키텍처에서 유용하다. 예를 들어, 여러 개의 독립적인 모듈을 병렬로 빌드하거나, 다양한 운영 체제 및 프레임워크에 걸쳐 동시에 테스트를 실행하는 시나리오에 적합하다. 각 잡은 필요한 에이전트 풀을 지정할 수 있으며, 풀은 Windows, Linux, macOS 등 다양한 운영 체제를 실행하는 호스트로 구성될 수 있다.
다중 에이전트 지원은 YAML 파이프라인을 통해 선언적으로 구성할 수 있다. 개발자는 파이프라인 정의 파일 내에서 특정 스테이지나 잡이 병렬로 실행되어야 함을 명시하고, 각각에 사용할 에이전트 풀의 요구 사항을 정의한다. 이를 통해 리소스 활용을 최적화하고, 빠른 피드백 루프를 제공하는 데브옵스 실천에 기여한다.
5.4. 확장성 및 통합
5.4. 확장성 및 통합
애저 파이프라인은 다양한 외부 도구 및 서비스와의 통합을 광범위하게 지원하며, 대규모 프로젝트와 복잡한 워크플로우를 처리할 수 있는 높은 확장성을 제공한다. 이는 마이크로소프트 애저 생태계 내의 다른 서비스뿐만 아니라 타사 솔루션과도 원활하게 연동될 수 있도록 설계되었다. 예를 들어, 깃허브, 비트버킷, 서브버전과 같은 버전 관리 시스템과의 통합을 통해 코드 변경 시 파이프라인을 자동으로 트리거할 수 있으며, 애저 리포지토리와의 통합도 기본적으로 제공된다.
확장성 측면에서 애저 파이프라인은 마이크로소프트 애저의 클라우드 인프라를 기반으로 하여 필요에 따라 컴퓨팅 리소스를 탄력적으로 확장할 수 있다. 특히, YAML 파이프라인을 사용하면 복잡한 다중 스테이지 CI/CD 워크플로우를 코드로 정의하여 관리할 수 있어, 인프라 변경이나 배포 전략의 진화에 유연하게 대응할 수 있다. 또한, 애저 DevOps 프로젝트 내에서 애저 보드, 애저 테스트 플랜, 애저 아티팩트와 같은 다른 도구들과 통합되어 종합적인 데브옵스 라이프사이클 관리를 가능하게 한다.
애저 파이프라인은 마이크로소프트 생태계 외부의 도구와도 강력한 통합 기능을 제공한다. 사용자는 파워셸, 파이썬, 배시 스크립트를 실행하거나, 도커 컨테이너를 빌드 및 푸시하며, 쿠버네티스 클러스터에 배포하는 태스크를 쉽게 구성할 수 있다. 또한, 젠킨스, 슬랙, 서비스나우 등 수많은 타사 서비스와의 연동을 위한 공식 및 커뮤니티 제공 태스크와 확장 기능을 마켓플레이스를 통해 활용할 수 있어, 기존 도구 체인을 유지하면서도 애저 파이프라인의 이점을 도입하는 것이 가능하다.
6. 사용 사례
6. 사용 사례
6.1. 애플리케이션 빌드 및 테스트
6.1. 애플리케이션 빌드 및 테스트
애저 파이프라인은 소프트웨어 개발 라이프사이클에서 애플리케이션의 빌드와 테스트 과정을 자동화하는 핵심적인 역할을 수행한다. 이를 통해 개발자는 코드 변경 사항을 신속하게 통합하고, 품질을 검증하며, 안정적인 소프트웨어를 지속적으로 제공할 수 있다. 파이프라인은 소스 코드 저장소(예: 애저 레포 또는 깃허브)의 변경 사항을 감지하여 자동으로 작업을 시작하는 지속적 통합 프로세스를 구현한다.
빌드 단계에서는 파이프라인이 정의된 태스크를 순차적으로 실행하여 소스 코드를 컴파일하고, 의존성을 관리하며, 실행 가능한 패키지나 아티팩트를 생성한다. 이 과정에는 닷넷, 자바, 노드.js, 파이썬 등 다양한 프로그래밍 언어와 프레임워크에 대한 빌드 도구의 통합이 포함된다. 생성된 아티팩트는 후속 단계를 위해 애저 아티팩트와 같은 저장소에 안전하게 게시된다.
테스트 자동화는 애저 파이프라인의 중요한 기능으로, 빌드된 애플리케이션의 품질을 보장한다. 파이프라인은 단위 테스트, 통합 테스트, 코드 분석 등을 실행하여 버그를 조기에 발견하고 코드 품질 기준을 충족시킨다. 테스트 결과와 코드 커버리지 보고서는 파이프라인 실행 결과와 함께 시각적으로 제공되어 개발 팀이 상태를 쉽게 모니터링할 수 있게 한다.
이러한 빌드 및 테스트 파이프라인은 데브옵스 문화의 실천을 가능하게 하며, 개발과 운영 팀 간의 협업을 강화한다. 표준화된 자동화 프로세스를 통해 팀은 수동 개입을 최소화하면서도 일관되고 신뢰할 수 있는 방식으로 애플리케이션을 제공할 수 있다.
6.2. 인프라 배포
6.2. 인프라 배포
애저 파이프라인은 애플리케이션 코드뿐만 아니라 이를 실행하는 인프라스트럭처의 배포와 관리를 자동화하는 데 널리 사용된다. 이는 코드형 인프라 및 클라우드 환경 관리의 핵심 원칙을 실현하는 데 기여한다. 사용자는 파이프라인을 통해 가상 머신, 컨테이너, 데이터베이스, 네트워크 설정 등의 리소스를 선언적 스크립트로 정의하고, 이를 특정 환경에 안정적이고 반복 가능한 방식으로 프로비저닝할 수 있다.
인프라 배포를 위한 파이프라인은 일반적으로 애저 리소스 매니저 템플릿, 테라폼, PowerShell 스크립트 또는 Ansible 플레이북과 같은 도구의 실행을 태스크로 포함한다. 이러한 스크립트는 버전 관리 시스템에 저장되어, 애플리케이션 코드와 마찬가지로 변경 이력을 추적하고 검토할 수 있다. 파이프라인이 실행되면 연결된 에이전트가 이러한 스크립트를 실행하여 애저 내부 또는 외부의 대상 환경에 정의된 인프라를 생성하거나 업데이트한다.
이 접근 방식의 주요 이점은 일관성과 속도에 있다. 수동 구성은 오류를 유발하기 쉽고, 환경 간 차이를 만들어낼 수 있다. 애저 파이프라인을 통한 자동화된 배포는 매번 동일한 절차를 따르도록 보장하여 스테이징 환경과 프로덕션 환경의 구성을 동일하게 유지하는 데 도움을 준다. 또한, 새로운 환경을 빠르게 구축하거나 기존 인프라에 대한 변경 사항을 신속하게 롤아웃할 수 있어 민첩성을 크게 향상시킨다.
인프라 변경 역시 애플리케이션 배포와 유사한 CI/CD 워크플로우를 통해 관리될 수 있다. 즉, 인프라 코드에 대한 변경이 발생하면 파이프라인이 자동으로 트리거되어 검증 및 테스트 단계를 거친 후 승인 과정을 통해 최종 환경에 적용된다. 이를 통해 인프라 변경에 대한 가시성과 제어력을 확보하고, 데브옵스 문화의 협업을 인프라 관리 영역까지 확장할 수 있다.
6.3. 다중 환경 배포
6.3. 다중 환경 배포
애저 파이프라인은 소프트웨어를 개발, 스테이징, 프로덕션 등 여러 환경에 안정적으로 배포하는 다중 환경 배포 전략을 지원한다. 이를 통해 애플리케이션의 변경 사항을 단계적으로 검증하고 롤백 정책을 적용하여 프로덕션 환경에 대한 배포 위험을 최소화할 수 있다. 각 환경은 일반적으로 별도의 애저 리소스 그룹이나 구독으로 격리되며, 파이프라인은 환경별로 다른 구성 변수와 승인 요구 사항을 정의할 수 있다.
다중 환경 배포는 일반적으로 승인 게이트와 조건부 배포를 활용하여 구현된다. 파이프라인의 스테이지를 환경별로 구성한 후, 중요한 환경(예: 프로덕션)으로의 배포 전에 수동 승인을 요구하거나 자동화된 품질 게이트(예: 성공적인 통합 테스트 결과)를 설정할 수 있다. 또한 YAML 파이프라인에서는 deployment 잡을 사용하여 환경 리소스에 대한 수명 주기 훅과 롤백 전략을 명시적으로 정의함으로써 배포의 안정성을 높인다.
이러한 접근 방식은 마이크로소프트 애저의 다른 서비스와 긴밀하게 통합되어 있다. 예를 들어, 배포 대상 환경의 구성은 애저 키 자격 증명 모음에 안전하게 저장하고, 배포 상태는 애저 모니터를 통해 추적할 수 있다. 또한 인프라스트럭처 as 코드 도구인 애저 리소스 매니저 템플릿이나 테라폼 스크립트를 파이프라인에 통합하여 애플리케이션 코드와 함께 인프라 변경 사항도 동일한 워크플로우로 배포할 수 있다.
