지속적 배치

menu icon

지속적 배치

이 안내서에서는 지속적 배치 전략의 개념과 함께 이의 엔터프라이즈 확장성 지원 방안에 대해 설명합니다.

지속적 배치란?

지속적 배치는 애플리케이션에 대한 코드 변경사항이 자동으로 프로덕션 환경으로 릴리스되는 소프트웨어 개발의 전략입니다. 이 자동화는 일련의 사전 정의된 테스트로 구동됩니다. 일단 새 업데이트가 해당 테스트를 통과하면, 시스템은 업데이트를 소프트웨어의 사용자에게 직접 푸시합니다.

지속적 배치는 애플리케이션과 IT 포트폴리오를 스케일링하려는 기업들에 몇 가지 이점을 제공합니다. 첫째, 이는 코딩과 고객 가치 간의 지연을 제거함으로써, 일반적으로 수 일, 수 주 또는 심지어는 몇 달까지 시장 출시 시간을 앞당깁니다.

이를 달성하기 위해서는 회귀 테스트를 자동화함으로써 비용이 많이 드는 수동 회귀 테스트를 제거해야 합니다. 릴리스 계획 및 승인 미팅을 포함하여, 대량의 프로덕션 변경사항을 관리하기 위해 기업들이 배치하는 시스템은 대부분의 변경사항의 경우 역시 제거될 수 있습니다.

지속적 배치 vs. ...

지속적 배치 vs. 지속적 딜리버리

"지속적 배치"와 "지속적 딜리버리"가 동일한 것처럼 들릴 수 있지만, 이는 실제로 빈번한 릴리스에 대한 두 가지 다른 접근 방식입니다.

지속적인 배치는 제공된 시간에 프로덕션으로 릴리스될 수 있는 방식으로 소프트웨어가 빌드되는 소프트웨어 개발 사례입니다. 이를 달성하기 위해, 지속적 딜리버리 모델에는 프로덕션과 유사한 테스트 환경이 포함됩니다. 지속적 딜리버리 솔루션에서 수행되는 신규 빌드는 다수의 오류와 불일치에 대해 테스트하는 자동 품질 보증 테스트 환경으로 자동 배치됩니다. 코드가 모든 테스트를 통과한 후에, 지속적 딜리버리에서는 프로덕션으로의 배치를 승인하기 위한 인간의 개입이 필요합니다. 그 이후에 배치 자체는 자동화에 의해 수행됩니다.

지속적 배치는 자동화를 한 단계 더 진행하고, 수동 개입의 필요성을 제거합니다. 검사자와 개발자는 프로덕션 릴리스에 대한 승인이 필요하지 않을 정도로 충분히 신뢰할 수 있다고 간주됩니다. 테스트가 통과되면, 새 코드는 승인된 것으로 간주되며 프로덕션으로의 배치가 실행됩니다.

지속적 배치는 잘 수행된 지속적 딜리버리의 자연스러운 결과입니다. 결국, 수동 승인은 가치를 거의 또는 전혀 전달하지 않으며 단지 느리게만 합니다. 해당 시점에서, 이는 폐기되며 지속적 딜리버리는 지속적 배치가 됩니다.

지속적 배치와 지속적 딜리버리 간의 차이점에 대해 자세히 알아보려면 Eric Minick의 다음 동영상을 시청하세요.

지속적 딜리버리 vs. 지속적 배치(07:36)

지속적 배치 vs. 지속적 통합

원활하고 지속적인 배치를 보장하는 또 다른 핵심 요소는 지속적 통합입니다. 배치 프로세스의 자동화가 작동되려면, 프로젝트 관련 작업을 수행하는 모든 개발자에게 발생된 변경사항을 효율적으로 전달하는 방법이 필요합니다. 지속적 통합은 이를 가능하게 합니다.

일반적으로, 동일한 소프트웨어 개발 프로젝트에 대해 작업하는 경우 개발자는 코드의 마스터 분기의 개별 사본을 제거합니다. 그러나 개발자가 자체 변경사항을 기본 코드베이스로 병합한 이후, 특히 개발자가 서로 간에 독립적으로 작업하는 경우 기능 문제와 버그가 발생할 수 있습니다. 독립적으로 작업하는 기간이 길수록 위험은 더 높아집니다.

CI를 통해, 모든 사람은 하루에 한 번 이상 코드 변경사항을 저장소에 병합합니다. 업데이트가 발생하면, 자동화된 빌드 테스트가 실행되어 변경사항이 마스터 분기와의 호환성을 유지할 수 있도록 보장합니다. 이는 통합 문제를 가급적 빨리 캐치하기 위해 안전장치가 되어 있는 것처럼 작동합니다.

지속적 통합이 지속적 딜리버리 및 지속적 배치와 어떻게 다른지 자세히 알아보려면, 블로그 포스트 "지속적 통합 대 지속적 딜리버리: 간략한 설명" 및 동영상 "지속적 통합의 정의"를 참조하세요.

지속적 통합의 정의(06:20)

지속적 배치 툴

고품질 소프트웨어 개선사항을 지속적으로 개발 및 배치하려면, 개발자가 효과적인 DevOps 사례를 구축하기 위한 적합한 툴을 사용해야 합니다. 이를 수행하면 개발 및 운영 부서 간의 효율적인 커뮤니케이션을 보장함은 물론, 소프트웨어 딜리버리 파이프라인의 오류를 최소화하거나 제거할 수 있습니다.

다음은 지속적 배치 워크플로우에서 사용되는 가장 중요한 툴들 중 일부입니다.

  • 버전 제어: 버전 제어는 특정 프로젝트의 자산에 대한 개정을 추적하여 지속적 통합을 지원합니다. "개정" 또는 "소스 제어", "버전 제어"라고도 하는 버전 제어는 작업하는 위치 및 시점과 무관하게 팀의 협업을 지원하면서도 프로젝트의 업데이트 및 변경사항에 대한 가시성 개선을 지원합니다.
  • 코드 검토: 말 그대로 간단하게, "코드 검토"는 툴을 사용하여 현재 소스 코드를 테스트하는 프로세스입니다. 코드 검토는 코딩의 버그와 오류를 찾아서 소프트웨어의 무결성 향상을 지원하고, 업데이트를 배치하기 전에 개발자가 이러한 문제를 해결할 수 있도록 지원합니다.
  • CI(Continuous integration): CI는 지속적 배치의 핵심 컴포넌트이며, 다수의 개발자가 동일 프로젝트에 대해 작업하는 경우 개발 로드맵을 최소화하는 데 중요한 역할을 수행합니다. 다양한 독점 및 오픈 소스 CI 툴이 존재하며, 각각은 엔터프라이즈 소프트웨어 배치의 고유한 복잡성에 기여합니다.
  • 구성 관리: 구성 관리는 모든 소프트웨어와 하드웨어가 일관된 상태를 유지하도록 보장하는 전략 및 원칙입니다. 여기에는 모든 서버, 스토리지, 네트워킹 및 소프트웨어의 적절한 구성과 자동화가 포함됩니다.
  • 릴리스 자동화: 애플리케이션 릴리스 자동화(또는 애플리케이션 릴리스 오케스트레이션)는 지속적 배치의 구동에 필요한 모든 활동을 자동화할 때 매우 중요합니다. 오케스트레이션 툴은 프로세스를 서로 간에 연결함으로써 신규 변경사항을 프로덕션에 푸시하기 전에 개발자가 필요한 모든 단계를 수행하도록 보장합니다. 이러한 툴은 모든 프로젝트 환경이 적절하게 프로비저닝되고 최상위 레벨에서 수행될 수 있도록 보장하기 위해 구성 관리 프로세스와 긴밀하게 작동합니다.
  • 인프라 모니터링: 지속적 배치 모델을 운용하는 경우, 테스트 환경에 있는 데이터를 반드시 시각화할 수 있어야 합니다. 인프라 모니터링 툴은 애플리케이션 성능을 분석하여 변경사항이 긍정적인 또는 부정적인 영향을 미치는지 여부를 확인할 수 있도록 지원합니다.

Kubernetes 관련 작업

Kubernetes지속적 배치 파이프라인 개발 시에 사용할 수 있는 훌륭한 오픈 소스 솔루션입니다. 유연하고 논리적이며 직관적인 사용자 인터페이스 덕분에, Kubernetes를 통해 최신 인프라와 멀티클라우드 배치를 지원하면서도 서버 사용이 제한되고 중단되는 상황에서 발생하는 일반적인 문제들을 줄일 수 있습니다.

Kubernetes는 DevOps 프로세스의 민첩성 개선을 지원합니다. 모듈형 설계로 인해, Kubernetes는 서비스 내에서 개별 팟의 변경은 물론 팟 간의 완벽한 전환도 허용합니다. 이러한 유연성은 개발 팀이 서버 중단 시간을 피할 수 있도록 지원하며, 마이크로서비스 실행 시에 최대 리소스 활용도 허용합니다. Kubernetes는 또한 공용으로 배치되기 전에 애플리케이션과 서비스의 준비 및 전체 상태를 감지할 수 있는 매우 안정적인 플랫폼입니다.

다양한 애플리케이션에서의 지속적 배치

지속적 딜리버리 또는 지속적 배치 인프라를 구축하는 경우, 소프트웨어 테스트 및 배치 프로세스의 자동화에 필요한 신뢰를 기업에 제공하는 올바른 엔터프라이즈 솔루션을 소싱하는 게 중요합니다. IBM UrbanCode Deploy는 기업들이 하나의 최적화된 패키지에서 소프트웨어 개발 요구사항을 처리하는 데 필요한 가시성, 추적성 및 감사 기능을 제공하는 애플리케이션 배치 자동화 플랫폼입니다.

멀티클라우드 배치

UrbanCode Deploy의 Easy Process 및 Blueprint Designer를 사용함으로써, 기업들은 자체 애플리케이션을 퍼블릭, 프라이빗하이브리드 클라우드에 배치하는 방법을 시각화하기 위한 사용자 정의 클라우드 환경 모델을 구축할 수 있습니다. Blueprint Designer를 사용하여 사용자는 전체 클라우드 오케스트레이션 기능을 사용하면서도 풀스택 컴퓨팅 환경을 구축, 업데이트 및 중단할 수 있습니다. 그리고 모든 환경을 프로비저닝하여 애플리케이션 컴포넌트를 자동으로 또는 온디맨드 방식으로 배치할 수 있습니다.

분산형 자동화

UrbanCode Deploy는 모든 미션 크리티컬 애플리케이션과 서비스의 동적 배치를 지원하는 확장성이 뛰어난 솔루션입니다. 다수의 데이터 센터에 배치 중인 기업들의 고유 요구사항을 충족시키도록 설계된 UrbanCode Deploy는 마스터 서버 클러스터링을 지원하며, 경량 배치를 사용하여 즉각적인 서비스 가용성을 제공합니다.

품질 게이트 및 승인

자동화된 테스트 환경의 정확성에 의존할 수 있음은 지속적인 배치를 성공적으로 달성하는 데 있어서 절대적으로 중요합니다. 그러나 일부 환경에서는 올바른 정보가 적시에 프로덕션으로 푸시되도록 보장하기 위해 수동 승인에 플래그를 지정하는 특정 조건을 작성해야 합니다. UrbanCode Deploy는 관리자에게 지속적 배치 프로세스를 통해 더 많은 통제권, 가시성 및 감사 기능을 제공할 수 있도록 배치 승인 및 게이트를 특성으로 제공합니다.

테스트된 통합

UrbanCode Deploy가 자체 스크립트의 사용을 지원하는 한편, 즉시 사용 가능한 플러그인은 보다 간편한 배치 프로세스의 설계와 관리를 지원합니다. 테스트된 통합을 사용하여, 개발자는 이미 검증된 사전 빌드된 자동화를 활용할 수 있습니다. 이는 특히 UrbanCode Deploy의 경우 사용자 정의 스크립트를 작성해야 할 필요성을 대체합니다.

IBM UrbanCode Deploy는 기업이 사용이 간편한 하나의 맞춤형 대시보드에서 모든 배치 요구사항을 구성할 수 있도록 하는 고급 프로세스 오케스트레이션 및 협업 툴을 특성으로 제공합니다. 애플리케이션을 온프레미스, 오프프레미스 또는 수많은 관리형 서버에 배치하는지 여부와 무관하게, UrbanCode Deploy는 기업 전체에서 지속적 딜리버리와 신속한 배치를 보장하는 데 필요한 모든 솔루션을 제공합니다.

IBM UrbanCode Deploy 및 이를 통한 배치 프로세스의 개선 방안을 자세히 알아보려면 IBM의 배치 자동화 솔루션을 살펴보세요.

지속적 배치 및 IBM Cloud

코드 변경사항을 자동으로 프로덕션 환경에 릴리스하는 기능을 통해 시장 출시 속도를 획기적으로 개선할 수 있습니다. 써드파티 및 오픈 소스 플러그인과의 통합은 물론 IBM 툴을 통해 이를 수행할 수 있습니다. IBM 프로세스와 툴은 클라우드로의 여정에서 애플리케이션 현대화 및 구축이라고 하는, 기업들이 직면한 가장 어려운 DevOps 이니셔티브 중 하나를 수행하는 데 도움이 됩니다.

다음 단계로 진행:

지금 IBM Cloud 계정으로 시작하세요.