DevOps
CI / CD 에 관한 설명을 들어가기에 앞서 , IT 분야에 관심이 많으신 분들은 DevOps 라는 용어에 대해 많이 들어보셨을 것 입니다. CI / CD 는 이 DevOps 와 관련이 깊은 용어인데요 ,
DevOps 란 애플리케이션 개발의 품질과 속도를 개선하고 신규 또는 수정된 소프트웨어 기능이나 제품의 릴리즈 주기 단축을 장려하는 새로운 철학이자 프레임워크입니다.
DevOps 는 CALMS 라고 하는 크게 5가지의 핵심 요소로 나뉩니다.
그 중에서도 바로 Automatation 부분이 바로 CI / CD 가 해당되는 부분입니다.
그렇다면 이런 CI / CD 란 무엇일까요?
CI / CD
CI
CI 란 Continuous Integration 의 약자로 지속적인 통합을 의미합니다. 새로운 코드 변경사항이 정기적으로
빌드 및 테스트되어서 공유 저장소에 통합되므로 여러 개발자가 동시에 작업하는 경우 생기는 충돌 문제를 해결 할 수 있습니다.
만약 프로그래머가 레포지토리에 코드를 공유를 한다면 빌드 후 테스트가 이루어지고 테스트가 통과까지 자동으로 이루어지도록 도와줍니다.
이러한 CI의 핵심 목표는,
버그를 신속하게 찾아 해결하고,
소프트웨어의 품질을 개선하고,
새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있습니다.
CD
CD 란 Contiuous Deployment 또는 Continuous Delivery 를 의미합니다.
CD 는 CI를 통해 테스트까지 모두 끝나고 배포까지의 단계를 말합니다.
Deployment와 Delivery는 차이점이 있습니다.
- Deployment : 배포 단계를 자동화
CI를 마치고 릴리즈가 가능하다면 배포까지 자동으로 이루어질 때 Continuous Deployment라는 용어를 사용합니다. - Delivery : 배포 단계를 수동화
CI를 마치고 릴리즈가 가능하다면 배포 단계에서 사람의 검증을 통해 수동적으로 배포가 이루어지면 Continuous Delivery라는 용어를 사용합니다.
Deployment와 Delivery는 뭐가 좋고 나쁘다는 기준이 없습니다. 어떤 프로젝트를 개발하는지, 회사 또는 팀에서 어떤 방식을 선호하고 채택하는지에 따라 방식을 선택할 수 있습니다.
만약 테스트용 서버에 배포를 한다면 Continuous Deployment를 사용할 수 있습니다. 유닛 테스트 이외 시나리오 테스트, 통합 테스트에서 특정 오류나 수정사항이 생긴다면 프로그래머가 빠르게 수정하고 테스트 서버로 배포를 할 때 이러한 자동화된 방법을 사용하여 업무 속도를 증가시킬 수 있습니다.
하지만 중요한 서비스, 시스템을 고객들에게 배포를 한다면 철저한 검증을 통해서 배포되어야 할 것입니다. 이럴 땐 Continuous Delivery가 적합할 수 있습니다.
CI / CD 툴
기존의 배포 방식은 jar 파일로 배포 한 후 만약 수정한다면 다시 jar 파일로 배포하고 해당 URL 로 들어가서 정상적으로 작동하는지 테스트하고 해야하지만 CI / CD 툴을 사용한다면 이러한 일을 줄일 수 있습니다.
CI / CD 의 대표적인 툴로는 Jenkins , GitHubAction 등이 있으니 시스템의 규모에 맞춰 사용하면 좋을 것 같습니다.
'IT & Tech' 카테고리의 다른 글
Session, TCP, RSA, RFC, JWT (0) | 2022.08.02 |
---|---|
MSA (Microservice Architecture) (0) | 2022.06.23 |
Domain Driven Design (0) | 2022.01.02 |
Event Driven Architecture (0) | 2021.12.28 |
댓글