인프라 환경에서 애플리케이션이 운영하고 관리하는 환경을 구성하는 방법을 고려해야한다. 특히 애플리케이션을 빌드하고 인프라에 배포하는 환경이 중요하다. MSA 시스템을 구성하는 수많은 마이크로서비스를 하나하나 수동으로 빌드하고 배포한다면 비효율적이고 큰 혼란을 가져올 것이기 때문에, 이러한 과정을 통제하고 자동화하는 것이 중요하다.

개발 환경 지원 : 데브옵스 인프라 구성

데브옵스는 개발과 운영을 병행 가능하게끔 높은 품질로 소프트웨어를 빠르게 개발하도록 지원하는 빌드, 테스트, 배포를 위한 자동화 환경을 말한다. 여러개의 마이크로 서비스를 자주 배포해야하는 경우에는 자동화가 절실하다. 자동화된 빌드나 배포 작업을 CI/CD라고 한다. 지속적 통합(CI)은 자동으로 통합 및 테스트하고 그 결과를 리포트로 기록하는 활동을 말한다. 빌드를 매일 자동화해서 수행하면 개발 생산성이나 코드 품질이 높아진다. 지속적 제공과 지속적 배포를 말하는 CD는 소스코드 저장소에서 빌드한 실행 파일을 실행 환경까지 자동으로 배포하는 방법을 말한다.

빌드/배포 파이프라인 설계

빌드/배포 파이프라인은 통합 및 배포까지 이어지는 일련의 프로세스를 하나로 연계해서 자동화하고 시각화된 절차로 구축하는 것을 말한다. 이때 어떤 단계를 거치고, 어떤 도구로 그 단계를 구성할지 결정해야 한다. 보통 빌드, 단위 테스트, 정적 분석, 배포 과정을 거친다. 여기에 배포 절차 전에 UI 테스트, 통합 테스트, 배포 승인 프로세스 등을 추가해서 재설계할 수도 있다. 그리고 이를 구현하기 위해 어떠한 도구를 활용할지 결정하고, 도구 사이의 연계 방법을 정의해야 한다. 이러한 전 과정을 빌드/배포 파이프라인 설계라고 한다.

IaC는 인프라 구성을 마치 프로그래밍하는 것처럼 처리하고 소수의 인원으로 많은 컨테이너 배포 처리를 할 수 있도록 만드는 방법이다. 주로 형상관리 리포지토리에서 소스코드를 가져와 빌드하고 실행 파일을 만드는 작업, 실행 파일을 실행 환경에 배포하는 작업, 이런 작업을 통제하고 연결해서 전 작업이 성공하면 다음 작업이 자동으로 수행되게 하는 연계 자동화 작업으로 나눈다. MSA 시스템에서는 각 마이크로서비스가 별도의 빌드/배포 레포지토리를 가지고 있어야 한다.

마이크로서비스 생태계와 운영 관리 요소의 탄생

AWS의 클라우드 환경, 도커 컨테이너, 넷플릭스가 공유한 오픈소스, 스프링 프레임워크, 구글의 쿠버네티스 같은 것들이 마이크로서비스 생태계의 발전을 계속 이끌었고, 이러한 과정을 거쳐 마이크로서비스 아키텍처의 주요 문제 영역들이 논의되고 그에 대한 해결책이 제시되어 왔다.