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

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

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

1개월 ago

윈드라이브 동기화 폴더 바꾸는 법 (드라이브 변경 포함)

윈드라이브(OneDrive)를 사용하다 보면, 기본으로 설정된 동기화 폴더 위치가 불편하거나 C드라이브 용량 부족 등으로 인해 다른…

1개월 ago

윈드라이브를 수동 동기화로 설정하는 방법

윈드라이브(OneDrive)는 기본적으로 자동으로 파일을 클라우드와 동기화하도록 설정되어 있습니다. 문서를 수정하거나 사진을 추가하면, 몇 초 내로…

1개월 ago

윈드라이브 동기화 안 될 때 체크할 설정 5가지

윈드라이브(OneDrive)는 자동으로 파일을 클라우드에 백업하고 여러 기기와 실시간으로 동기화해주는 매우 유용한 도구입니다. 하지만 간혹 “OneDrive…

1개월 ago

윈드라이브 동기화 상태 확인 및 오류 해결법

윈드라이브(OneDrive)는 실시간으로 파일을 클라우드에 저장하고 여러 기기에서 자동으로 동기화해주는 편리한 서비스지만, 때때로 동기화가 멈추거나 오류가…

1개월 ago

윈드라이브 특정 폴더만 동기화하는 방법

윈드라이브(OneDrive)는 기본적으로 전체 OneDrive 폴더를 PC와 동기화하지만, 모든 데이터를 동기화할 필요는 없습니다. 저장 공간을 절약하거나,…

1개월 ago