더북(TheBook)

다행히 거의 모든 자바 마이크로서비스 프레임워크는 코드와 함께 패키징하고 배포할 수 있는 런타임 엔진을 포함한다. 예를 들어 그림 3-10의 스프링 부트 예제에서 메이븐과 스프링 부트는 내장형 톰캣 엔진을 포함하여 JAR 실행 파일을 빌드한다. 다음 명령줄 예에서 라이선싱 서비스를 JAR 실행 파일로 빌드하고 JAR를 실행한다.

mvn clean package && java -jar target/licensing-service-0.0.1-SNAPSHOT.jar

어떤 운영 팀에는 런타임 환경을 바로 JAR 파일에 내장하는 개념이 애플리케이션 배포 방법에서 큰 변화가 될 수 있다. 전통적인 자바 웹 애플리케이션에서 애플리케이션은 애플리케이션 서버에 배포된다. 이 모델에서 애플리케이션 서버는 그 자체로 하나의 개체라서 애플리케이션과 독립적으로 서버의 구성을 감독하는 시스템 관리자 팀이 관리했다.

애플리케이션 서버의 구성을 애플리케이션과 분리하면 배포 과정에서 문제점이 발생되는데, 이것은 많은 조직에서 애플리케이션 서버의 구성 정보를 소스 제어 저장소에서 관리하지 않고 사용자 인터페이스나 자체 관리 스크립트로 관리하기 때문이다. 결국 애플리케이션 서버 환경에서 구성 불일치(configuration drift)가 너무 쉽게 발생하여 표면적으로 무작위 장애를 갑자기 일으킨다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.