DevOps (+CI/CD)
DevOps와 CI/CD 관련 프로젝트를 하기 전 간단한 개념 안내글 입니다.
1-1. DevOps의 등장 배경
과거 대부분의 조직은 개발팀(Dev)와 운영팀(Ops)로 나누어졌었습니다. 개발팀은 주로 신규 프로젝트의 개발 업무를 맡았고 운영팀은 개발팀의 소스를 받아 배포, 모니터링, 개선 담당 업무를 맡았습니다. 하지만, 두 팀 간에는 항상 이해 충돌이 존재했습니다. 개발팀의 소스코드 변경은 안정성을 추구하는 운영팀 입장에서는 환영 받지 못했고 필요한 변화라도 승인 절차 때문에 배포 시간이 지연 되었습니다.
1-2. DevOps의 개념
이러한 갈등을 해소하고자 개발팀과 운영팀이 합쳐졌고 이것이 ‘DevOps’입니다. 덕분에 오래 걸렸던 배포 기간을 줄이고 안정적인 시스템을 운영할 수 있게 되었습니다. 이렇게 두 팀 간에 원활한 커뮤니케이션과 투명성을 장려하고 SW 개발 시간을 줄인 새로운 철학이 탄생했습니다.
1-3. DevOps의 필요성
배포 리드타임이 짧을수록 당연히 경쟁사보다 좋은 서비스를 먼저 선보일 수 있습니다. 즉, 배포 리드 타임은 때때로 회사의 성과에 직결됩니다. 실제로 빅테크 기업들은 하루에 몇 만 건 이상의 배포를 진행하기도 합니다.
위 그래프는 Puppet의 2015년 Report 자료입니다.
위 사진과 같이 개발자의 수가 많고 높은 성과를 내는 조직은 하루에 배포하는 횟수는 증가하고 있다는 것을 알고 있습니다. 끊임없이 빠르게 좋은 서비스를 고객에게 전달하는 것이 좋은 성과를 가져다준다는 좋은 자료입니다.
위 표는 Puppet의 2021년 Report 자료입니다.
이제는 배포는 수시로, 필요할 때마다 진행된다는 내용입니다. 과거 한 달 이상 소요되었던 배포의 기간을 몇 분 내로 줄었습니다. 좋은 성과를 보이는 조직일 수록 배포를 많이 한다는 것을 다시 확인할 수 있습니다.
2–1. CI / CD의 개념
데브옵스를 설명할 때, 주로 CALMS MODEL로 정의한다. 그 중, A는 Automation(자동화)를 말하고 대표적으로 CI/CD가 예시로 등장한다.
CI(Continuous Integration)는 개발자들의 코드를 지속적으로 통합하고 테스트하는 것을 의미하고, CD(Continuous Delivery/Deployment)는 자동화를 통해 지속적으로 배포하는 것을 의미한다. DevOps 개념과 비슷한 것 같지만 데브옵스는 개발, 운영을 합쳐 전제 프로세스의 기간을 줄인 것이고 CI/CD는 DevOps의 한 가지 방법(자동화)라고 생각해도 된다.