백엔드개발뿐만 아니라 많은 개발에 있어 CI/CD라는 표현을 자주 들어 봤을 것이다. 그런데 CI/CD는 정확히 어떤 걸까?
기본적으로 CI/CD Software Engineering에서 주로 사용되는 표현이다. 개발과정과 운영방식에 대한 방법론적인 표현으로 CI/CD자체는 어떤 개발툴이나 개발언어를 지칭하는 것이 아니다. 즉, 안 지킨다 해서 개발을 못하고 그런 건 아니다.
하지만, 우리가 개발한 Application의 유지 관리와 개발 그리고 개선하는 입장에서 필요한 상식이다.
CI/CD는 Continuous Integration/ Continuous Deployment의 약자로 지속적인 통합 지속적인 배포를 뜻한다.
즉, Application을 만들고 해당하는 기능들을 지속적으로 통합하고 통합한 내용을 지속적으로 배포하는것을 의미한다.
CI(Continuous Integration) 지속적인 통합
지속적인 통합에는 Monitor - Plan - Code - Build - Continuous Testing 순서로 진행된다.
팀 혹은 개인이 현재 개발된 혹은 개발 단계에서의 수요 파악을 통해 개발 방향을 설정하는 게 Monitor과 Plan이다.
그리고 계획에 맞춰 실질적으로 개발하는 것이 Code와 Build이다.
마지막으로 개발된 내용들 혹은 수정된 부분들을 배포전 테스트를 진행하는 게 Continuous Testing이다.(주로 배포환경에 맞춰 테스트를 진행한다.)
CD(Continuous Deployment) 지속적인 배포
지속적인 배포에서는 Continuous Testing - Release - Deploy - Operate - Monitor 순서로 진행된다.
위에서 Testing을 통과하면서 바로 시행되는 게 Release, Deploy, Operate이다.
Release와 Deploy가 같아 보일 수 있는데 개발의 입장에서 보면 확실히 다른 부분이 있다. Relase의 경우 개발한 Application을 사용 가능하도록 만드는 것이고 Deploy 같은 경우 Release 된 내용을 실제로 배포환경에 적용시키는 과정이다. 그래서 Application을 사용가능하게 업로드하는 게 Release고 업로드된 Application을 배포환경에 다운로드하는 게 Deploy고 마지막으로 설치된 Application 작동하는 게 Operate이다. 그리고 우리가 흔히 말하는 Jenkins, Github Action, Code Deploy들이 Release와 Deploy 그리고 Operate을 담당한다.
이 과정이 끝나고 이제 Monitor를 통해서 특정 기능이 수정이 필요 없는지 개선사항이 없는지 확인한다.
마지막으로 위의 한 사이클을 지속적으로 반복해 주는 것이 CI/CD 방식의 개발인 것이다. 이러한 개발방법이 절대적으로 좋다는 아니지만 Application이나 서비스를 안정적으로 운영하고 개선해 나갈 수 있는 좋은 방법 중 하나이다.
그럼 도대체 자동배포는 어떤 툴을 써야 할까?
참조
What is CI/CD and How Does It Work?
The difference between deployments and releases
* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다!
* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!
'개발일반 > 도대체' 카테고리의 다른 글
도대체 LangChain은 뭘까? (2) | 2024.09.19 |
---|---|
도대체 RAG는 뭘까? (0) | 2024.08.14 |
도대체 Docker는 뭘까요? (1) | 2023.12.18 |
도대체 Nginx는 뭘까요? (1) | 2023.12.08 |
도대체 M1, M2 칩 Macbook에 Tensorflow를 어떻게 설치할까요? (0) | 2023.03.15 |