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