Microservices are a big buzz word in the technology space, but I feel like its definition changes on who you ask and what time of day it is. If you were to ask me, microservices are just as their name implies - micro. Not big, not medium, not mini...but micro. Now I'll need to provide you some background here. At my place of work we are currently going through what most big company's are doing nowadays, and that is taking a monolith (single cluster 'F' of everything) application, and decomposing it into multiple microservices (tiny bite size chunks). I have been given the task to design and implement a pattern for what a microservice will ultimately end up being, which will be used for all teams within division (about 35 teams). I have come up with a pretty solid pattern that encompasses all that is considered enterprise standards. For example, such things as audit logging, secret/password hiding, common error handling, building, publishing, etc... This multiple series post will be the journey that took us from requirements to production. If you dare to take this journey with here is our roadmap.
- Start from Scratch - Let the old code 'Rest in Peace'
- Gradle - the new new build tool
- Spring Boot - Bootstraping the pieces
- Spring Boot Starters - Making your own libraries
- Feign Client - HTTP requests made easy
- Vault - hiding your secrets/passwords
- Lombok - Your Wing Man
- Exception Normalization - Making Exceptions into Responses
- Others as I think of them ...
Will you join us on the journey on breaking up a monolith into simple sizeable chunks? After this talk we can then discuss nano services...:)