애플리케이션 개발 및 가상 머신에 배치

DevOps Insights 2026년 8월 31일에 서비스 종료되어 중단될 예정입니다. Continuous Delivery 은 2027년 2월 12일에 au-syd, ca-tor, us-east 지역에서 중단될 예정입니다. 또한 해당 날짜를 기점으로 Code Risk Analyzer는 모든 지역에서 서비스가 중단될 예정입니다. 특정 지역에서 해당 기능을 실제로 사용하지 않는 경우, 해당 지역의 기능은 예정보다 일찍 중단될 수 있으며 새로운 인스턴스 등록이 더 이상 허용되지 않을 수 있습니다. 자세히 알아보기

이 튜토리얼에서는 Continuous Delivery 도구 체인을 설정하고 간단한 애플리케이션(앱)을 가상 머신에 전달하는 방법을 보여줍니다. 소스 제어를 설정한 후 코드를 빌드하고 테스트하여 여러 배치 단계로 배치할 수 있습니다.

기본적으로, 도구 체인은 샘플 Maven 기반 Java Hello World 앱을 사용하지만 대신 고유 앱을 가져와서 연결할 수도 있습니다. 이 툴체인은 Code Risk Analyzer를 활용한 지속적 통합 및 지속적 배포, 소스 제어, 이슈 추적, 온라인 편집을 위한 파이프라인으로 구성되어 있습니다.

애플리케이션 코드는 애플리케이션 소스 제어 저장소(repo)에 저장됩니다. 빌드 및 배치 스크립트는 파이프라인 소스 제어 저장소에 저장됩니다. 앱에 대한 개발 요구사항을 충족하도록 빌드 및 배치 스크립트를 사용자 정의할 수 있습니다.

이 튜토리얼의 도구 체인은 다음의 우수 사례를 구현합니다.

  • 모든 Git 커미트에서 애플리케이션 2진을 빌드하고 추적성을 위해 빌드 번호, 시간소인 및 커미트 ID를 기반으로 태그를 설정합니다.
  • 빌드된 2진을 배치 Manifest에 자동으로 삽입합니다.
  • 바로 사용할 수 있도록 빌드되는 임시 2진 파일을 저장할 Object Storage 인스턴스 및 버킷을 작성합니다. 고급 사용자의 경우 추적성 및 규제 준수를 위한 목적으로 빌드 아티팩트의 버전화를 지원하기 위해 기존 Artifactory 저장소를 구성하고 도구 체인과 통합할 수 있습니다.

도구 체인은 앱 코드를 빌드하여 가상 머신에 배치하기 위해 세 가지 파이프라인을 구현합니다.

  • CI(Continuous Integration) 파이프라인: 이 파이프라인은 변경사항이 애플리케이션 소스 코드 저장소의 마스터 분기에 병합될 때 트리거됩니다. CI 파이프라인은 애플리케이션 소스 코드에서 단위 테스트, 코드 적용 범위 및 정적 스캔을 실행합니다. 또한 CI 파이프라인은 도구 체인에 구성된 대로 2진 빌드 아티팩트를 생성하고 이를 Object Storage 버킷 또는 Artifactory에 업로드합니다. 그리고 CI 파이프라인은 빌드 아티팩트의 메타데이터를 생성하고 인벤토리 저장소에 저장합니다.

  • CD(Continuous Deployment) 파이프라인: 이 파이프라인은 성공적으로 CI 파이프라인을 실행하는 경우 트리거됩니다. CD 파이프라인은 배치 환경에 빌드 아티팩트를 배치할 책임이 있습니다. 파이프라인은 상태 검사를 실행하여 애플리케이션의 성공적인 배치를 확인하고 배치에 성공하지 못하는 경우 변경사항을 롤백합니다.

  • PR(Pull Request) 파이프라인: 이 파이프라인은 애플리케이션 소스 코드 저장소에 병합 또는 가져오기 요청이 작성되는 경우 트리거됩니다. 일반적으로 이 요청은 개발 분기의 변경사항을 마스터 분기 또는 다른 분기로 병합하기 위해 애플리케이션 소스 코드 개발자에 의해 수동으로 작성됩니다. PR 파이프라인은 애플리케이션 소스 코드에서 단위 테스트 및 정적 스캔을 실행합니다.

caption-side=bottom"
아키텍처

시작하기 전에

앱을 Virtual Server 인스턴스에 배치하도록 도구 체인에 대해 Virtual Server 인스턴스를 설정하고 구성하십시오. 기존 Virtual Server 인스턴스를 사용하거나 다음 요구사항에 맞게 새로운 인스턴스를 설정할 수 있습니다.

  1. IBM Cloud에 Virtual Server 인스턴스를 설정하십시오.
  2. 유동 IP 주소를 예약하여 공용 인터넷에서 Virtual Server 인스턴스를 액세스할 수 있도록 하십시오. 또는 사용 가능한 DNS 항목을 사용할 수 있습니다. 이 튜토리얼은 유동 IP 주소를 사용합니다.
  3. Virtual Server 인스턴스에 대한 사용자(가급적 권한이 없는) 및 SSH 키를 작성하십시오.
  4. Virtual Server 인스턴스에 대한 보안 그룹을 구성하십시오. 앱 엔드포인트에 액세스할 수 있도록 TCP 포트를 허용하기 위해 8080에 대한 인바운드 규칙을 추가하여, 배치된 앱에서 상태 검사를 수행하려면 도구 체인을 사용으로 설정하십시오. 인바운드 규칙 추가에 대한 자세한 정보는 보안 그룹 관리를 참조하십시오.
  5. Java™ SDK가 VM에 설치되어 있는지 확인하거나 다음 명령을 사용하여 설치하십시오. yum install -y tar java.
  6. 선택사항입니다. Key Protect에 시크릿을 저장해야 하는 경우, 값의 base64 인코딩을 수행하십시오. 필수 명령 세부사항에 대한 자세한 정보는 이미지 서명: GPG 키 생성을 참조하십시오.

도구 체인 작성

가상 머신을 위한 애플리케이션 개발 도구 체인을 작성하려면 다음을 클릭하십시오.

도구 체인 작성

또는 IBM Cloud 콘솔에서 메뉴 아이콘 햄버거 아이콘 > 플랫폼 자동화 > 툴체인을 클릭합니다. 도구 체인 페이지에서 도구 체인 작성을 클릭하십시오. 도구 체인 작성 페이지에서 가상 머신을 위한 애플리케이션 개발을 클릭하십시오.

단순 Virtual Server 인스턴스 구성

  1. 작성 탭에서 기본 설정을 검토하십시오.

    caption-side=bottom"
    툴체인

  2. 도구 체인의 이름은 IBM Cloud에서 해당 도구 체인을 식별합니다. 다른 이름을 사용하려면 도구 체인의 이름을 변경하십시오. 앱에 액세스하는 데 사용되는 URL을 구성하는 데 도구 체인 이름이 사용되므로 고유한 이름을 지정해야 합니다.

  3. 기본적으로 도구 체인은 Git Repos and Issue Tracking에 소스 저장소를 작성합니다. Git 소스 저장소에 대해 다른 제공자를 사용하려면(예: GitHub 또는 GitLab), 사용 가능한 저장소 목록에서 선택하십시오.

    이 도구 체인은 Continuous Delivery 서비스에 포함되어 있는 도구를 사용합니다. 해당 서비스의 인스턴스가 아직 선택된 자원 그룹에 없는 경우, 작성을 클릭하여 도구 체인을 작성할 때 무료 Lite 계획과 함께 자동으로 추가됩니다.

앱 저장소 구성

  1. Git Repos and Issue Tracking 탭에서, 앱의 소스 코드 위치를 지정하는 기본 설정을 검토하십시오.

  2. 기본적으로 도구 체인은 동일한 Maven 기반 Java Hello World 앱을 사용합니다. 위치 설정을 업데이트하여 고유 앱을 대신 연결할 수 있습니다.

    caption-side=bottom"
    앱

인벤토리 저장소 구성

인벤토리 저장소는 빌드 및 아티팩트에 대한 메타데이터를 저장합니다. 커미트에 설명되어 있는 아티팩트를 Virtual Server 인스턴스에 배치하기 위해 파이프라인을 트리거하려면, 인벤토리 저장소에 커미트한 후 승인 태스크를 실행하십시오.

툴체인 인벤토리 리포지토리
인벤토리

Delivery Pipeline 구성

  1. Delivery Pipeline 탭으로 이동하십시오.

    Delivery Pipeline 구성 구성
    Delivery Pipeline

  2. 기존의 IBM Cloud API 키를 지정하거나 키를 작성하십시오. 도구 체인은 이 키를 사용하여 도구 체인에 통합되는 다른 클라우드 서비스와 상호작용합니다.

  3. Virtual Server 인스턴스가 실행되는 지역을 지정하십시오(예: us-south).

  4. aaa.bbb.ccc.ddd 형식을 사용하여 Virtual Server 인스턴스의 유동 IP 주소를 지정하십시오.

  5. SSH Key 인증 유형을 선택하고 다음 인증 정보를 지정하십시오.

    • 사용자 이름: 애플리케이션을 배치하고 실행할 수 있는 권한이 있는 Virtual Server 인스턴스 사용자의 사용자 이름입니다.
    • SSH 키: 애플리케이션 실행 및 배치를 위한 사용자의 개인용 SSH 키입니다.
  6. 다음 명령을 실행하여 애플리케이션을 배치하고 실행할 수 있는 권한이 있는 사용자에 대한 Virtual Server 인스턴스에서 새로운 키-쌍을 작성하십시오.

            # Create the SSH key
                `ssh-keygen -C cloud.ibm.com`
            # copy public key to the VSI
                `ssh-copy-id -i .ssh/id_rsa.pub <UserName>@<xx.yy.zz.aa>`
    

선택사항입니다. 임시 스토리지 구성 작성

소스를 변경하면 지속적인 통합 파이프라인이 트리거됩니다. 지속적인 통합 실행에 성공하는 경우 빌드 또는 2진 아티팩트가 작성되고 임시 스토리지에 저장된 후 대상 Virtual Server 인스턴스에 배치됩니다.

  1. 도구 체인 내의 추가 도구 탭에서 빌드 2진 파일을 저장할 임시 스토리지로 Object Storage 또는 Artifactory를 사용하도록 선택할 수 있습니다.
  2. 계정에 Object Storage의 인스턴스가 없는 경우 도구 체인은 기본 리소스 그룹에 새로운 Object Storage 인스턴스를 작성합니다. 다음으로, 도구 체인은 새로운 Object Storage 인스턴스 내의 도구 체인과 동일한 이름을 사용하는 버킷을 작성합니다.
  3. 계정에 이미 Object Storage 인스턴스가 있는 경우에는 도구 체인이 이러한 인스턴스 중 하나를 사용하여 임시 빌드 아티팩트를 저장합니다.
  4. Object Storage 또는 Artifactory 세부사항을 구성하려면, 고급 사용자 옵션 구성 섹션을 참조하십시오.
  5. 도구 체인을 작성하려면 작성을 클릭하십시오.

새 도구 체인 탐색

도구 체인을 작성하고 나면 도구 체인의 일부인 각 도구 통합이 다이어그램에 표시됩니다.

파이프라인 탐색

파이프라인을 탐색하여 도구 체인 플로우 및 각 파이프라인 내에서 실행되는 다양한 옵션을 이해할 수 있습니다. 예를 들어, cra-discovery-scan과 같은 여러 단계 및 매개변수와 상태의 세부사항을 보려면, CI 파이프라인 도구 통합을 클릭한 후 성공한 PipelineRuns를 클릭하십시오.

CI PipelineRun 세부 정보 *
통합 PipelineRun
정보 *

DevOps Insights 탐색

DevOps Insights는 엔드-투-엔드 DevOps 프로세스를 추적하고 향상시킬 수 있도록 도구 체인에서 데이터를 집계합니다. 품질 메트릭을 보고, 빌드 및 배치 작업을 추적하고, 정책을 확인합니다.

코드가 정책을 충족하지 않거나 초과하면 위험성이 표출되지 않도록 배치가 정지됩니다. 품질 표준을 구현하고 향상시키기 위한 방법으로 또는 지속적 딜리버리 환경을 위한 안전망으로 DevOps Insights를 사용할 수 있습니다.

다음 이미지는 각 애플리케이션에 대한 단위 테스트, 코드 적용 범위, 기능 검증 테스트 및 정적 보안 스캔과 같은 품질 데이터 세트를 제공하는 품질 대시보드를 표시합니다.

DevOps Insights 품질 대시보드 품질 대시보드
DevOps Insights

GitOps 탐색

GitOps는 DevOps 도구 체인의 중심에 Git를 배치하고 Virtual Server 인스턴스에서 배치할 항목의 진정한 소스로 사용되는 일련의 사례 및 도구입니다. GitOps를 통해 개발자 및 운영자는 인프라 및 애플리케이션에 대한 변경사항을 정의하고, 검토하며, 승인 및 감사하기 위해 익숙한 Git 워크플로우를 사용합니다. 자동화된 도구는 대상의 라이브 상태와 Git으로 설명되는 원하는 상태를 동기화합니다.

이 튜토리얼의 도구 체인을 사용하면, 각 환경에 하나의 분기를 작성하여 여러 환경에 대한 배치를 제어할 수 있습니다. 다음 예제 워크플로우는 가져오기 요청 또는 커미트가 인벤토리 저장소의 특정 분기에 대해 작성된 경우 Continuous Delivery 파이프라인을 트리거합니다.

  1. 애플리케이션 저장소 및 Object Storage와 같은 Virtual Server 인스턴스에 대한 세부사항을 제공하여 IBM Cloud의 Virtual Server 인스턴스에 대한 도구 체인을 작성하십시오. 인벤토리 저장소에 대한 세부사항을 지정하지 마십시오.
  2. 도구 체인이 작성되고 나면, 인벤토리 저장소에서 Dev, StagingProd와 같은 여러 분기를 작성하십시오.
  3. Continuous Delivery 파이프라인을 클릭하고 트리거로 이동하십시오. 트리거 소스를 CD 파이프라인(마스터)을 트리거하려는 분기에 인벤토리 저장소로 추가하십시오.
  4. 통합에 성공한 후 각 인벤토리 저장소에 커미트하도록 지속적 통합 파이프라인을 수정하십시오.
  5. 인벤토리 저장소에서 충분한 커미트를 사용할 수 있게 되면, 저장소의 가져오기 요청을 마스터에 병합하여 Continuous Delivery 빌드를 시작하십시오.

GitOps를 사용하면, 각 환경에 하나의 분기를 작성하여 여러 환경에 대한 배치를 제어할 수 있습니다.

고급 사용자 옵션 구성

고급 사용자 옵션에 액세스하려면, 추가 도구 탭으로 이동하십시오.

  • 임시 빌드 아티팩트를 저장하려면 기존 Cloud Object Storage 인스턴스를 지정하십시오.

    • 임시 빌드 아티팩트를 저장하려는 Object Storage 인스턴스에 버킷의 이름을 지정하십시오. 오브젝트를 버킷에 업로드하려면, 도구 체인이 작성되는 동일한 지역에 상주해야 합니다.

    • 지정한 버켓에 대한 읽기 및 쓰기 액세스 권한이 있는 API 키를 선택하십시오.

    Cloud Object Storage 통합 세부 정보 통합 세부 정보
    Cloud Object Storage

  • Artifactory 계정을 사용하여 임시 빌드 아티팩트를 저장하려면, Artifactory 인스턴스의 세부사항을 지정하십시오.

    • Artifactory 서버 URL: Artifactory 서버의 HTTPS URL
    • 유형: npm, maven 또는 docker 중에 선택
    • Artifactory UserID: xxx.xxx@xxx.com 형식으로 Artifactory 서버에 로그인하기 위한 사용자 ID
    • Artifactory APIKey: (기존 또는 신규) 사용자가 생성한 APIKey
    • 릴리스 URL: 아티팩트가 저장되는 Artifactory 저장소의 릴리스 URL

Artifactory의 일부 필드는 Artifactory 구성을 사용하는 경우에만 필수입니다.

Artifactory 통합 세부 정보 통합 세부 정보
Artifactory

도구 체인을 작성하려면 작성을 클릭하십시오. 이 프로세스는 완료하는 데 몇 분이 걸릴 수 있습니다.

선택사항입니다. 배치된 애플리케이션의 이전 버전으로 롤백

테스트 결과, 코드 품질 문제 및 기타 문제로 인해 배치된 코드를 롤백하려고 할 수 있습니다. 인벤토리 저장소를 사용하여 애플리케이션의 이전 버전으로 롤백할 수 있습니다.

  1. git clone <inventory-repo-url>을(를) 입력하여 파이프라인에서 인벤토리 Git 저장소를 복제하고 다운로드하십시오. Continuous Delivery 파이프라인은 인벤토리 저장소의 마스터 분기를 청취합니다.
  2. 지속적 통합 파이프라인에서 완료한 커미트 목록을 보려면 git log를 입력하십시오.
  3. 마스터 분기를 체크아웃하려면 git checkout master를 입력하십시오.
  4. 저장소의 최근 커미트 ID를 검색하려면 lastCommitID=$(git log --format="%H" -n 1)을 입력하십시오.
  5. 현재 변경사항을 되돌려서 새 커미트를 작성하려면 git revert $lastCommitID를 입력하십시오. 이 되돌리기에 대한 커미트 메시지를 제공해야 합니다.
  6. 변경사항을 인벤토리 저장소에 푸시하고 애플리케이션 배치에 대한 Continuous Delivery 파이프라인을 시작하려면 git push를 입력하십시오.

다음 단계

이 튜토리얼에서 예제 Java 앱을 사용했지만, Virtual Server 인스턴스에 다른 언어 기반의 앱을 배치할 수도 있습니다. 다른 언어 기반 앱을 Virtual Server 인스턴스에 배치하려면, 이 튜토리얼에 대해 작성한 Virtual Server 인스턴스와 도구 체인을 모두 삭제하십시오.