IT개발

셀프 호스팅 CI 서버 구축(Azure DevOps Server, Jenkins)

우리모두 개발자되기 2025. 4. 26. 13:48

 

셀프 호스팅 CI 서버 구축: Azure DevOps Server vs Jenkins

온프레미스 환경에서의 지속적 통합(Continuous Integration) 전략 가이드


1. 왜 셀프 호스팅 CI 서버를 구축하는가?

클라우드 기반 CI/CD 서비스가 대중화되었음에도 불구하고, 많은 기업은 여전히 셀프 호스팅 CI 서버를 선택하고 있습니다. 그 이유는 다음과 같습니다:

  • 보안 요구사항: 소스 코드와 빌드 데이터를 외부 클라우드에 저장하는 것이 불가능한 보안 정책 존재
  • 커스터마이징 유연성: 트리거 방식, 플러그인, 빌드 프로세스 등을 자유롭게 조작
  • 비용 절감: 대규모 프로젝트의 경우 SaaS 요금이 상당히 높아짐
  • 내부망 개발 환경: 외부 인터넷 연결이 차단된 개발 인프라에서만 빌드 가능

2. 대표적인 셀프 호스팅 CI 툴 소개

Jenkins

  • 오픈소스 CI 도구의 대표주자
  • 플러그인을 통한 확장성 뛰어남
  • 다양한 언어, 플랫폼, 툴과 연동 가능
  • 커뮤니티 중심의 개발 및 유지보수

Azure DevOps Server (기존 TFS)

  • Microsoft에서 제공하는 온프레미스 DevOps 솔루션
  • Git 저장소, 빌드 파이프라인, 테스트, 배포 등을 통합 제공
  • AD 계정 연동, 권한 체계 통합 가능
  • 대기업에서 많이 채택

3. Jenkins 설치 및 구성 방법

3-1. 설치 환경

  • OS: Ubuntu 20.04 / CentOS 8 / Windows Server
  • 요구 사양: 최소 2vCPU, 4GB RAM, Java 11 이상

3-2. 설치 과정 (Ubuntu 예시)

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
    /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins -y
sudo systemctl start jenkins
sudo systemctl enable jenkins

3-3. 초기 설정

  1. http://localhost:8080 접속
  2. 관리자 비밀번호 입력 (/var/lib/jenkins/secrets/initialAdminPassword)
  3. 추천 플러그인 설치
  4. 관리자 계정 생성 및 기본 Job 구성

4. Azure DevOps Server 설치 및 구성

4-1. 설치 사전 준비

  • OS: Windows Server 2019 이상
  • SQL Server: SQL Server 2019 이상
  • .NET Framework 4.8 이상
  • IIS 활성화 (포털 사용 시)

4-2. 설치 순서 요약

  1. 공식 사이트에서 설치 파일 다운로드
  2. TFS 설치 후 Azure DevOps Server Configuration Wizard 실행
  3. 새 Team Project Collection 생성
  4. Git 저장소 또는 TFVC 구성
  5. Build Agent 설치 및 연결

5. CI 파이프라인 구성 실전 예시

Jenkins 파이프라인 예제 (Declarative 방식)

pipeline {
    agent any

    stages {
        stage('Clone') {
            steps {
                git 'https://github.com/myorg/myapp.git'
            }
        }
        stage('Build') {
            steps {
                sh './gradlew build'
            }
        }
        stage('Test') {
            steps {
                sh './gradlew test'
            }
        }
        stage('Deploy') {
            steps {
                sh './deploy.sh'
            }
        }
    }
}

Jenkins에서는 파이프라인을 Groovy 기반 DSL로 작성하여 유연한 Job 구성이 가능합니다.


Azure DevOps Server 파이프라인 예제

trigger:
  - main

pool:
  vmImage: 'windows-latest'

steps:
  - task: UseDotNet@2
    inputs:
      packageType: 'sdk'
      version: '7.x'
      installationPath: $(Agent.ToolsDirectory)/dotnet

  - script: dotnet build MyProject.sln
    displayName: 'Build Project'

  - script: dotnet test MyProject.sln
    displayName: 'Run Tests'

YAML 기반의 파이프라인 스크립트로 구성되며, Azure 환경에 최적화된 다양한 Task 지원


6. Jenkins vs Azure DevOps Server 비교

항목  Jenkins  Azure DevOps Server
라이선스 오픈소스 Microsoft 상용 라이선스
UI/UX 커스터마이징 자유도 높음 기업 친화적 UI
VCS 지원 Git, SVN 등 광범위 Git, TFVC
플러그인 1800개 이상 기본 통합 제공
설치 복잡도 낮음 높음 (SQL Server 필요)
커뮤니티 활발한 오픈소스 커뮤니티 공식 지원 중심
확장성 최고 수준 Microsoft 생태계에 최적화

7. 유지보수 및 보안 고려 사항

  • 정기 업데이트 적용: Jenkins는 보안 패치가 빠르게 이뤄지므로 플러그인과 함께 주기적으로 업그레이드 필요
  • 접근 제어 정책 강화: AD 연동, SSO, API 인증 설정
  • 백업 및 복구 전략 수립: Job 설정, 워크스페이스, 사용자 데이터 정기 백업
  • 모니터링 도구 연동: Prometheus, Grafana 등으로 빌드 시간, 실패율 분석

8. 실제 구축 아키텍처 다이어그램

개발자 → GitLab/GitHub → CI 서버 (Jenkins or Azure DevOps)  
                               ↓  
                      Build/Test → Artifactory (패키지 저장소)  
                               ↓  
                            Deploy → 운영 서버

9. 결론

온프레미스 환경에서의 CI/CD 자동화는 보안성과 커스터마이징이 핵심입니다. Jenkins와 Azure DevOps Server는 각각의 강점을 가지고 있으며, 조직의 인프라 조건과 개발 방식에 따라 선택이 달라질 수 있습니다.

  • Jenkins는 경량 구축과 유연한 확장성이 장점
  • Azure DevOps Server는 Microsoft 생태계에 깊이 통합된 통합 솔루션

CI/CD는 단순한 빌드 자동화가 아닌, 품질 향상과 개발 생산성 향상의 핵심입니다. 셀프 호스팅 환경에서도 충분히 효율적인 DevOps 문화를 구축할 수 있으며, 올바른 도구와 전략을 갖추는 것이 중요합니다.