Azure DevOps Services 개요
5가지 Azure DevOps 서비스를 살펴보고 조직과 프로젝트를 만든 뒤, 코드 저장소를 연결해 작업 항목과 커밋을 함께 추적하기 시작합니다.
Azure DevOps Services 개요은(는) CoddyKit의 무료 Azure Fundamentals 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Azure Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Azure Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
Azure DevOps란 무엇인가요
Azure DevOps는 Microsoft에서 제공하는 클라우드 호스팅 개발자 도구 모음으로, 소프트웨어 제공 수명 주기 전체를 다룹니다. 프로젝트 관리, 소스 제어, 빌드 및 릴리스 자동화, 테스트 관리, 아티팩트 저장소를 하나의 통합 플랫폼으로 결합합니다. Azure DevOps를 사용하는 팀은 단일 서비스에서 스프린트를 계획하고, 코드를 커밋하고, 자동화된 빌드를 실행하고, 프로덕션에 배포하고, 품질 지표를 추적할 수 있으며 다른 Azure 서비스와도 긴밀하게 통합됩니다.
Azure DevOps의 다섯 가지 서비스
Azure DevOps는 다섯 가지 서비스로 구성됩니다. Azure Boards(에픽, 스토리, 작업, 버그를 관리하는 Agile 작업 항목 추적), Azure Repos(무제한 Git 저장소 또는 레거시 TFVC), Azure Pipelines(모든 언어, 플랫폼 및 클라우드를 위한 CI/CD 자동화), Azure Test Plans(수동 및 탐색적 테스트, 테스트 사례, 품질 지표), Azure Artifacts(NuGet, npm, Maven, Python 및 컨테이너 이미지를 위한 범용 패키지 피드)입니다.
조직 및 프로젝트
Azure DevOps 계층 구조는 조직에서 시작합니다. 조직은 Azure AD 테넌트와 연결된 최상위 컨테이너이며 일반적으로 회사 이름을 사용합니다. 조직 내부에는 소프트웨어 제품이나 팀을 나타내는 프로젝트를 만듭니다. 각 프로젝트에는 자체 Boards, Repos, Pipelines, Test Plans 및 Artifacts가 제공됩니다. 액세스 제어, 청구 및 설정은 조직 수준에서 구성하지만 프로젝트별로 재정의할 수 있습니다.
# Create an Azure DevOps project via CLI
# First install the Azure DevOps extension
az extension add --name azure-devops
# Configure defaults
az devops configure --defaults organization=https://dev.azure.com/myorg
# Create a new project
az devops project create \
--name MyProject \
--description 'E-commerce platform' \
--visibility private \
--process AgileAzure Boards: Agile 계획
Azure Boards는 세 가지 프로세스 템플릿을 지원합니다. Basic(간단한 Issues 및 Tasks), Agile(Epics, Features, User Stories, Tasks, Bugs), Scrum(Epics, Features, Product Backlog Items, Tasks, Bugs)입니다. 작업 항목은 구성 가능한 상태에 따라 이동합니다. Kanban board는 진행 중인 작업을 시각화하고, sprint 백로그는 용량을 계획하며, 백로그는 아직 시작하지 않은 모든 작업의 우선순위를 지정합니다. 완전한 추적성을 확보하려면 작업 항목을 커밋, pull 요청 및 테스트 사례에 연결하십시오.
# Create a work item (User Story) via CLI
az boards work-item create \
--title 'Add payment processing' \
--type 'User Story' \
--description 'As a customer I want to pay by credit card' \
--assigned-to developer@contoso.com \
--project MyProject
# List open work items
az boards work-item list \
--project MyProject \
--query "[?fields.\"System.State\"=='Active']"Azure Repos: 소스 제어
Azure Repos는 분기 정책, pull 요청 워크플로 및 코드 검토 도구를 갖춘 무제한 비공개 Git 저장소를 제공합니다. 분기 정책은 보호된 분기에 품질 게이트를 적용하여 병합 전에 최소 검토자 수, 통과한 빌드 유효성 검사, 연결된 작업 항목 및 의견 해결을 요구합니다. 각 저장소는 Azure Pipelines와 직접 통합되므로 분기에 푸시하거나 pull 요청을 생성할 때 빌드와 배포를 자동으로 트리거할 수 있습니다.
# Clone an Azure Repos Git repository
git clone https://myorg@dev.azure.com/myorg/MyProject/_git/MyRepo
# Set branch policies via CLI
az repos policy required-reviewer create \
--branch main \
--branch-match-type exact \
--project MyProject \
--repository-id <repo-id> \
--blocking true \
--enabled true \
--minimum-approver-count 2 \
--allow-downvotes falseAzure Pipelines: CI/CD 자동화
Azure Pipelines는 모든 언어로 작성된 애플리케이션을 Azure, AWS, GCP 및 온-프레미스를 비롯한 모든 플랫폼에 빌드, 테스트 및 배포하는 CI/CD 서비스입니다. 파이프라인은 코드와 함께 저장소에 보관되는 YAML 파일에 정의합니다. 주요 개념으로는 단계(Build, Test, Deploy와 같은 논리적 단계), 작업(병렬 실행 단위), 스텝(개별 작업)이 있습니다. Azure Pipelines는 오픈 소스 프로젝트에 매월 1,800분의 무료 빌드 시간을 제공합니다.
# azure-pipelines.yml (minimal CI pipeline)
trigger:
branches:
include:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: NodeTool@0
inputs:
versionSpec: '18.x'
- script: npm install && npm run build
displayName: 'Install and Build'
- script: npm test
displayName: 'Run unit tests'Azure Artifacts: 패키지 관리
Azure Artifacts는 NuGet(.NET), npm(Node.js), Maven(Java), pip(Python) 및 범용 패키지(임의의 바이너리)를 위한 버전 관리 패키지 피드를 호스팅합니다. 공개 레지스트리에 게시하지 않고도 프로젝트나 팀 간에 내부 라이브러리를 공유할 수 있습니다. 업스트림 원본은 공개 레지스트리(npmjs.com, nuget.org)를 사용자의 피드를 통해 프록시하므로 모든 패키지에 대한 단일 엔드포인트를 사용하고 종속성을 감사하고 캐시할 수 있습니다.
# Publish an npm package to Azure Artifacts
npm install -g vsts-npm-auth
vsts-npm-auth -config .npmrc
# .npmrc file:
# registry=https://pkgs.dev.azure.com/myorg/MyProject/_packaging/MyFeed/npm/registry/
# Publish
npm publish --registry https://pkgs.dev.azure.com/myorg/MyProject/_packaging/MyFeed/npm/registry/파이프라인 에이전트: Microsoft 호스팅과 자체 호스팅
파이프라인은 파이프라인 작업을 실행하는 VM 또는 컨테이너인 에이전트에서 실행됩니다. Microsoft 호스팅 에이전트는 Microsoft가 제공하는 완전 관리형 사전 구성 VM(Ubuntu, Windows, macOS)으로, 별도의 설정이 필요하지 않습니다. 자체 호스팅 에이전트는 사용자의 자체 인프라(온-프레미스 또는 Azure VM)에서 실행되므로 환경, 사전 설치 도구 및 비공개 네트워크 액세스를 직접 제어할 수 있습니다. 빌드에 VNet 액세스, 특수 하드웨어 또는 클라우드 VM보다 빠른 시작 시간이 필요한 경우 자체 호스팅 에이전트를 사용하십시오.
# Register a self-hosted agent on a Linux VM
# 1. Download the agent package
curl -O https://vstsagentpackage.azureedge.net/agent/3.x/vsts-agent-linux-x64-3.x.x.tar.gz
mkdir myagent && tar xzf vsts-agent-linux-x64-3.x.x.tar.gz -C myagent && cd myagent
# 2. Configure the agent
./config.sh --url https://dev.azure.com/myorg --auth pat --token <PAT>
# 3. Run as a service
sudo ./svc.sh install && sudo ./svc.sh start환경 및 승인
환경은 Azure Pipelines에서 배포 대상(개발, 스테이징, 프로덕션)을 나타내며 배포 이력을 추적합니다. 환경에 승인 및 검사 게이트를 연결할 수 있습니다. 예를 들어 프로덕션에 배포하려면 릴리스 관리자의 수동 승인이 필요합니다. 그 밖에도 업무 시간 게이트(09:00~17:00 사이에만 배포), 대기 타이머, Azure Monitor 경고 검사(활성 상태인 심각한 경고가 있으면 배포하지 않음) 등이 있습니다. 이를 통해 팀은 위험도가 높은 프로덕션 배포를 통제할 수 있습니다.
# YAML: deployment job targeting an environment with approval
- stage: DeployProd
jobs:
- deployment: DeployToProduction
environment:
name: Production # Requires manual approval in Azure DevOps portal
resourceType: VirtualMachine
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs:
appName: myapp-prod
package: '$(Pipeline.Workspace)/drop/app.zip'서비스 연결
서비스 연결은 외부 서비스(Azure 구독, GitHub, Docker Hub, SonarQube, Kubernetes 클러스터)에 인증된 연결을 저장하므로, 파이프라인에서 YAML에 자격 증명을 직접 포함하지 않고도 이를 사용할 수 있습니다. Azure Resource Manager 서비스 연결은 서비스 주체 또는 관리 ID를 사용하여 Azure 리소스를 배포합니다. 모든 자격 증명은 암호화되며 프로젝트 또는 파이프라인 범위로 제한되므로 파이프라인 로그에 자격 증명이 노출되는 것을 방지합니다.
# Create an Azure Resource Manager service connection via CLI
az devops service-endpoint azurerm create \
--azure-rm-service-principal-id '<AppId>' \
--azure-rm-subscription-id '<SubId>' \
--azure-rm-subscription-name 'MySubscription' \
--azure-rm-tenant-id '<TenantId>' \
--name 'AzureProductionSC' \
--project MyProject
# Use in pipeline YAML
# - task: AzureCLI@2
# inputs:
# azureSubscription: 'AzureProductionSC'
# scriptType: bash
# scriptLocation: inlineScriptAzure DevOps와 GitHub 비교
Microsoft는 Azure DevOps와 GitHub를 모두 소유하며, 두 서비스 모두 CI/CD를 지원합니다. Azure DevOps는 Microsoft 도구를 광범위하게 사용하는 기업에서 Azure Boards, Test Plans 또는 Artifacts가 필요할 때 선호됩니다. GitHub는 오픈 소스 프로젝트, 개발자 중심의 작업 흐름, 그리고 팀이 이미 GitHub 저장소를 사용하고 있을 때 선호됩니다. GitHub Actions는 GitHub의 CI/CD 플랫폼입니다. Azure Pipelines는 Azure Repos와 GitHub 모두와 통합되므로 GitHub 저장소에서 Azure Boards와 Artifacts를 사용할 수 있습니다.
빠른 확인
이 단원에서 다룬 Microsoft Azure Fundamentals (AZ-900) 개념에 대한 이해도를 확인해 보십시오.
단원 요약
이 단원에서는 다음을 배웠습니다. Azure DevOps는 계획(Boards), 소스 제어(Repos), CI/CD(Pipelines), 테스트(Test Plans), 패키지 관리(Artifacts)를 아우르는 5가지 통합 서비스를 제공합니다. 승인이 설정된 환경은 위험도가 높은 배포를 통제하며, 서비스 연결은 파이프라인에서 사용할 외부 서비스 자격 증명을 안전하게 저장합니다. 다음 단원에서는 Azure Pipelines를 사용하여 CI 파이프라인을 구축하는 방법을 살펴봅니다.
자주 묻는 질문
“Azure DevOps Services 개요” 강의는 무료인가요?
네 — “Azure DevOps Services 개요” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Azure Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Azure Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“Azure DevOps Services 개요”에서 뭘 배우나요?
5가지 Azure DevOps 서비스를 살펴보고 조직과 프로젝트를 만든 뒤, 코드 저장소를 연결해 작업 항목과 커밋을 함께 추적하기 시작합니다. 브라우저에서 직접 실행하는 실습 코드로 Azure Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Azure Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Azure Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Azure DevOps Services 개요” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Azure Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Azure Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Azure DevOps Services 개요
- Azure Pipelines로 CI 파이프라인 구축
- Azure로 지속적 배포
- Azure에서 GitHub Actions 사용