Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/joshlong-attic/bootiful-microservice-configuration


https://github.com/joshlong-attic/bootiful-microservice-configuration

Last synced: 3 days ago
JSON representation

Awesome Lists containing this project

README

        

Bootiful Microservice Configuration
===================================

This accompanies a talk that looks at how Spring supports configuration at the various tiers.

It starts with http://spring.io/projects/spring-framework[Spring Framework], which provides the `Environment` abstraction, a concept of _profiles_ and the `@PropertySource` annotation.

Then, it looks at how Spring Boot's next-level support for configuration. Spring Boot normalizes external configuration (like `-D` arguments and environment variables) and even goes as far as canonicalizing external configuration properties such that, for example, the shell variable `SERVER_PORT` is the same as `-Dserver.port`, which is the same as putting `server.port` in a `.properties` file. Spring Boot also adds novel support for `.yml` configuration files. Spring Boot will, by convention, look for `src/main/resources/application.properties` and `src/main/resources/application.yml`, too.

Then, we look at how Spring Cloud supports cloud-native applications and operational requirements by supporting journaled, centralized configuration for multiple applications and services through the Spring Cloud config server. The Spring Cloud config server is backed by a http://en.wikipedia.org/wiki/Git_%28software%29[Git]. This promotes traceability and easier updates to configuration since there's no need to re-push an application just to change its configuration. Additionally, Spring Cloud supports _refreshing_ configuration for beans _in-situ_ through the `/refresh` Actuator endpoint and through the Spring Cloud event bus (which uses RabbitMQ as a message bus to propagate configuration changes to all connected applications or services).