Process

CI/CD와 형상관리

큐범 2022. 6. 17. 22:28

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의 빌드 도구로 채택
  • 프로그래밍 언어 형식으로 유연함이 장점