Notification
새로운 알림이 없습니다.
Trending Searches (last 7 days)

[CI/CD] How to choose CI/CD and the right deployment tools

How to choose CI/CD and the right deployment tools

  • Overview
  • CI/CD 
  • Criteria for choosing an appropriate deployment tool
  • Next Actions

Overview

Cloud(AWS, Azure, GCP)에서 VM 및 Container를 배포하는 방법은 다양합니다.
(*AWS의 Code Series, Azure의 Azure DevOps ... )
해당 글에선 CI/CD와 배포 도구(Deployment Tool)를 선택하는 기준에 대해서 알아볼 예정입니다. 

What is CI/CD?  



배포 도구에 대해 알아보기 이전에 CI/CD란 개념이 왜 나왔는지에 대해 이해하고 넘어가는게 좋을것 같습니다. 

CI/CD에서 CI는 Continuous Integration(지속적 통합)이며, CD는 Continuous Delivery(지속적 전달) 또는 Continuous Deployment(지속적 배포)의 줄임말 입니다. 

쉽게 풀어서 설명하자면, App 개발 단계를 자동화하여 App을 보다 짧은 주기로 사용자들에게 제공하는 방법입니다.

CI의 장점으로는 개발자 생산성 향상, 버그를 더 빠르게 발견 및 해결, Release 및 Update 정보를 빠르게 제공할수 있는 장점이 있습니다. 

CD의 경우, 완벽한 구현이란 없지만 사용하기 용이하게 구현을 하게 된다면 즉시 배포 가능하고 표준화된 Test Process를 통과한 Build Artifact등을 보유할수 있게되는 장점이 있습니다. 

자주 빌드 및 배포함으로써 버그를 수정하고 요구사항을 빠르게 반영할수 있는 매력적인 시스템이라고 생각합니다. 

Criteria for choosing an appropriate deployment tool 

    출처: https://www.cloudzero.com/blog/continuous-deployment-tools

CI 혹은 CD를 하는 도구들은 위 이미지에 보시는것과 같이 다양한 도구들이 있습니다. 
관련해서 우리는 해당 도구들을 선택할때 고려할 기준들을 잡고 가야합니다.
  • Project Requirement(요구사항)
    • Project에서 사용하는 Source Code 관리, 테스트 도구와 통합이 가능한지?
  • Cost(비용) 
  • Usability(편의성) and Extensibility(확장성)
    •  선택한 CI/CD 도구가 확장 가능하고 유연하게 설정할수 있는지? 
  • Monitoring 및 Logging
    • Pipeline Job에서 과정들을 확인할수 있도록 Monitoring 및 Logging이 가능한지? 
  • Deployment Strategy
    • Blue-Green, Canary, Rolling Update ... 등등의 배포 전략을 지원하는지? 
위 5가지를 Toy Project로 구축하겠다고 생각을 하셨을때 배포 도구를 고르는 기준으로 잡았으며, 목적에 따른 우선 순위를 같이 고려해보시는것도 좋을것 같습니다. 

필자는 Google Cloud Platform(GCP)에서 VM의 CI/CD Project 구축을 생각하고 있습니다.
관련해서 Cloud Build라는 제품이 존재하지만, Approval(승인) 절차를 위해 Build Trigger를 별도로 만들어야 하는 점이 조금 불편하였습니다. 
(*추후 개선된다면 Cloud Native 하게 써보는 것이 좋을 것 같습니다..)
추가로 Cloud Build는 빌드 및 배포를 위해 GCE 인스턴스를 사용하여, 인스턴스 성능에 따라 빌드 및 배포 시간이 길어질수도 있었습니다. 

위와 같은 이유로 인해 Jenkins를 통해 CI/CD를 구축하여 GCP VM에 배포하는 방법에 대해 다음 글에 설명해 드리고자 합니다.

Next Actions

Jenkins에 대한 짧은 소개와 GCP에선 어떤 형태로 배포할수 있는지 Step별로 설명해 드리고자 합니다.

끝으로 이 포스팅을 보시는 분들이 관련 정보를 얻으시는데 도움이 되었으면 합니다. 
CI/CD
Stan Cloud
Stan Cloud
An avid cloud engineering Fan
대화 참여하기
댓글 쓰기