Azure DevOps란?
Azure DevOps는 Microsoft가 제공하는 올인원 DevOps 플랫폼으로, 소프트웨어 개발 라이프사이클(SDLC) 전반을 지원하는 통합 도구 모음입니다. 계획, 코드 개발, 빌드, 테스트, 배포, 모니터링에 이르는 모든 단계를 하나의 플랫폼에서 관리할 수 있어, 개발팀의 협업 효율과 배포 속도를 비약적으로 향상시킵니다. 2018년 Visual Studio Team Services(VSTS)가 Azure DevOps로 재브랜딩되면서 클라우드 네이티브 환경에 최적화된 형태로 진화했습니다.
Azure DevOps는 5가지 핵심 서비스로 구성됩니다. Azure Boards(스크럼/칸반 기반 프로젝트 관리), Azure Repos(Git 저장소), Azure Pipelines(CI/CD 자동화), Azure Test Plans(테스트 관리), Azure Artifacts(패키지 피드 관리)가 그것입니다. 각 서비스는 독립적으로 사용할 수도 있고, 통합해 완전한 DevOps 워크플로우를 구성할 수도 있습니다. 특히 GitHub, Jenkins, Terraform, Kubernetes 등 외부 도구와의 폭넓은 연동을 지원해 기존 도구 체인과의 통합도 원활합니다.
CI/CD 파이프라인의 핵심 개념
CI/CD(Continuous Integration/Continuous Delivery)는 현대 소프트웨어 개발의 핵심 방법론입니다. 지속적 통합(CI)은 개발자가 코드를 변경할 때마다 자동으로 빌드와 테스트를 실행해 통합 오류를 조기에 발견하는 관행이며, 지속적 배포(CD)는 검증된 코드를 자동으로 프로덕션 환경까지 배포하는 과정입니다.
Azure Pipelines는 YAML 기반의 선언적 파이프라인 정의를 통해 CI/CD를 구현합니다. 코드 저장소에 azure-pipelines.yml 파일을 추가하면 파이프라인이 버전 관리되고, 코드와 인프라 설정이 함께 추적됩니다. 이를 ‘파이프라인 as 코드(Pipeline as Code)’ 방식이라 하며, 파이프라인 변경 이력 추적, 코드 리뷰, 롤백이 용이해집니다.
Azure Pipelines 시작하기
1. Azure DevOps 조직 및 프로젝트 생성
Azure DevOps(dev.azure.com)에 접속해 조직(Organization)을 생성합니다. 조직은 회사나 팀 단위로 생성하며, 그 아래에 프로젝트를 만들어 저장소, 파이프라인, 보드 등을 관리합니다. 새 프로젝트를 생성할 때 공개(Public) 또는 비공개(Private) 가시성을 선택하고, 버전 관리 시스템(Git 또는 TFVC)을 지정합니다. 대부분의 현대 개발팀은 Git을 사용합니다.
2. Azure Repos에 코드 연결
Azure Repos는 무제한 Git 저장소를 제공합니다. 기존 GitHub, GitLab 저장소를 연동하거나, Azure Repos에 직접 코드를 푸시할 수 있습니다. 브랜치 보호 정책(Branch Policy)을 설정해 main 브랜치에 직접 푸시를 금지하고, 풀 리퀘스트(PR) 리뷰와 CI 통과를 필수화하면 코드 품질을 효과적으로 관리할 수 있습니다.
3. 첫 번째 CI 파이프라인 작성
Node.js 애플리케이션을 예로 든 기본 CI 파이프라인 YAML은 다음과 같습니다. trigger 섹션에 main을 지정하면 main 브랜치에 푸시가 발생할 때마다 파이프라인이 실행됩니다. pool에서 ubuntu-latest를 지정해 Microsoft 호스팅 에이전트를 사용하고, steps에서 npm install 및 npm test를 실행합니다. 테스트가 통과하면 npm run build로 빌드 아티팩트를 생성하고 PublishBuildArtifacts 태스크로 저장합니다.
파이프라인 에이전트는 Microsoft 호스팅(Microsoft-hosted)과 자체 호스팅(Self-hosted) 두 가지 유형이 있습니다. Microsoft 호스팅 에이전트는 별도 관리 없이 즉시 사용 가능하며, Ubuntu, Windows, macOS 환경을 지원합니다. 자체 호스팅 에이전트는 내부 네트워크 접근이 필요하거나 특수한 소프트웨어 환경이 필요할 때 사용합니다.
CD 파이프라인: 스테이징 및 프로덕션 배포
멀티 스테이지 파이프라인
실무에서는 Dev → Staging → Production 순서로 배포 환경을 거치는 멀티 스테이지 파이프라인을 구성합니다. YAML에서 stages 키워드를 사용해 각 스테이지를 정의하고, dependsOn으로 의존 관계를 설정합니다. Staging 스테이지에는 Environment 보호 규칙(Approval Gate)을 설정해 담당자의 수동 승인 후 배포가 진행되도록 제어할 수 있습니다.
Azure Web App 배포
Azure App Service(Web App)에 배포하려면 AzureWebApp 태스크를 사용합니다. azureSubscription에 서비스 커넥션을 지정하고, appName에 배포 대상 Web App 이름을 입력합니다. 슬롯(Slot) 배포를 활용하면 Blue-Green 배포 전략을 구현해 무중단 배포(Zero Downtime Deployment)를 실현할 수 있습니다. 새 버전을 스테이징 슬롯에 배포하고, 검증 후 프로덕션 슬롯과 스왑(Swap)하는 방식입니다.
컨테이너 기반 배포: ACR + AKS
컨테이너 워크로드는 Azure Container Registry(ACR)에 Docker 이미지를 푸시하고, Azure Kubernetes Service(AKS)에 배포하는 패턴을 많이 사용합니다. Docker 빌드 태스크로 이미지를 빌드하고, AzureCLI 태스크로 ACR에 푸시한 뒤, KubernetesManifest 태스크로 AKS에 롤링 업데이트를 적용합니다. 이미지 태그를 Build.BuildId로 설정하면 각 빌드마다 고유한 이미지가 생성되어 롤백도 용이해집니다.
Azure DevOps 보안 및 시크릿 관리
Variable Groups와 Azure Key Vault 연동
파이프라인에서 DB 비밀번호, API 키 등 민감 정보는 Variable Groups에 저장하고 Secret 변수로 표시해 로그에 마스킹 처리합니다. 더 나아가 Azure Key Vault와 Variable Group을 연동하면, Key Vault에서 시크릿을 직접 파이프라인에 주입할 수 있습니다. 이 방식은 시크릿 로테이션도 Key Vault에서 일괄 관리할 수 있어 보안성이 크게 향상됩니다.
서비스 커넥션 관리
Azure 리소스에 접근하기 위한 서비스 커넥션은 최소 권한 원칙에 따라 구성합니다. 프로젝트별, 환경별로 별도 서비스 주체(Service Principal)를 생성하고, 해당 환경의 리소스 그룹에만 Contributor 권한을 부여합니다. 서비스 커넥션 사용을 특정 파이프라인으로 제한하는 파이프라인 권한 설정도 반드시 활용하세요.
파이프라인 최적화 전략
캐싱으로 빌드 속도 향상
npm, pip, Maven 등의 패키지 의존성은 매번 다운로드하면 시간이 많이 소요됩니다. Cache 태스크를 활용해 패키지 캐시를 저장하면 반복 빌드 시 다운로드를 건너뛰어 빌드 시간을 50~80% 단축할 수 있습니다. 캐시 키는 package-lock.json이나 requirements.txt의 해시값으로 설정해, 의존성 변경 시 자동으로 캐시를 갱신합니다.
병렬 실행으로 테스트 가속
테스트 스위트가 크다면 strategy/matrix를 사용해 여러 에이전트에서 병렬로 테스트를 실행할 수 있습니다. 예를 들어 Node.js 14, 16, 18 환경에서 동시에 테스트를 실행하거나, 단위 테스트와 통합 테스트를 별도 잡(Job)에서 병렬 실행하면 전체 파이프라인 실행 시간을 크게 줄일 수 있습니다.
Azure Boards로 프로젝트 관리
Azure Boards는 스크럼, 칸반, CMMI 세 가지 프로세스 템플릿을 지원합니다. Epic → Feature → User Story → Task의 계층 구조로 작업 항목(Work Item)을 관리하며, 스프린트 계획, 번다운 차트, 누적 흐름 다이어그램(CFD) 등 애자일 관리에 필요한 시각화 도구를 제공합니다. 커밋 메시지나 PR 설명에 #이슈번호를 입력하면 코드 변경과 작업 항목이 자동으로 연결되어 추적성이 향상됩니다.
마치며
Azure DevOps는 소규모 스타트업부터 대규모 엔터프라이즈까지 모든 규모의 개발팀이 활용할 수 있는 강력한 DevOps 플랫폼입니다. CI/CD 파이프라인을 통한 자동화, 멀티 스테이지 배포 전략, Key Vault 연동을 통한 보안 강화를 차근차근 적용해 나가면 개발 속도와 품질을 동시에 높일 수 있습니다. 처음 시작한다면 Azure DevOps 무료 플랜(월 1,800분 CI/CD 포함)으로 실습해 보세요.