CI/CD와 DevOps

배수연·2024년 6월 18일

CI/CD

CI/CD란?

CI (Continuous Integration) : 지속적인 통합

  • 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합되는 것

필요한 환경

  • 다수의 개발자가 형상관리 툴(Git 등)을 사용하는 환경
    • 기능 추가 시마다 매번 commit을 빌드/테스트/병합하는 것이 번거로움
      -> 자동화된 빌드&테스트를 통해 소스코드의 충돌 등을 방어할 수 있음
  • MSA(Micro Service Architecture) 환경
    • MSA환경에서는 대부분 Agile 방법론이 적용되어 기능 추가가 빈번함
    • 작은 micro service의 긴밀한 동작 테스트도 중요
      -> 기능 충돌 방지 가능

핵심 목표

  • 버그를 신속하게 찾아 해결
  • 소프트웨어 품질 개선
  • 새로운 업데이트의 검증 및 릴리즈시간 단축

CD (Continuous Delivery & Continuous Deployment) : 지속적 서비스 제공 혹은 지속적 배포

  • Continuous Delivery : 공유 레포지토리로 자동으로 Release
  • Continuous Deployment : Production 레벨까지 자동으로 deploy

핵심 목표

  • downtime(서비스 중단 시간)을 최소화
    -> 사용자들의 서비스에 대한 연속적인 접근성을 유지하며 최신 소프트웨어 이용 가능
  • 개발팀과 비즈니스팀(영업, CS 등) 간 커뮤니케이션 문제를 최소화
  • 배포에 이르기까지의 노력을 최소화하여 리소스 최소화

CI : 빌드 및 테스트 자동화
CD : 배포 자동화

CI/CD 종류

  • Jenkins
  • CircleCI
  • TravisCI
  • Github Actions
  • etc..

DevOps

  • CI/CD는 DevOps엔지니어의 핵심 역량이다.

DevOps란?

  • DevOps란 개발조직과 운영조직의 벽을 최소화하자는 개념에서 시작
  • 현재 DevOps의 의미는 비즈니스 조직과 IT조직의 협업을 강화하자는 것

=> 다시말해, 고객과 업무를 가장 잘 이해하는 비즈니스 조직원의 생각과 아이디어가 실제적인 IT서비스로 구현되고 계속 발전되는 "문화"를 만들자는 것이 DevOps가 추구하는 방향

DevOps 문화의 목표

  • IT프로그램의 개발과 운영 비용 절감, 자동화를 통한 편의성과 속도 향ㅅ상 (X)
  • 고객과 비즈니스를 위한 지속적인 혁신 (O)

CI/CD

  • DevOps조직문화에서는 Speed와 Iteration이 중요
  • 즉, 비즈니스의 요구에 적시에 대처하고 지속적인 개선을 할 수 있어야 함

따라서 DevOps 엔지니어는
CI/CD 파이프라인을 구축하고 자동화하며,
모니터링 지표를 구성하여 개발자들의 개발 방향을 가이드하여

고객에게 안정적이고 신뢰성 높은 서비스를 배포(제공)하여 운영


출처
https://seosh817.tistory.com/104
https://artist-developer.tistory.com/24
https://happycloud-lee.tistory.com/45

0개의 댓글