CI/CD

송수용·2022년 6월 26일
0

항해99

목록 보기
9/12
  • CI/CD란?
    • CI는 간단히 요약하자면 빌드/테스트 자동화 과정 과정입니다. CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을의미합니다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.
      지속적 통합의 실행은 소스/버전 관리 시스템에 대한 변경 사항을 정기적으로 커밋하여 모든 사람에게 동일 작업 기반을 제공하는 것으로 시작합니다. 커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장합니다. 지속적 통합은 그 자체로 유익하지만 CI/CD 파이프라인을 구현하기 위한 첫 번째 단계이기도 합니다.
    • CD는 간단히 말하면 배포 자동화 과정입니다. CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용됩니다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 합니다.
      지속적 배포는 빌드, 테스트 및 배포 단계를 자동화하는 DevOps 방식을 논리적 극한까지 끌어 올립니다. 코드 변경이 파이프라인의 이전 단계를 모두 성공적으로 통과하면 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포됩니다. 지속적 배포를 채택하면 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있습니다.
      지속적 배포는 또한 성숙하고 입증된 지속적 통합 및 지속적인 전달 단계를 기반으로 합니다. 간단한 코드 변경이 정기적으로 마스터에 커밋되고, 자동화된 빌드 및 테스트 프로세스를 거치며 다양한 사전 프로덕션 환경으로 승격되며, 문제가 발견되지 않으면 최종적으로 배포됩니다. 강력하고 신뢰할 수 있는 자동화 배포 파이프라인을 구축하면 하루에도 여러 번 이루어지는 릴리스가 특별하지 않은 일상이 됩니다.
  • CI/CD를 하는 이유는?
    • 탁월한 코드 품질 보장
      • 코드의 품질을 높이기 위해 CI/CD 파이프라인은 테스트를 자동화를 제공하기 때문에 개발자들은 거의 실시간으로 코드 문제를 파악할 수 있다. 이러한 신속한 오류 해결 개념을 통해 팀은 버그가 있는 코드로 인해 시간이나 자원을 낭비하지 않아도 되며, 개발자는 다른 프로젝트를 구동할 때 끝없는 ‘수정’ 요청에 시달리지 않아도 된다. 시간과 비용을 모두 절약할 수 있으며, 오로지 코딩에만 집중할 수 있다.
    • 릴리스 속도를 단축하여 더 신속하게 제공
      • CI/CD 이점을 잘 나타낸 사례가 골드만삭스이다. 이 회사의 기술 부서는 2주 마다 1개의 코드를 빌드했지만, 이후 하루 1,000개 이상으로 늘어났다. 통합CI/CD 파이프라인은 소프트웨어 릴리스 속도를 높이는 데 있어 터보 엔진과도 같다. 코드를 더 빨리 릴리스하고, 더 많은 새로운 코드를 개발할 수 있게 됨에 따라 릴리스가 가능하다. 성공적으로 CI/CD 파이프라인이 작동하면, 결국 기업 차원에서도 고비용의 개발자 리소스를 최대한 활용할 수 있어 이득을 얻을 수 있다.
    • CI/CD 파이프라인: 자동화로 비용 절감
      • 소프트웨어 개발 프로세스에 사람의 개입이 필요 없게 되면, 시간과 비용을 절감할 수 있다. 이러한 이유로 성공적인 데브옵스 수행사례의 토대는 바로 자동화이다.
        CI/CD는 핸드오프, 소스코드 관리, 버전제어 시스템 및 배포 매커니즘은 물론, 많은 테스트 기능을 자동화한다.
        이 중에서도 테스트가 가장 중요하며, 테스트 릴리스 지연의 가장 큰 원인으로 확인되었다. 지연된 릴리스는 비용과 브랜딩, 홍보 및 평판 등의 측면에서 비즈니스 영향을 미칠 뿐만 아니라 신속한 시장 출시에 의존하는 기업에게는 치명적이다. 전통적으로 소프트웨어 테스트는 수동으로 진행되었고, 엄청나게 많은 시간이 소요되었기 때문에 기업들은 1년에 한두 번 정도만 새로운 코드를 릴리스 하는 경우가 많았다. 반면 오늘 날 기업들은 상시 릴리스가 가능해야 하며, 이를 위해서는 자동화된 소프트웨어 테스트가 매우 중요하다.
    • 오류 격리
      • 소프트웨어 개발 분야에서 데브옵스 및 CI/CD가 주목받기 전에는, 개발팀이 코드에 문제가 있다는 것을 알아도 문제가 발생한 정확한 위치를 파악하는 데는 어려움을 겪었다. 그런데 CI/CD와 자동화된 테스트로 인해 상황이 달라졌다. 개발자는 코드 오류를 쉽게 식별한 다음, 이를 격리함으로써 생산성을 크게 향상시킬 수 있게 되었따.
    • 간소화된 롤백(이전 버전 되돌리기)
      • 개발자는 CI/CD 파이프라인을 통해 오류를 신속하게 해결하고, 훨씬 더 빠르게 복구할 수 있다. 이는 코드를 운영환경으로 전환하고, 문제가 있으면 롤백하면 되는 간단한 프로세스이다. 코드를 쉽게 롤백할 수 있는 기능은 팀의 시간과 에너지, 리소스를 절약하고, 문제가 있는 코드를 보다 신속하게 수정할 수 있도록 해준다.
    • 지속적인 피드백
      • CI/CD 프로세스는 비즈니스 이해관계자들을 비롯해 팀의 모든 사람들이 무슨 일이 일어나고, 어디에서 일어나는지, 그리고 무엇이 잘못되었는지 확인할 수 있는 방법을 제공한다. 실제로 소프트웨어 개발에서의 싱글 윈도우는 혁신적이다.
    • 최적의 투명성과 책임성
      • CI/CD 파이프라인은 지속적인 피드백을 통해 전체 소프트웨어 개발 프로세스를 비즈니스 측면에서 완전히 투명하게 처리한다. 제품 관리자는 프로젝트 상태를 한 눈에 확인하고, 필요에 따라 책임 소재를 추적할 수 있다.
    • MTTR(Mean Time to Resolution, 평균 해결 시간) 개선
      • CI/CD 파이프라인이 제공하는 가시성 덕분에 데브옵스 팀은 문제를 신속하게 파악하고, 빠르게 해결할 수 있다. 문제를 신속하게 해결하는 능력은 핵심 개발 지표인 MTTR(Mean Time to Resolution)의 주요 요소이다. MTTR이 좋을수록 데브옵스 팀은 더욱 효율적으로 작업하고, 더 빨리 소프트웨어를 출시할 수 있으며, 이러한 MTTR은 비즈니스 수익에 직접적인 영향을 미친다.
    • Metrics(지표) 데이터 모니터링
      • 팀과 비즈니스 측면에서는 코드가 실제 환경에서 어떻게 동작하는지 알아야 하지만, 기존 소프트웨어 개발 수행사례에서는 이를 모니터링할 만한 통계 지표가 없는 경우가 많았다.(예를 들어 데브옵스 현황을 파악하는 데 도움을 주는 지표에는 리드 타임, 배포 빈도, 변경 실패율, 평균 복구 시간 등이 있다.) 이상적인 환경이라면 팀이 먼저 코드 문제를 파악하고, 최종 사용자가 이를 인식하기 훨씬 전에 롤백할 수 있어야 한다. CI/CD 파이프라인은 다양한 지표에 대한 지속적인 피드백을 제공하여 이상적인 환경을 실현할 수 있다. 제대로 동작하지 않는 버그가 많은 코드 및 애플리케이션을 원하는 기업은 없기 때문에 이러한 지표 데이터에 대한 액세스는 단순히 시간만 절약하는데 그치지 않는다.
    • 백로그의 중요하지 않은 결함 감소
    • CI/CD는 시간과 비용을 절감시켜준다. 이에 개발자는 시간이 부족하여 그동안 수정할 수 없었던 오래된 코드들을 더 명확하고 효율적으로 만드는 작업이 가능하게 됐다. 즉 개발자들이 기존에 처리하기 곤란했던 백로그(결국 누가 시간을 따로 낼 수 있는 가의 이유로 백로그라고 부른다.) 및 사소한 결함에 대해서도 작업할 수 있다는 아이디어는 데브옵스와 CI/CD가 팀에 가져온 게임 체인저이다.
      IT 기업 고객사의 경영진들이 많이들 궁금해하는 부분 중 하나가 바로 CI/CD의 중요성이다. CI/CD를 도입하게 되면 개발부터 애플리케이션 배포까지의 과정이 신속하다. 코드 빌드의 횟수도 많은 데 동시에 보안 테스팅과 사용자의 피드백까지 반영된다.
      또다른 장점도 소개하며 이 글을 마치고자 한다. 최근 java의 빈틈을 노려서 Log4j라는 컴퓨터 역사상 최악의 취약점 공격이 발생한 적이 있다. CI/CD 파이프라인이 없는 기업들은 ‘어느 지점’이 공격 당했는 지 파악하기도 쉽지 않았던 반면에, 미리 구축했던 기업들의 경우 신속하게 파악 후, 종속성(Dependency) 항목의 취약점에 빠르게 대응이 가능했다. 정상적인 개발 사이클이 항시 유지가 가능하다.
  • CI/CD를 하는 방법들
    • gitHub Action
profile
#공부중 #협업 #소통중시 #백엔드개발자 #능동적 #워커홀릭 #스파르타코딩 #항해99 #미니튜터 #Nudge #ENTJ #브레인스토밍 #아이디어뱅크

0개의 댓글