클라우드 호스팅 CI 이해하기

클라우드 컴퓨팅은 소프트웨어 개발에 지대한 영향을 미쳤습니다. 확장 가능한 클라우드 호스팅 인프라를 활용하도록 설계된 클라우드 기반 애플리케이션과 서비스는 점차 보편화되고 있습니다.

클라우드 호스팅 CI는 클라우드 호스팅 인프라의 이점을 소프트웨어 빌드, 테스트 및 배포 프로세스로 확장합니다.

CI/CD를 처음 사용하거나 기존 온프레미스 환경이 있는 경우 이 페이지의 내용은 클라우드 호스팅 CI/CD가 제공하는 이점을 이해하는 데 도움을 드릴 것입니다.

클라우드 CI에 대한 설명

지속적인 통합, 전달, 배포를 이용하면 사용자에게 소프트웨어를 더 빠르게 안정적으로 출시할 수 있습니다. 코드베이스를 변경할 때마다 CI/CD는 일련의 자동화된 단계를 거쳐 소프트웨어가 예상대로 작동하는지 확인합니다. 이 시스템은 프로덕션에서 버그 수를 최소화하는 동시에 개발에서 출시까지 걸리는 시간을 줄여줄 뿐만 아니라, 다른 이점도 많이 제공합니다.

수동 프로세스에서 자동화된 CI/CD로 전환하면 시간과 노력을 절약할 수 있지만, 인프라에 대한 요구 사항도 늘어납니다. CI/CD를 이용하면 몇 주 또는 몇 달마다 테스트 및 스테이징 환경에 새 버전의 제품을 배포하는 것이 아니라 하루에 여러 번 또는 그보다 더 자주 최신 코드를 테스트할 수 있습니다.

동일한 코드베이스에서 작업하고 변경을 수행하는 사람이 늘어날수록 자동화된 빌드, 테스트 및 배포 프로세스를 통해 코드를 처리하는 빈도가 높아집니다. CI/CD 프로세스를 자체 서버에서 호스팅하는 경우 사용 가능한 서버 수가 곧 제한 요소가 됩니다. 수요가 많은 시기(예: 팀이 중요한 수정 사항에 몰두하거나 출시를 앞둔 기능을 마무리하는 경우)에는 사내 CI/CD 인프라가 병목 현상에 빠지는 경우가 있습니다.

이러한 상황에서는 CI/CD 프로세스를 클라우드에서 호스팅하는 것이 도움이 될 수 있습니다. 클라우드 CI는 클라우드 호스팅 인프라에서 실행되도록 파이프라인을 설정하거나 완전한 관리형 클라우드 기반 CI/CD 서비스를 사용하여 구현할 수 있습니다.

두 경우 모두 클라우드 컴퓨팅의 확장성을 활용할 수 있습니다. 수요가 많은 기간에 충분한 용량을 확보하면서 유휴 서버로 인한 비용을 해결하느라 균형을 찾으려 애쓰는 대신, 필요에 따라 빌드 팜을 확장할 수 있습니다.

클라우드 호스팅 CI의 이점

클라우드에서 CI/CD를 호스팅하면 필요에 따라 리소스를 확장할 수 있으며, 프로세스가 더욱 강력해지며, 유지 관리 비용이 줄어들고, 클라우드 기반 개발이 더 원활해집니다.

코드로서 인프라(Infrastructure-as-Code)로 워크플로 간소화

클라우드 호스팅 인프라에서는 스크립트로 환경을 구성하는 것이 일반적입니다. 인프라 구성을 코드로 구현하면 각 빌드와 테스트 환경을 동일하게 유지할 수 있습니다. 또한 이 프로세스를 통해 필요할 때 더 많은 인프라를 온라인으로 가져올 수도 있습니다.

개발 중인 소프트웨어와 마찬가지로 인프라 자체도 CI/CD 파이프라인을 거쳐 예상대로 작동하는지 확인할 수 있습니다. 이 단계를 통해 변경 사항을 쉽게 롤백할 수 있습니다.

컨테이너화를 최대한 활용

클라우드 기반 애플리케이션을 개발하고 있다면 아마도 컨테이너를 사용하고 있을 것입니다. 컨테이너를 사용하면 환경 종속성과 구성 세부 정보가 소프트웨어와 함께 단일 아티팩트로 패키징되며, 컨테이너 런타임으로 모든 시스템에 이를 배포할 수 있습니다.

Kubernetes와 같은 컨테이너 오케스트레이션 도구는 다수의 컨테이너로 보다 용이하게 작업할 수 있도록 개발되었으며, 배포, 관리 및 확장과 같은 작업을 자동화합니다.

CI/CD 워크플로에서 컨테이너를 사용하면 최신 빌드를 다양한 파이프라인 단계에 배포하기가 더 간단해집니다. 빌드 아티팩트는 프로덕션으로 릴리스하기 전에 각 테스트 환경에 일관되게 배포할 수 있는 컨테이너 이미지입니다.

클라우드 CI/CD에서는 컨테이너를 통해 컴퓨팅 리소스를 효율적으로 사용하고 자동화 도구를 활용할 수 있습니다. 수요가 높을 때 용량을 늘릴 수 있고 수요가 낮을 때 컨테이너를 제거하고 기본 인프라를 해제할 수 있어 비용이 절감됩니다.

서버 유지 관리의 번거로움 해소

CI/CD 프로세스를 클라우드로 옮기면 빌드 팜이 가상 머신에 호스팅됩니다. 더 많은 용량이 필요하면 용량을 설정하기만 하면 되며, 더 이상 물리적 하드웨어를 조달, 설치 및 관리할 필요가 없습니다.

이러한 작업 부담의 감소로 팀은 파이프라인 프로세스 최적화 및 보안 유지에 집중할 수 있습니다. 비용은 처리 성능 및 시간과 관련되어 있으므로 몇몇 시스템을 장기간 사용하는 것보다 되도록 작업 병렬화에 시간을 할애하는 것이 개발자에게 더 빠른 결과를 제공하기에 좋습니다.

릴리스 경로를 열어두고 준비 상태 유지

CI/CD 프로세스는 모든 소프트웨어 개발 팀에 매우 중요한 자산입니다. 이는 사용자에게 소프트웨어 업데이트를 제공하는 메커니즘입니다. 이 프로세스를 클라우드에서 호스팅하면 예상치 못한 중단으로 인해 릴리스 경로를 사용할 수 없게 될 가능성이 줄어듭니다. 평소에는 이 정도의 회복력이 사치처럼 보일지 몰라도, 심각한 버그가 발견되고 긴급하게 수정 사항을 배포해야 하는 상황에서는 필수입니다.

클라우드 호스팅 CI/CD 프로세스를 도입하면 클라우드 리소스의 확장성이 높아져 블루/그린 배포 전략을 채택하기도 더 쉬워질 수 있습니다. 블루/그린 접근 방식을 사용하면 프로덕션에서 문제가 발생했을 때 트래픽을 신속히 이전 버전으로 전환할 수 있습니다. 즉, 이 프로세스에서는 문제를 해결하는 동안에도 서비스를 유지할 수 있습니다.

클라우드 CI 호스팅과 관련한 고려 사항

클라우드 CI/CD가 인프라 비용, 확장성 및 안정성 측면에서 상당한 이점을 제공할 수 있지만 고려해야 할 몇 가지 단점과 위험도 있습니다.

시스템 아키텍처

해당 제품이 컨테이너를 기반으로 설계된 경우 클라우드 호스팅 CI/CD를 사용하면 이 컨테이너를 통해 테스트 환경에 대한 배포를 간소화할 수 있습니다. 하지만 모놀리식 아키텍처로 작업하는 경우 소프트웨어를 컨테이너에 패키징하는 것이 어려울 수 있습니다.

물론, 컨테이너가 클라우드 호스팅에 필수적인 것은 아닙니다. 클라우드 제공자의 인프라에서 가상 머신을 계속 사용하여 빌드를 실행하고 테스트를 위한 일관된 사전 프로덕션 환경을 제공할 수 있습니다. 다만, VM은 컨테이너보다 더 많은 리소스를 소모하며 환경도 별도로 구성해야 합니다.

지식과 기술

코드로서 인프라(IaC)에 대한 전문 지식을 아직 보유하지 않은 경우 팀원들이 기술을 익힐 시간을 제공하거나 해당 지식을 도입하는 것을 고려해야 합니다.

하지만 클라우드 기술을 사용해 본 경험이 있으면 좋습니다. 팀에 이러한 기술을 개발하고 최신 기술을 사용할 수 있는 기회를 제공하면 직원 유지와 채용에 도움이 될 수 있습니다.

비용

클라우드에서는 시간이 돈입니다. 가동되지 않는 컴퓨팅 리소스 비용을 지불하고 싶지는 않으실 겁니다. 클라우드 호스팅의 비용 효율성을 위해 이를 효율적으로 사용할 필요가 있습니다. 즉 사용량을 모니터링하고 제한 시간 초과 시 유휴 상태의 인스턴스를 해제하는 도구를 활용하거나 해당 로직을 직접 구현해야 합니다. 로직 구현 옵션은 조직에서 보유하지 않은 기술이 필요할 수 있으므로 옵션을 조사하고 평가하는 것이 좋습니다.

보안

클라우드에서의 데이터 및 서비스 호스팅과 관련해 보안은 항상 우려 사항이었습니다. 일부 기업에서는 자사의 핵심 소프트웨어가 타사 도구에 놓인다는 생각만으로 부정적인 반응을 보입니다. 그럼에도 많은 조직은 현재 퍼블릭 클라우드를 사용하여 소스 관리 저장소부터 CI 서버 및 테스트 환경을 아우르는 라이브 서비스 및 배포 파이프라인을 모두 호스팅하고 있습니다.

잠재적인 공격 벡터를 식별하고 CI/CD 프로세스에 보호 기능을 구축하며 액세스 제어를 구현하는 일은 악의적 행위자로부터 대두되는 위험을 완화하는 데 모두 필요합니다.

하이브리드 접근 방식

코드로서 인프라(IaC), 컨테이너 및 컨테이너 오케스트레이션은 클라우드 기술에 기반을 두고 있지만, 프라이빗 클라우드 또는 온프레미스와 클라우드 호스팅의 하이브리드 인프라를 사용하여 CI/CD 구성에 통합할 수도 있습니다.

예를 들어, 실행 성능 테스트 등 일부 프로세스에는 클라우드 호스팅 인프라를 사용하고 나머지는 시설 내에 둘 수 있습니다.

이 하이브리드 접근 방식에는 여러 가지 장점이 있습니다.

  • 조직에서 향후 클라우드 호스팅 인프라로 전환할 계획이라면, 클라우드 기반 도구를 채택하여 전문 지식을 미리 구축하고 간편하게 전환할 수 있습니다.
  • IaC를 사용하면 스크립트만 실행하면 되므로 테스트 실행 사이에 환경을 새롭게 고치는 속도가 훨씬 빨라집니다.
  • 환경 생성 코드화는 일관성을 제공하므로 보안, 성능, UI 테스트, 지원 및 영업팀용 샌드박스 모두에서 프로덕션 설정과 사전 프로덕션 환경 간의 패리티가 보장됩니다.
  • 팀은 인프라 구성 파일을 소스 관리 시스템에 유지함으로써 도입된 변경 사항과 시기에 대한 감사 추적을 통해 환경 문제를 훨씬 간단하게 디버깅할 수 있습니다.

TeamCity의 이점

TeamCity를 사용하면 CI/CD 프로세스 중 클라우드에서 실행할 부분을 정확하게 선택할 수 있습니다.

TeamCity On-Premises를 사용하면 CI 서버와 빌드 에이전트를 시설 내 또는 클라우드에서 유연하게 호스팅할 수 있습니다. 모든 빌드, 테스트 및 배포 작업을 클라우드에서 호스팅하거나 수요 증가에 따라 빌드 팜을 자동으로 확장하는 모든 경우에 TeamCity의 기본적 특징인 주요 클라우드 공급자와의 통합은 필요한 모든 기능을 제공합니다.

TeamCity Cloud는 관리형 CI 서버를 제공하므로 인프라를 유지 관리할 필요 없이 빌드, 테스트 및 배포 프로세스를 간소화하는 데 집중할 수 있습니다. JetBrains 호스팅 빌드 에이전트와 자체 클라우드 호스팅 또는 시설 내 빌드 시스템을 모두 사용하는 옵션이 제공되므로 자유롭게 적합한 빌드 팜을 생성할 수 있습니다.

TeamCity Pipelines는 유연한 클라우드 기반 접근 방식을 통해 CI/CD의 효율성을 더욱 높이도록 설계되었습니다. 해당 워크플로의 필요에 맞게 시각적 드래그앤드롭 에디터나 YAML을 사용하여 파이프라인을 쉽게 만들고 관리하고 최적화할 수 있습니다. TeamCity Pipelines는 클라우드 호스팅 및 셀프 호스팅 에이전트를 모두 지원하고 필요에 따라 확장할 수 있으므로 최대한 원활하고 자동화된 빌드, 테스트 및 배포 프로세스가 보장됩니다.