Categories: 미분류

Azure DevOps를 이용한 CI/CD 파이프라인 구축법

개발과 운영의 경계를 허물고, 빠른 배포와 높은 품질의 소프트웨어 제공을 위해 많은 조직들이 DevOps를 도입하고 있습니다. 그 중심에 있는 것이 바로 CI/CD 파이프라인이며, 이를 손쉽게 구현할 수 있는 강력한 도구가 바로 Azure DevOps입니다.

이 글에서는 Azure DevOps를 이용한 CI/CD 파이프라인 구축법을 중심으로, 실제 환경에서 코드 작성부터 빌드, 배포까지 전 과정을 자동화하는 방법을 차근차근 설명드릴게요.


Azure DevOps란?

Azure DevOps는 Microsoft가 제공하는 클라우드 기반 DevOps 플랫폼으로, 소프트웨어 개발의 전체 주기를 통합적으로 관리할 수 있습니다. Azure DevOps는 다음과 같은 핵심 기능을 제공합니다:

  • Azure Repos: Git 기반의 소스코드 버전 관리
  • Azure Pipelines: CI/CD 자동화 파이프라인 구현
  • Azure Boards: 애자일 기반 작업 관리 및 추적
  • Azure Test Plans: 테스트 케이스 및 품질 보증
  • Azure Artifacts: 패키지 저장소 및 배포

이 중에서도 우리가 주목할 것은 바로 Azure Pipelines로, 이를 통해 코드 변경 시 자동으로 **빌드(Build)**하고 **배포(Deploy)**하는 완전한 CI/CD 환경을 구현할 수 있습니다.


CI/CD란 무엇인가?

Azure DevOps를 이용한 CI/CD 파이프라인 구축법을 이해하기 위해서는 먼저 CI/CD의 개념을 짚고 넘어가야 합니다.

  • CI (Continuous Integration, 지속적 통합): 개발자가 변경한 코드를 지속적으로 메인 브랜치에 통합하고 자동으로 빌드 및 테스트하는 과정입니다.
  • CD (Continuous Delivery 또는 Deployment, 지속적 제공/배포): 통합된 코드를 자동으로 스테이징 또는 운영 환경에 배포하는 과정입니다.

이 과정을 자동화하면, 인적 실수 감소, 배포 속도 향상, 피드백 루프 단축, 품질 개선이라는 효과를 얻을 수 있습니다.


Azure DevOps로 CI/CD 파이프라인 구축하기 – 전체 흐름

Azure DevOps에서 CI/CD 파이프라인을 구축하는 전체 과정은 다음과 같습니다:

  1. 프로젝트 생성 및 Git 저장소 연결
  2. YAML 기반 Pipeline 파일 작성
  3. CI 파이프라인 (빌드 단계) 설정
  4. CD 파이프라인 (배포 단계) 설정
  5. 자동 트리거 및 테스트 연동
  6. 모니터링 및 롤백 전략 수립

아래에서 각 단계별로 자세히 살펴볼게요.


1. 프로젝트 생성 및 Git 저장소 연결

Azure DevOps Portal(https://dev.azure.com)에 로그인한 뒤, 다음 순서를 따릅니다:

  • 조직 생성: 회사나 팀 단위로 조직 생성
  • 프로젝트 생성: 프로젝트 이름 및 가시성 설정
  • Repos 활성화: Git 저장소 생성 또는 외부 GitHub 저장소와 연동

Tip: GitHub 저장소를 사용하면 Actions와도 연동 가능하니, 멀티 플랫폼 연동도 고려해 보세요.


2. YAML 기반 Pipeline 파일 작성

Azure Pipelines는 YAML 파일 기반으로 작동하며, .azure-pipelines.yml 파일을 프로젝트 루트에 추가합니다.

예시: Node.js 애플리케이션용 기본 Pipeline

trigger:
  branches:
    include:
      - main

pool:
  vmImage: 'ubuntu-latest'

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: '16.x'
    displayName: 'Install Node.js'

  - script: |
      npm install
      npm run build
    displayName: 'Build Project'

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: 'dist'
      ArtifactName: 'drop'

이 파일은 main 브랜치에 코드 변경이 생기면 자동으로 빌드하고, 결과물을 아티팩트로 저장합니다.


3. CI 파이프라인 설정 – 자동 빌드와 테스트

CI 단계에서는 다음과 같은 작업을 설정합니다:

  • 코드 검사 (Lint, Format)
  • 단위 테스트 실행
  • 코드 커버리지 측정
  • 빌드 및 패키징
  • 아티팩트 저장

Azure Pipelines에서는 다양한 빌드 도구(예: Maven, Gradle, MSBuild), 테스트 프레임워크와 통합이 가능하며, 테스트 실패 시 빌드를 자동 중단할 수 있습니다.


4. CD 파이프라인 설정 – 자동 배포

Azure DevOps의 Release Pipeline 또는 YAML 기반 배포 파이프라인을 통해 CD 단계를 설정할 수 있습니다. 아래는 Azure Web App에 자동 배포하는 예시입니다:

- task: AzureWebApp@1
  inputs:
    azureSubscription: '<구독 이름>'
    appName: '<앱 이름>'
    package: '$(Pipeline.Workspace)/drop/*.zip'

배포 대상은 다음과 같이 다양합니다:

  • Azure Web App
  • Azure Functions
  • AKS (Kubernetes)
  • VM 또는 On-prem 서버
  • AWS, GCP 등 외부 클라우드

또한 환경별로 승인 프로세스를 추가하여, 운영 환경 배포 시 수동 승인 단계를 넣는 것도 가능합니다.


5. 자동 트리거 및 알림 설정

  • Push 트리거: 특정 브랜치에 코드 push 시 자동 실행
  • PR 트리거: Pull Request 발생 시 테스트 수행
  • 스케줄 빌드: 정기적으로 빌드 수행 (예: 매일 자정)

또한 Slack, Teams, Email을 통한 빌드/배포 결과 알림도 설정할 수 있습니다. 실시간으로 결과를 모니터링할 수 있어 빠른 대응이 가능합니다.


6. 모니터링, 롤백 전략, 보안 관리

Azure DevOps는 다음과 같은 운영 기능을 제공합니다:

  • Logs & Artifacts View: 각 단계별 로그 상세 확인
  • Approval Gates: 특정 환경 배포 전 승인 요청
  • KeyVault 연동: 비밀 값 및 인증 정보 보안 관리
  • 롤백 스크립트: 실패 시 이전 버전 자동 복구

CI/CD 파이프라인은 자동화뿐 아니라, 안정성과 신뢰성 확보가 핵심이므로 이러한 기능들을 적극 활용해야 합니다.


Q&A

Q. Azure DevOps는 무료로 사용할 수 있나요?

네. Azure DevOps는 기본적으로 무료 요금제가 제공되며, 다음과 같은 조건에서 비용 없이 사용할 수 있습니다:

  • 최대 5명의 사용자까지는 무료
  • CI/CD Pipeline은 월 1,800분의 Microsoft-hosted agent 시간 무료
  • Self-hosted agent는 무제한 사용 가능

따라서 소규모 팀이나 스타트업, 개인 프로젝트는 별도의 비용 없이도 충분히 Azure DevOps를 활용할 수 있습니다.


Q. GitHub Actions와 Azure DevOps 중 어떤 게 더 좋을까요?

두 플랫폼 모두 CI/CD 기능을 제공하지만, 목적에 따라 다릅니다.

  • GitHub Actions는 GitHub에 최적화된 워크플로 기반이며, 간편한 설정과 빠른 적용이 강점입니다.
  • Azure DevOps는 대규모 프로젝트와 복잡한 릴리즈 프로세스, 다양한 외부 시스템과의 연동에 강점을 가집니다.

GitHub에 코드가 있고 단순 파이프라인이면 Actions가 적합하고, 엔터프라이즈 환경에서는 Azure DevOps가 더 유리합니다.


Q. CI/CD 도입 시 가장 주의해야 할 점은 무엇인가요?

CI/CD는 자동화의 편리함을 주지만, 다음과 같은 점은 반드시 주의해야 합니다:

  • 자동화 전에 수동 배포 절차 정확히 문서화하기
  • 비밀 정보는 KeyVault 등으로 관리, 환경 변수에 직접 입력 금지
  • 테스트 자동화는 필수, 테스트 없는 배포는 오히려 리스크 증가
  • 롤백 플랜 구축: 배포 실패 시 복구 시나리오 사전에 마련

이러한 전략이 없으면 오히려 자동화된 혼란을 초래할 수 있으므로 신중한 설계가 필요합니다.


huniverse4

Recent Posts

연료첨가제는 정말 엔진 세정에 좋은지 실제 연구결과가 있는지 알아보자

자동차를 사랑하는 많은 운전자들이 한 번쯤 고민해본 문제가 바로 연료첨가제입니다. 주유소에서, 온라인 쇼핑몰에서, 자동차용품점에서 "엔진을…

2개월 ago

남자 옷핏이 예뻐보이는 몸무게를 알아보자

"옷이 날개"라고 하지만, 정작 그 날개가 제대로 펼쳐지려면 적절한 몸무게가 필요합니다. 남자들의 영원한 고민 중…

2개월 ago

제로 탄산음료는 많이 마셔도 될까? 몸무게별 섭취 상한선 알아보자

다이어트 열풍과 함께 '제로 칼로리'를 내세운 탄산음료가 폭발적으로 인기를 끌고 있습니다. 하지만 "제로 탄산음료는 많이…

2개월 ago

달을 보기 위한 망원경의 최소 성능 및 스펙은?

달 관측은 천체 관측의 첫걸음이자 가장 매력적인 경험 중 하나입니다. 하지만 달을 보기 위한 망원경의…

2개월 ago

아이폰 14 프로맥스 배터리 오래사용하는 방법 총정리

최신 아이폰 14 프로맥스는 강력한 성능과 함께 뛰어난 배터리 용량을 자랑하지만, 올바른 사용법을 모르면 배터리…

2개월 ago

윈드라이브 동기화 용량 초과 시 대처법

윈드라이브(OneDrive)를 사용하다 보면 어느 순간 “동기화 중지됨”, “저장소 가득 참”이라는 메시지를 마주할 수 있습니다. 이는…

6개월 ago