マイクロサービスで多くのアプリケーションを立ち上げ、CIで自動デプロイ!というイケている現場が増えてきた昨今。とても便利で嬉しく思う反面、管理するアプリケーションが増えその分不安を覚えることも増えてきました。
私が携わっている現場では「自動でデプロイしたアプリケーションが果たして想定通りにデプロイされているのか!?」であったり、「今どのバージョンがデプロイされていたっけ?」という"動いているアプリケーション"に対する不安があがることがありました。
そこで今回はSpring Bootで作成されたアプリケーションにおいて、プロダクションコードに手を加えることなくバージョンを確認する機能を追加する方法を紹介します。
対象読者
- 以下を利用してwebアプリケーション開発している
- Spring Boot
- Maven
- リリース後のアプリケーションの情報を外部から確認したい
環境
- Java 8+
- Spring Boot 2+
- Maven 3+
使用する機能
以下の機能を組み合わせて実現します。
- Application Info Actuator
- 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"
}
}
期待したアプリケーションの情報を取得できました。
まとめ
- プロダクションコードに手を加えることなく実現が可能
- 以下のタイミングで確認ができる
- リリースしたアプリケーションのversionが正しいか
- テストするアプリケーションのversionが正しいか
とても容易に実現ができるのでぜひ追加して、チームの不安を取り除いていきましょう!