어플리케이션 개발 프로세스
어플리케이션 개발자는 코드 작성부터 배포까지 다음의 일을 반복한다.
- 코드를 짠다.
- 빌드를 한다.
- 테스트를 한다.
- 배포한다.
어떤 것을 자동화 할 수 있을까?
코드를 짜는 일은 매번 달라질 수 있는 일이라 자동화가 어렵다.
하지만
- 빌드 또한 마찬가지이다. 몇가지 키를 설정해준 후 빌드를 누르면 빌드가 되므로, 자동으로 빌드가 가능하다.
- 테스트를 하는 것은 단순히 클릭 몇번이나 명령어를 통해 진행할 수 있으므로 자동화 할 수 있다.
- 배포 또한 마찬가지이다. 빌드된 결과물을 배포하는 곳에 올리기만 하면 배포가 가능하다.
이러한 자동화 가능한 일들을 매번 직접하는 것은 비효율적이다. 또한 사람이 하는 일이다 보니 각 과정에서 몇가지 빼먹은 일이 생긴다면 사용자에게 배포된 어플리케이션이 갔을 때 강제 종료가 일어나거나 화면이 안나오는 일이 생겨 UX(User eXperience)를 저해할 수 있다.
따라서 이를 자동화 한다면 사람이 직접 하다가 빼먹는 일을 방지할 수 있음은 물론 시간 또한 절약이 가능해진다.
CI 란?
CI란 Continuous Integration의 약자로 지속적 통합이라는 뜻이다. 지속적 통합이라는 말을 처음 들으면 무엇인지 이해가 가지 않을 것이다. 단순하게 설명하자면 배포전까지의 과정을 CI라 한다.
우리는 배포전까지 여러 브랜치의 코드를 통합하는 과정을 거친다. 각 브랜치의 코드를 통합하는 과정을 거칠 때마다 우리는 빌드 후 테스트를 돌려야 하고 기존 코드와 충돌이 없는지 확인해야 하며, 통합을 위한 규칙을 잘 지켰는지 확인해야 한다. 배포전까지의 과정이 여러 코드를 통합하는 과정의 반복이기 때문에 우리는 이를 지속적 통합이라 한다.
*보통 Git Flow를 이용하여 여러 브랜치를 통합하는 과정을 거친다
CD 란?
CD란 Continuous Delivery의 약자로 지속적 전달이라는 뜻이다. 즉, 사용자에게 프로덕트를 전달(배포)하는 과정을 CD라 한다.
정리
CI/CD란 코드를 짜는 과정을 제외한 모든 과정을 자동화 하는 것을 이르는 말이다.