애플리케이션 버전/빌드 날짜 및 시간을 API로 확인

마이크로 서비스로 많은 응용 프로그램을 시작하고 CI에서 자동 배포! 라는 이케하고 있는 현장이 늘어난 요즘. 매우 편리하고 기쁘게 생각하는 반면, 관리하는 어플리케이션이 늘어나 그만큼 불안을 기억하는 것도 늘어 왔습니다.
제가 맡고 있는 현장에서는 「자동으로 배포한 애플리케이션이 과연 예상대로 배포되고 있는 것인가!?」이거나, 「지금 어떤 버전이 배포되고 있었는가? 불안이 일어날 수 있었습니다.
그래서 이번에는 Spring Boot로 작성된 어플리케이션에서 프로덕션 코드에 손을 대지 않고 버전을 확인하는 기능을 추가하는 방법을 소개합니다.



대상 독자


  • 다음을 이용하여 웹 애플리케이션 개발
  • Spring Boot
  • Maven

  • 출시 후 응용 프로그램 정보를 외부에서 확인하고 싶습니다

  • 환경


  • Java 8+
  • Spring Boot 2+
  • Maven 3+

  • 사용할 기능



    다음 기능을 조합하여 실현합니다.
  • Application Info Actuator

  • info actuator | spring.io

  • Spring 속성 확장

  • automatic-expansion-maven | spring.io
  • org.springframework.boot:spring-boot-starter-parent 사용하여 사용 가능


  • 구현



    필요한 설정



    응용 프로그램의 구성 파일에 다음을 추가합니다.

    application.yml
    management:
      endpoints:
        web:
          exposure:
            include: info # 1.
    
    info:
      application:        # 2.
        name:             @project.build.finalName@
        version:          @project.version@
        build-timestamp:  @maven.build.timestamp@
    
  • 게시할 Management Endpoint 설정
  • 예에서는 info 만 지정하지만 여러 Endpoint 구성 가능 (예 : info, health )

  • 액세스되었을 때에 반환하는 정보
  • Key명은 자유롭게 명명이 가능


  • 확인해보기



    이번은 샘플로 작성한 spring-boot-automatic-expansion-maven 에서 확인해 보겠습니다.
    응용 프로그램을 시작하고 Spring Boot Actuator의 info 경로 /actuator/info에 액세스합니다.
    % curl http://localhost:8080/actuator/info
    
    {
        "application": {
            "name":"spring-boot-automatic-expansion-maven-0.0.1-SNAPSHOT",
            "version":"0.0.1-SNAPSHOT",
            "build-timestamp":"2018-05-20T13:41:45Z"
        }
    }
    

    예상한 애플리케이션 정보를 얻을 수 있었습니다.

    요약


  • 프로덕션 코드에 손을 추가하지 않고 실현 가능
  • 이하의 타이밍으로 확인할 수 있다
  • 릴리스 된 응용 프로그램의 버전이 올바른지
  • 테스트 할 응용 프로그램의 버전이 올바른지


  • 매우 쉽게 실현할 수 있으므로 꼭 추가하여 팀의 불안을 없애 갑시다!

    좋은 웹페이지 즐겨찾기