258
2
부
구현
코드 커밋을 감지하고, 체크아웃하며, 코드가 컴파일되고 테스트를 통과하는지 확인하는 등의
몇 가지 검증을 수행한다. 필자는 실제로 개발자가 하루에 여러 번 변경 사항을 통합하는 팀에
서 많이 일했었지만, 이러한 통합이 최소한 매일 수행되길 기대한다.
이 프로세스의 일부로 실행할 서비스를 배포해 이에 대한 테스트를 실행하는 것과 같이 추가
유효성 검사에 사용되는 산출물을 만드는 경우가 많다 (
9
장에서 테스트를 자세히 살펴본다 ).
이상적으로는 그 산출물을 한 번만 빌드하고 해당 버전의 코드를 모든 배포에 사용한다. 동일
한 작업을 반복 수행하는 것을 방지하고 배포할 산출물이 테스트된 것임을 보장하기 위해서다.
이러한 산출물을 재사용할 수 있도록
CI
도구 자체가 제공하거나 별도의 시스템에서 제공되는
리포지터리와 같은 곳에 보관한다.
곧 이 산출물의 역할을 자세히 살펴보고,
9
장에서는 테스트를 깊이 다룬다.
CI
에는 여러 장점이 있다. 정적 분석과 테스트를 사용해 코드 품질에 대한 빠른 피드백을 얻을
수 있고 바이너리 산출물 생성을 자동화할 수도 있다. 산출물을 빌드하는 데 필요한 모든 코드
가 버전 제어되므로 필요한 경우 산출물을 다시 생성할 수 있다. 또한 배포된 산출물로부터 역
으로 코드까지 추적할 수 있으며,
CI
도구 자체의 기능에 따라 코드와 산출물에서 어떤 테스트
가 실행된 것인지도 확인할 수 있다. 코드형 인프라스트럭처
infrastructure
as
code
를 수용한다면, 마이
크로서비스 자체의 코드와 ...