개발부터 배포까지 자동화를 통해 효율적이고 빠르게 사용자에게 배포할 수 있도록 하는 것
지속적인 통합
버그 수정이나 새로만든 기능이 주기적으로 메인 repository 에 build되고 test 되어서 merge하는 것
여러 개발자들의 코드를 계속해서 통합하는 것
어플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트외어 공유 리포지토리에 통합됨
👉 여러명의 개발자가 동시에 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결
커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장함
지속적인 제공 or 배포
CI를 통해 주기적으로 빌드되고 테스트되면 배포할 준비과정을 거치고 나서 배포가 이루어지는데
여기서!!
수동적으로 배포한다면 delivery
자동으로 배포한다면 deployment
delivery와 deployment의 차이는 배포과정의 자동화!!
개발자들이 코드를 계속 작성하면 사용자 및 내부 사용자들이 계속 쓸 수 있게 만드는 것
빌드, 테스트 및 배포 단계를 자동화하는 DevOps방식을 논리적 극한까지 끌어올림
품질 저하 없이 최대한 빨리 사용자에게 새로운 기능 제공
간단한 코드 변경이 정기적으로 마스터에 커밋되고 자동화된 빌드 및 테스트 프로세스를 거치며 다양한 사전 프로덕션 환경으로 승격되며 문제가 발견되지 않으면 최종적으로 배포됨
빌드를 자동화 해주는 툴로 소프트웨어 개발 시 지속적으로 통합서비스를 제공하는 툴로 CI툴이라고 표현함
🧐 장점
결합 테스트 환경에 대한 배포작업 실시
프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
프로파일링 툴을 이용한 소스 변경에 따른 성능변화 감시
각종 배치 작업의 간략화
Build 자동화의 확립
- 빌드 관리 툴을 이용해 프로젝트를 진행하고 있다면 Jenkins와 연동하여 빌드 자동화를 통해 프로젝트 효율성을 높일 수 있음
자동화 테스트
- Subversion이나 Git과 같은 버전관리시스템과 연동하여 코드 변경을 감지하고 자동화 테스트를 수행
코드 표준 준수여부 검사
- 코드 품질 검사를 빌드 내부에서 수행함으로써 기술적 부채의 감소에도 크게 기여함
빌드 파이프라인 구성
- 2개 이상의 모듈로 구성되는 레이어드 아키텍처가 적용된 프로젝트에는 파이프라인 구성 필요함
- 빌드 파이프라인의 구성을 간단히 할 수 있으며 스크립트를 통해 매우 복잡한 제어도 가능함
📑 References