티스토리 뷰

728x90
반응형

컴퓨터를 사용한 자동화의 가장 큰 목적이자 정의 중 하나는 사람의 관여를 줄이는 것이다.

 

이는 단순 반복 작업에서 사람을 자유롭게 하고,

 

휴먼 에러(Human Error)에서 프로그램을 자유롭게 해 개발 효율과 속도를 높인다.

 

그중 CI, CD, 배포 자동화는 특별히 애플리케이션 빌드 및 배포의 자동화를 통해 

 

고객에게 더 짧은 주기로 제품을 제공하는 방식을 아우르는 개념이다.

 

경계가 모호한 감이 있지만 하나씩 알아보기로 하자.

 

CI - Continuous Integration

 

CI는 직역하면 지속적 통합이라는 의미가 된다.

 

여기서 통합이란 개발자 각각의 작업에 대한 통합을 의미하며,

 

구체적으로는 소스코드와 버전 및 작업환경의 통합(=충돌 방지)을 의미한다.

 

이를 지속적으로 한다는 말은 곧 통합 과정의 자동화, 즉 코드+빌드+테스트의 자동화를 가리키게 되며,

 

코드의 변경사항이 지속적으로 빌드, 테스트된 뒤에 공유 리포지토리로 통합되어 품질을 보장하는 식으로 기능하게 된다.

 

CD - Continuous Delivery or Continuous Deployment

 

CD는 직역하면 지속적 (서비스) 제공, 지속적 배포라는 의미를 갖는다.

 

CI 이후의 파이프라인 추가 단계에 대한 자동화를 뜻하는 CD는 그 자체로 자동화율에 대한 척도가 되기도 한다.

 

지속적 배포라는 단어에서 추측할 수 있듯이 좁은 의미에서의 배포 자동화를 가리키는 표현이기도 하며,

 

CI 단계를 마친 변경사항을 최대한 빠르면서도 품질의 저하 없이 자동으로 고객에게 전달하는 것을 목적으로 한다.

 

조금 더 구체적으로는 지속적 제공은 CI 이후의 결과물을 공유 레포지토리에 자동으로 업로드하는 것을 가리키며

 

지속적 배포는 업로드된 내용을 고객에게 릴리즈 하는 과정을 가리킨다고 보면 된다.

 

Deployment Automation

 

직역하면 배포 자동화가 되는 Deployment Automation은 위 그림에서 점선으로 표시된 영역이다.

 

굳이 점선을 고른 이유는, 배포 자동화 파이프라인은 상황과 필요에 따라 얼마든지 조절이 가능하기 때문이다.

 

따라서 위 그림과 정확히 1:1 매칭이 되지 않을 수가 있지만,

 

여기선 소스 코드의 관리부터 배포까지의 과정을 배포 자동화라고 하겠다.

 

위의 배포 자동화 파이프라인을 자주 쓰이는 스테이지 별로 구분해 다시 그리면 아래와 같이 된다.

 

 

  • Source Stage - 버전 컨트롤 도구를 사용한 소스코드 관리와 변경사항 감지 및 다음 단계로 전달
  • Build Stage - 이전 단계에서 전달받은 코드 컴파일, 빌드, 테스트 및 결과물 다음 단계로 전달
  • Deploy Stage - 전달받은 결과물을 고객에게 전달하는 작업

 

AWS Developer Tools

 

AWS에선 배포 자동화를 위한 개발자 도구를 제공한다.

 

위 도구를 사용해 배포 자동화 파이프라인을 구축할 수 있으며, 대략 아래와 같은 모양이 된다.

 

 

  • CodeCommit - Source Stage를 구성하는 버전 관리 도구. 유료이지만 보안에 강점을 가진다.
  • CodeBuild - Build Stage 구성. 유닛 테스트, 컴파일, 빌드와 같은 작업을 명령어로 실행 가능
  • CodeDeploy - Deploy Stage 구성. 실행 중인 서버 앱/정적 웹에 실시간으로 변경사항 전달 및 반영 가능
  • CodePipeline - 각 단계를 연결하는 파이프라인을 구축할 때 사용
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함