코드도 이제 자율주행을 하게 만들자 CI/CD
1.
CI/CD는 개발자가 만든 코드가 실제 서비스라는 '무대'에 오르기까지 거치는 자율주행 컨베이어 벨트와 같습니다. CI(Continuous Integration, 지속적 통합)는 코드가 합쳐질 때마다 폭탄(버그)은 없는지 검사하는 깐깐한 품질 검사 로봇이고, CD(Continuous Deployment, 지속적 배포)는 검사를 통과한 코드를 사용자들의 휴대폰으로 즉시 쏘아 올리는 배송 기사님이죠.
2.
만약 이 벨트가 없다면 개발자는 업데이트할 때마다 수동으로 파일을 옮겨야 하는데요. 사람이 직접 하다 보면 파일 하나를 빼먹거나 엉뚱한 곳에 넣는 실수를 하기 마련인데, 이 실수가 곧 서비스 마비라는 대참사로 이어지기도 합니다. CI/CD는 이런 인간의 실수(Human Error)라는 변수를 아예 차단하여 1년 365일 멈추지 않고 서비스를 진화시키기 위해 반드시 필요합니다.
3.
넷플릭스는 전 세계 2억 명 이상의 시청자가 영화를 보는 도중에도 하루에 수천 번씩 코드를 바꿉니다. 우리가 넷플릭스를 보면서 점검 중이라는 안내문을 거의 본 적 없는 비결이 여기에 있죠. 넷플릭스는 자체 제작한 배포 도구인 스피나커(Spinnaker)를 사용하여 새로운 기능을 배포할 때 갑자기 모든 사용자에게 적용하지 않습니다. 먼저 1%의 사용자에게만 먼저 배포해보고(Canary Deployment, 카나리 배포) 에러 로그가 올라오지 않으면 자동으로 100%까지 확대합니다. 만약 단 한 명이라도 에러가 나면 시스템이 즉시 배포를 취소하고 1초 만에 예전 버전으로 되돌립니다.
4.
명품 쇼핑 앱에서 깜짝 타임 세일 기능을 추가하는 상황을 예로 들어볼게요. 먼저 개발자가 세일 로직을 코딩해서 제출하면 CI 로봇이 즉시 달려들어 이 기능을 넣어도 기존의 장바구니가 터지지는 않는지 혹은 결제 금액이 마이너스가 되는 버그는 없는지 수백 가지 테스트를 3분 만에 끝냅니다. 테스트에 합격 도장을 받자마자 CD 로봇이 코드를 서버로 실어 나르고요. 덕분에 오후 2시 정각이 되면 사용자들은 앱을 업데이트하지 않아도 화면 상단에 새로 생긴 타임 세일 배너를 즉시 보게 됩니다.
5.
브랜딩 측면에서도 CI/CD가 잘 갖춰진 회사는 고객의 요구사항을 반영하는 속도가 압도적으로 빠르다고 하네요. 기술의 속도가 곧 브랜드의 센스가 되어 고객을 팬으로 만드는 강력한 무기가 되는 거죠. 서버 다운되면 다시 그 서비스에 들어가기 싫어지잖아요.
6.
현대 IT 팀에서 주로 쓰이는 도구 이름인 GitHub Actions(깃허브 액션)나 Jenkins(젠킨스)라는 단어가 들리면 개발사 컨베이어 벨트의 이름이라고 이해하시면 됩니다. 오늘 자주 쓰는 앱의 업데이트 기록을 살펴보는 것도 도움이 되겠네요. 버그 수정이 일주일에도 몇 번씩 올라온다면 그 뒤에서 아주 건강한 CI/CD 벨트가 돌아가고 있다는 증거죠.
[세 줄 이해]
- CI/CD는 사람이 하던 위험한 업데이트 작업을 로봇에게 맡기는 자동화 벨트입니다.
- 넷플릭스는 이 기술로 하루 4,000번의 배포를 서비스 중단 없이 수행하는 속도전의 강자가 되었습니다.
- 개발사들은 배포 프로세스를 통해 안전하고 빠른 비즈니스 변화를 주도합니다.