Collection of independent libraries on top of Spring Boot to provide a faster setup of jvm microservices.
"I never did anything by accident, nor did any of my inventions come by accident; they came by work." - Thomas Edison
Have a look at the release notes for details about updates and changes.
This project contains a number of independent libraries on top of Spring Boot to provide a faster setup of jvm microservices. The libraries are used in different projects at OTTO. It's purpose is to provide a common implementation for cross-cutting requirements like:
- Health checks that are used to tell the load balancer or mesos platform whether or not a service is healthy.
- A status page/document that is used to give information about the current state of the service. Status information also include details about sub-components, background jobs like imports, and so on.
- A simple job handling library that is used to run asynchronous background jobs, which for example can be used to run data imports from other systems.
- An optional MongoDB-based implementation of a JobRepository
- Support for MongoDB-based repositories in case you do not like Spring Data
- Reporting of metrics to Graphite
- Support for feature toggles based on Togglz
... plus all the features of Spring Boot.
Future Releases aka Roadmap
Semantic Versioning v2.0.0 is used to specify the version numbers.
1.0.0: Edison Microservices for Spring Boot 1.4 ✔
1.x.0: Edison Microservices for Spring Boot 1.5 ✔
2.0.0: Edison Microservices for Spring Boot 2.0
edison-core: Main library of Edison microservices.
edison-jobs: Optional module providing a simple job library.
edison-mongo: Auto-configuration for MongoDB repositories plus implementation of MongoJobRepository and Togglz StateRepository.
edison-togglz: Optional support for feature toggles for Edison microservices based on Togglz.
edison-testsupport: Test support for feature toggles plus utilities.
edison-validation: Optional module for validation in Spring with a specific response format.
example-status: Service only relying on
edison-coreto show the usage of health and status features.
example-metrics: Service that is using edison-core metrics.
example-jobs: Edison service using edison-jobs to run background tasks.
example-togglz: Example using `edison-togglz´ to implement feature toggles.
edison-toggz, but with a MongoDB configuration to auto-configure persistence of feature toggles.
Make sure you have Java 1.8 or later and gradle 4.x installed on your computer.
Test and create coverage report
Determine possible dependency updates
gradle dependencyUpdates -Drevision=release
Publish new releases
There are a few examples that may help you to start your first microservice based on Edison and Spring Boot. Because Spring Boot itself has some complexity, it is recommended to first read it's documentation before starting with Edison.
The examples can be started with gradle:
gradle examples:example-status:bootRun gradle examples:example-metrics:bootRun gradle examples:example-jobs:bootRun gradle examples:example-togglz:bootRun gradle examples:example-togglz-mongo:bootRun
Open in your browser http://localhost:8080/
Note: Every example is configured to use port 8080, so make sure to run only one example at a time or to reconfigure the ports.
Have a look at our contribution guidelines.