1 Azure DevOps 개요
Azure DevOps는 마이크로소프트에서 제공하는 클라우드 기반의 통합 DevOps 플랫폼이다. 소프트웨어 개발 생명주기(SDLC) 전반에 걸쳐 개발팀이 효율적으로 협업하고, 코드를 관리하며, 지속적인 통합과 배포(CI/CD)를 수행할 수 있도록 지원한다.
1.1 DevOps란?
DevOps는 Development(개발)과 Operations(운영)의 합성어로, 개발팀과 운영팀 간의 협업을 강화하여 소프트웨어 개발과 배포 과정을 자동화하고 효율화하는 문화와 방법론이다.
1.1.1 DevOps의 핵심 원칙
- 협업: 개발팀과 운영팀 간의 원활한 소통과 협력
- 자동화: 반복적인 작업의 자동화를 통한 효율성 향상
- 지속적 통합: 코드 변경사항의 빈번한 통합과 테스트
- 지속적 배포: 안정적이고 신속한 소프트웨어 배포
- 모니터링: 시스템과 애플리케이션의 지속적인 모니터링
2 Azure DevOps 서비스 구조
Azure DevOps는 5개의 핵심 서비스로 구성되어 있으며, 각 서비스는 독립적으로 사용하거나 통합하여 활용할 수 있다.
2.1 Azure Boards (작업 관리)
프로젝트 계획, 작업 추적, 버그 관리를 위한 애자일 프로젝트 관리 도구이다.
2.1.1 주요 기능
- Work Items: 사용자 스토리, 작업, 버그, 에픽 등의 작업 항목 관리
- Kanban Boards: 시각적인 작업 흐름 관리
- Sprint Planning: 스프린트 계획 및 백로그 관리
- Dashboards: 프로젝트 진행 상황 대시보드
- Query: 복잡한 작업 항목 검색 및 필터링
2.1.2 작업 항목 계층 구조
Epic (에픽)
├── Feature (기능)
│ ├── User Story (사용자 스토리)
│ │ ├── Task (작업)
│ │ └── Bug (버그)
│ └── Test Case (테스트 케이스)
- Epic: 프로젝트의 최상위 목표
- Feature: 프로젝트의 주요 기능
- User Story: 기능을 구현하기 위한 작업
- Task: User Story를 구현하기 위한 작업
- Bug: 버그 수정 작업
- Test Case: 테스트 케이스
2.2 Azure Repos (소스 코드 관리)
Git 기반의 버전 관리 시스템으로, 소스 코드의 저장, 관리, 협업을 지원한다.
2.2.1 주요 기능
- Git Repositories: 무제한 프라이빗 Git 저장소
- Pull Requests: 코드 리뷰 및 병합 관리
- Branch Policies: 브랜치 보호 정책 설정
- Code Search: 전체 코드베이스에서 빠른 검색
- Wiki: 프로젝트 문서화
2.2.2 브랜치 전략 예시
2.3 Azure Pipelines (CI/CD)
지속적 통합과 지속적 배포를 위한 자동화 파이프라인 서비스이다.
2.3.1 주요 기능
- Build Pipelines: 소스 코드 빌드 자동화
- Release Pipelines: 배포 자동화
- Multi-platform: Windows, Linux, macOS 지원
- Container Support: Docker 컨테이너 빌드 및 배포
- Integration: 다양한 도구 및 서비스와 통합
2.3.2 파이프라인 구조
# azure-pipelines.yml 예시
trigger:
branches:
include:
- main
- develop
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: NodeTool@0
inputs:
versionSpec: '16.x'
- script: |
npm install
npm run build
displayName: 'Build Application'
- stage: Test
jobs:
- job: TestJob
steps:
- script: |
npm run test
displayName: 'Run Tests'
- stage: Deploy
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- job: DeployJob
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: 'Azure-Connection'
appName: 'my-web-app'
package: '$(System.DefaultWorkingDirectory)/**/*.zip' 2.4 Azure Test Plans (테스트 관리)
수동 및 자동화 테스트를 계획하고 실행하기 위한 테스트 관리 도구이다.
2.4.1 주요 기능
- Test Plans: 테스트 계획 및 스위트 관리
- Test Cases: 상세한 테스트 케이스 작성
- Test Execution: 수동 테스트 실행 및 결과 기록
- Exploratory Testing: 탐색적 테스트 지원
- Test Analytics: 테스트 결과 분석 및 리포팅
2.5 Azure Artifacts (패키지 관리)
패키지와 의존성을 관리하기 위한 패키지 저장소 서비스이다.
2.5.1 지원하는 패키지 타입
- NuGet: .NET 패키지
- npm: Node.js 패키지
- Maven: Java 패키지
- Python: Python 패키지
- Universal Packages: 범용 패키지
2.5.2 패키지 피드 관리
3 Azure DevOps 아키텍처
3.1 조직 구조
Azure DevOps는 계층적 구조로 조직되어 있다:
Organization (조직)
├── Project A (프로젝트)
│ ├── Repos (저장소)
│ ├── Pipelines (파이프라인)
│ ├── Boards (보드)
│ ├── Test Plans (테스트 계획)
│ └── Artifacts (아티팩트)
├── Project B (프로젝트)
└── Project C (프로젝트)
3.2 보안 및 권한 관리
- Azure Active Directory 통합: 기업 ID 관리 시스템과 연동
- Role-based Access Control: 역할 기반 접근 제어
- Security Groups: 보안 그룹을 통한 권한 관리
- Branch Policies: 코드 품질 보장을 위한 브랜치 정책
4 실무 활용 사례
4.1 일반적인 DevOps 워크플로우
4.2 스프린트 기반 개발 프로세스
- 스프린트 계획: Azure Boards에서 백로그 관리 및 스프린트 계획
- 기능 개발: Azure Repos에서 feature 브랜치 생성 및 개발
- 코드 리뷰: Pull Request를 통한 코드 리뷰 및 품질 검증
- 자동화 테스트: Azure Pipelines에서 CI 파이프라인 실행
- 배포: CD 파이프라인을 통한 자동 배포
- 피드백: 사용자 피드백 수집 및 다음 스프린트 계획
4.3 멀티 환경 배포 전략
# 환경별 배포 전략
stages:
- stage: DeployDev
displayName: 'Deploy to Development'
jobs:
- deployment: DeployDev
environment: 'development'
- stage: DeployStaging
displayName: 'Deploy to Staging'
dependsOn: DeployDev
condition: succeeded()
jobs:
- deployment: DeployStaging
environment: 'staging'
- stage: DeployProd
displayName: 'Deploy to Production'
dependsOn: DeployStaging
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- deployment: DeployProd
environment: 'production' 5 Azure DevOps vs 경쟁 도구
5.1 주요 경쟁 도구 비교
| 기능 | Azure DevOps | GitHub | GitLab | Jenkins |
|---|---|---|---|---|
| 소스 관리 | Azure Repos | GitHub | GitLab | 외부 연동 |
| CI/CD | Azure Pipelines | GitHub Actions | GitLab CI/CD | Jenkins |
| 프로젝트 관리 | Azure Boards | GitHub Projects | GitLab Issues | 외부 연동 |
| 패키지 관리 | Azure Artifacts | GitHub Packages | GitLab Package Registry | 외부 연동 |
| 가격 | 사용자당 과금 | 사용자당 과금 | 사용자당 과금 | 오픈소스 |
5.2 Azure DevOps의 장점
- 통합 플랫폼: 모든 DevOps 도구가 하나의 플랫폼에 통합
- Microsoft 생태계: Azure, Office 365, Visual Studio와의 원활한 통합
- 하이브리드 지원: 온프레미스와 클라우드 모두 지원
- 확장성: 대규모 엔터프라이즈 환경에 적합
- 보안: 엔터프라이즈급 보안 기능 제공
6 시작하기
6.1 Azure DevOps 계정 생성
- Azure DevOps 웹사이트 방문
- Microsoft 계정으로 로그인 또는 새 계정 생성
- 조직(Organization) 생성
- 첫 번째 프로젝트 생성
6.2 기본 설정
6.3 첫 번째 파이프라인 생성
- 저장소 연결: Azure Repos 또는 외부 Git 저장소 연결
- 파이프라인 템플릿 선택: 프로젝트 유형에 맞는 템플릿 선택
- YAML 파일 구성: azure-pipelines.yml 파일 작성
- 파이프라인 실행: 첫 번째 빌드 실행 및 결과 확인
7 결론
Azure DevOps는 소프트웨어 개발 생명주기 전반을 지원하는 강력하고 통합된 플랫폼이다. 특히 Microsoft 생태계를 사용하는 조직에서는 기존 도구들과의 원활한 통합을 통해 높은 생산성을 얻을 수 있다.
DevOps 문화를 도입하고자 하는 팀이나 기존 도구들의 통합을 원하는 조직에게 Azure DevOps는 훌륭한 선택이 될 수 있다. 각 서비스를 단계적으로 도입하여 점진적으로 DevOps 성숙도를 높여나가는 것이 성공적인 도입의 핵심이다.
8 학습 목차
8.1 실습 중심 학습이 필요한 영역
8.1.1 Azure Pipelines 심화
- YAML 파이프라인 작성 실습
- 다양한 빌드 에이전트 활용
- 조건부 배포 및 승인 프로세스
- 파이프라인 템플릿 및 재사용 가능한 구성
8.1.2 Infrastructure as Code (IaC)
- ARM 템플릿 또는 Terraform 연동
- Azure Resource Manager 통합
- 환경별 인프라 자동 프로비저닝
8.2 고급 DevOps 개념
8.2.1 모니터링 및 관찰 가능성 (Observability)
- Azure Monitor, Application Insights 연동
- 로그 집계 및 분석
- 성능 메트릭 수집 및 알림 설정
- 분산 추적 (Distributed Tracing)
8.2.2 보안 DevOps (DevSecOps)
- 보안 스캔 도구 통합
- 취약점 관리 및 컴플라이언스
- 시크릿 관리 (Azure Key Vault 연동)
- 컨테이너 보안
8.3 실제 프로젝트 적용
8.3.1 마이크로서비스 아키텍처
- 여러 서비스의 독립적인 파이프라인 관리
- 서비스 간 의존성 관리
- API 게이트웨이 및 서비스 메시 연동
8.3.2 컨테이너 및 쿠버네티스
- Docker 컨테이너 빌드 및 배포
- Azure Kubernetes Service (AKS) 연동
- Helm 차트 관리
8.4 팀 협업 및 프로세스
8.4.1 브랜치 전략 심화
- GitFlow, GitHub Flow 실제 적용
- 코드 리뷰 프로세스 최적화
- 자동화된 품질 게이트 설정
8.4.2 애자일 프로젝트 관리
- Azure Boards 고급 활용: epic, feature, user story, task, bug, test case 등의 작업 항목 관리
- 스프린트 계획 및 회고
- 메트릭 기반 프로세스 개선
8.5 추천하는 다음 단계
현재 상황에 따라 다음 중 하나를 선택해서 진행하면 좋겠습니다:
8.5.1 초보자라면:
- 간단한 웹 애플리케이션으로 실습 - 실제 프로젝트 생성해서 전체 파이프라인 구축
- Azure Pipelines YAML 작성법 - 기본 빌드/배포 파이프라인 작성 실습
- Git 브랜치 전략 - 실제 협업 시나리오 연습
8.5.2 중급자라면:
- 멀티 환경 배포 전략 - Dev/Staging/Prod 환경 구성
- Infrastructure as Code - Terraform이나 ARM 템플릿 학습
- 컨테이너화 - Docker 및 Kubernetes 연동
8.5.3 고급자라면:
- DevSecOps 구현 - 보안 스캔 및 컴플라이언스 자동화
- 모니터링 및 관찰 가능성 - 전체 시스템 가시성 확보
- 대규모 조직 적용 - 엔터프라이즈 수준의 DevOps 거버넌스