오늘의 공부 👍
오늘은 CI, CD에 대해서 알아보겠습니다.
📝 CI
- Continuous Integration의 약자이다.
- 지속적인 통합이라는 의미이다.
▷ 지속적인 통합
- 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합되는 것이다.
▷ CI가 필요한 환경
▶ 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
- 형상관리 툴을 사용하는 개발자들은 기능 추가 시마다 commit 등을 날려 레포지토리(Repository)에 버전 업데이트를 한다.
- 위와 같은 상황에서 CI는 자동화된 빌드와테스트를 해준다. 이는 원천 소스코드의 충돌 등을 방어한다.
▶ MSA(Micro Service Archietecture) 환경
- 기존의 어플리케이션이 모든 기능을 포함하는 하나의 거대한 서비스이었다면, MSA는 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태를 의미한다.
- MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발방법론) 방법론이 적용되기 때문에, 기능 추가가 매우 빈번하게 발생하게 된다.
- 위와 같은 상황에서 CI는 기능 충돌 방지 등의 이익을 제공한다.
▷ CI 요약
- 버그를 신속하게 찾아 해결한다.
- 소프트웨어의 품질을 개선한다.
- 새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것이다.
- 새로운 소스코드의 빌드, 테스트, 병합까지를 의미한다.
📝 CD
- Continuous Delivery 혹은 Continuous Depolyment의 약자이다.
- 지속적인 서비스 제공 혹은 지속적인 배포 라는 의미이다.
▷ CD 특징
- Continuous Delivery는 공유 레포지토리로 자동으로 Release 하는 것이다.
- Continuous Deployment는 Production 레벨까지 자동으로 deploy 하는 것을 의미한다.
- 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것이다.
마무리 👍
출처 및 참고
CI/CD란 무엇인가 (Feat. DevOps 엔지니어)