개발자라면 한 번쯤 CI/CD를 들어봤을 것이다.
오늘은 CI/CD에 대해서 알아보자.
우선 CI가 뭔지 알아보자
CI는 Continuous Integration. 즉, 지속적인 통합이라는 의미이다.
지속적인 통합
CI가 필요한 환경 조건
다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
MSA(Micro Service Archietecture) 환경
-IT 업계에 떠오른 아키텍처 모델
CI의 핵심 목표
CD는 Continuous Delivery & Continuous Deployment 두 용어의 축약어이다.
해석하자면 지속적인 서비스 제공 혹은 지속적인 배포라는 의미이다.
Continuous Delivery
Continuous Deployment
정리하자면, CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미했는데, CD는 개발자의 변경 사항이 Repository를 넘어, 고객의 Production 환경까지 릴리즈 되는 것을 의미한다.
CI에서 예로 든 MSA와 같은 환경에서 Agile 방법론이 적용될 경우, 서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 Production을 제공받을 필요가 있다.
이런 경우 소프트웨어가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 support 하는 것이 CD라고 할 수 있다.
이는 서비스의 개발팀과 비즈니스팀 간의 커뮤니케이션 부족 문제를 해결해 주고, 개포에 이르기까지의 노력을 최소한으로 단축시켜 준다는 이점을 제공한다.
CI/CD 자동화는 백엔드의 역할이라기 보다는 DevOps 엔지니어의 핵심 업무에 속한다.
물론 회사에 따라서 백엔드가 할 수도 있다.
또한, 개인 프로젝트, 사이드 프로젝트의 경우도 마찬가지이다.
DevOps 엔지니어는 CI/CD를 위한 파이프라인을 구성하고, 이를 자동화 단계까지 끌어올린다.
또한, 지속적으로 모니터링 지표를 구성하여, 개발자들의 개발 방향을 가이드한다.
이를 통하여, 고객들에게 안정적이고 신뢰성 높은 서비스 프로덕션을 제공한다.
프론트, 백엔드 개발도 중요하지만 배포 또한 매우 중요한 작업이다.
고객에게 안정감 있는 서비스를 배포하여 운영하는 일은 굉장히 중요하다.
만약, 수시로 서버가 종료되는 서비스가 있다면 고객들이 사용할까?
이와 유사한 서비스를 하지만 안정감 있는 서비스를 제공하는 쪽으로 고객이 몰릴것이다.
CI/CD 툴
LINE 엔지니어의 CI/CD 적용 사례
https://engineering.linecorp.com/ko/blog/build-a-continuous-cicd-environment-based-on-data