CI/CD는 애플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해서 좀 더 효율적이고 빠르게 유저들에게 배포할 수 있는 것을 말한다.
CI/CD는 DevOps 엔지니어의 핵심 업무라고 할 수 있습니다.
CI(Continuous Integration)란?
지속적인 통합이라는 의미로 애플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 리포지토리에 통합하는 것을 의미합니다.
애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 자동화된 빌드&테스트 되어 공유 리포지토리에 통합되므로
다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경 (Git, SVN 등)에서 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.
MSA(Micro Service Archietecture) 환경
작업 기능별로 서비스를 잘게 쪼개어 개발하는 형태를 의미합니다.
주로 대표적인 MSA로 카카오톡 세부 서비스들을 예로 들 수 있을거 같습니다. (선물하기, 톡서랍, 패션 등)
MSA 환경에서는 대부분 소규모 기능 단위로 빠르게 개발 및 적용을 반복하기 때문에 작은 micro service의 긴밀한 동작 테스트도 중요해집니다.( 애자일(Agile) 방법론 )
그러한 상황에서 CI의 적용은 기능 충돌 방지 등의 이점을 제공할 수 있습니다.
이러한 CI의 핵심 목표는 버그 해결 및 서비스 품질을 개선하여, 새로운 업데이트 사항에 대한 검증 및 릴리즈 시간을 단축 시키는 것에 있습니다.
CD(Continuous Delivery & Continuous Deployment)란?
지속적인 서비스 제공 Continuous Delivery & 지속적인 배포 Continuous Deployment 두 용어 모두 의미합니다.
Continuous Delivery는 공유 레포지토리로 자동으로 릴리즈 해주는 것을 의미하며, Continuous Deployment는 Production 레벨까지 자동으로 배포하는 것을 의미합니다.
CI가 새로운 코드를 빌드, 테스트, 병합까지를 의미하였는데 CD는 코드의 수정 사항이 리포지토리를 넘어, 유저의 Production 환경까지 Release 되는 것을 의미합니다.
CI에서 예로 든 Micro Service Archietecture와 같은 환경에서 애자일(Agile) 방법론이 적용될 경우, 서비스의 사용자는 최대한 시간 내에 최신 버전의 Production 을 제공 받을 필요가 있습니다.
이 때 애플리케이션이 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 관리하는 것이 CD라고 할 수 있습니다.
이는 서비스의 개발팀과 비즈니스팀간의 커뮤니케이션 부족 문제를 해결해 줌으로써, 배포에 이르기까지의 노력을 최소한으로 단축 시켜 준다는 이점을 제공합니다.
DevOps 엔지니어의 역할
CI/CD 자동화는 DevOps 엔지니어의 핵심 업무에 속합니다.
CI/CD를 위한 파이프라인을 구성하고, 이를 자동화 단계까지 끌어 올립니다.
또한, 중간중간 모니터링 지표를 구성하여, 개발자들의 개발 방향을 가이드합니다.
이를 통하여, 고객들에게 안정적인 신뢰성 높은 서비스 프로덕션을 제공합니다.
서비스의 컨텐츠를 개발하는 일도 중요하지만, 고객에게 안정감 있는 서비스를 배포하여 운영하는 일도 중요합니다.
'General' 카테고리의 다른 글
페어 프로그래밍: 협업의 힘을 극대화하다 (0) | 2024.11.18 |
---|---|
코드 리뷰: 더 나은 코드를 위한 필수 과정 (2) | 2024.11.17 |
애자일(Agile) 소프트웨어 개발: 유연성과 효율성의 만남 (3) | 2024.11.16 |
TDD(테스트 주도 개발) 방법론을 실무에 대입하기 (1) | 2024.11.15 |
개발자를 위한 블로그 글쓰기 (7) | 2024.11.05 |