CI/CD(Continuous Integration/Delivery & Deployment)
개발자들이 소스 코드를 지속적으로 통합하고, 테스트하며, 배포하는 것을 의미
필요한 이유
혼자가 아닌 수 많은 개발자가 코드를 합치고 배포를 계속해서 시스템 없이 수동으로 한다면 여러 명의 개발자가 동시에 개발을 하게 될 것이고 서로 다른 환경에서 안되는 문제, 에러등이 발생. 이러한 문제를 해결하기 위해 CI/CD라는 개념이 도래했고 이를 쉽게 해주는 툴 등이 나옴
파이프라인
코드구축부터 시작해서 배포까지의 일련의 과정들을 CI/CD 파이프라인이라고 함. 총 3가지의 단계로 구성
continuous integration : 코드를 빌드하고 테스트하고 통합
continuous delivery : 해당 레퍼지토리에 릴리즈
continuous deployment : 이를 프로덕션, 즉 실제 서비스에 배포
파이프라인이 주는 장점은 코드 배포까지 좀 더 체계적으로 만드는 점과 테스트가 강제 됨. 파이프라인 자체내에 테스트가 있기 때문에 테스트 없으면 코드 머지 자체가 안되게 만들 수도 있기 때문
빌드
대표적인 예로 webpack : 여러가지 모듈들을 정적 자산으로 빌드해주는 것으로 도와주는 도구
테스트
테스트는 함수 등 작은 단위를 테스팅하는 단위테스트, 모듈을 통합할 때 테스트하는 통합테스트, 사용자가 서비스를 사용하는 상황을 가정해서 테스트하는 엔드 투 엔드 테스트가 대표적임
테스트를 위한 대표적인 프레임워크로는 mocha가 있음.
이외에 코드 보안 테스트도 포함
머지
git이나 svn을 이용해 머지를 함
작은 프로젝트 같은 경우 충돌을 최소화하기 위해 어떤 폴더는 해당 개발자만 맡는다고 할 수도 있음
충돌이라는 것은 대부분 일어나기 때문에 조금 더 작은 단위로 충돌이 일어나게 하는게 중요
한달동안 코드를 짜서 배포하는게 아니라 작은 이슈단위로 나눠서 보통 머지를 함. 그렇다고 해서 너무 아토믹하게 작은 단위로는 하지는 않고 작은 issue단위를 기반으로 머지를 하게 됨
만약 충돌시에는 서로 화면 공유하며서 합의하에 충돌을 해결하는게 제일 좋음
ex) mocha
https://github.com/mochajs/mocha/pull/4511
배포
배포는 그저 사용자를 위한 서비스를 배포할 수도 있다고 생각할 수 있지만 그뿐만이 아닌 내부적으로 QA엔지니어나 관리자 페이지를 위한 배포, 데이터 웨어 하우스로부터 데이터를 가공해서 백엔드개발자를 위한 배포 등을 포함
툴
github action, genkins, circle ci가 유명하며 heroku를 통해 CI, CD 설정 없이 자동 가능
참고로 heroku + github action 으로 설정도 가능
* 참고
'CS > 개발자필수지식' 카테고리의 다른 글
[CS] 오버로딩과 오버라이딩 (0) | 2023.08.26 |
---|---|
[CS] 클래스와 객체와 인스턴스의 차이, static 키워드 사용하는 이유 및 단점 (0) | 2023.08.25 |
[CS] 클라우드 - 컨테이너와 도커 (0) | 2023.08.23 |
[CS] 클라우드 - 가상머신 (0) | 2023.08.20 |
[CS] API 개념 (0) | 2023.08.18 |
댓글