CI/CD
CI ⇒ Continuous Intrgration (지속적 통합)
CD ⇒ Continous Delivery (지속적 전달)
CD ⇒ Continuous deployment (지속적 배포)
Continuous Intrgration
- 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미
- 개발코드를 통합할 때 문제점을 해결하고, 자동화시켜 지속적으로 유지시키는 방법
- 코드를 커밋만 치면 자동으로 빌드, 통합을 하고, 테스트를 하는 과정을 의미
Continous Delivery / Continuous Deployment
- 지속적인 서비스 제공 / 지속적인 배포
- 어플리케이션을 항상 신뢰가능한 수준으로 배포 될 수 있도록 지속적으로 관리
- CI가 이루어지고 난 후에 우영환경까지 배포를 수행하여, 실제 사용자가 사용할 수 있도록 적용하는 단계
Test Change: Consumer Driven Testing(Contract Test)
- What: 서비스 제공자와 사용자간 프로토콜, API 스펙, Kind Of Component Test
- Why: 서비스 제공자가 내 서비스를 사용하는 소비자에 대한 정보 및 규약 유지
CICD WorkFlow
형상관리 - History
형산관리란:
소스의 변화를 끊임없이 추적하고, 버전별로 관리한다.
CVS
- 1980년대에 만들어진 형상관리 툴이지만 파일 관리나 커밋 중 오류시 롤백이 되지 않는 등 불편한 문제점이 있어 이후 SVN으로 대체된다.
SVN
- 2000년에 CVS를 대체하기 위해 만들어졌음
- Trunk, Tag, Branch 구조를 사용
- 중앙 리포지토리 방식
- 개발자가 본인만의 Version을 가질 수 없는 단점이 존재
GIT
- 2005년 리누스 토발즈에 의해 시작
- 매우 빠른 속도와 분산형 저장소 SVN보다 많은 기능을 지원
- 개발자가 자신만의 Commit History를 가질 수 있다.
- 저장소 분리로, 복원이 용이하다.
빌드 자동화 툴
- 빌드 자동화: 자바 소스를 compile하고 package해서 deploy하는 일을 자동화 해주는 것
Apache Ant
- Another Neat Tool
- 2000년 출시
- Base build file : build.xml
- 장점 유연함(모든 명령을 직접 작성), 단점 규칙이 없기에 유지보수에 어려움
Apache Maven
- Ant의 불편함을 해소하고자 2004년 출시
- 규칙을 정하고 Goals라는 사전 정의된 command를 제공한다
- Base build file: pm.xml
Gradle
- Ant와 Maven의 장점을 모아 2012년 출시
- Android OS의 빌드 도구로 채택
- 프로그래밍 언어 형식으로 유연함이 장점