Microservices have been gaining a lot of attention lately. We have been exploring how a Microservice Architecture could provide us with a technical and business advantage. One of the things that is appealing is that it allows for team empowerment. Our teams can own specific applications and services. It also allows us to decompose our code into more discreet functions and be able to manage and monitor it in a better way.
We have explored many methodologies around microservices and have found what will work best for us. We are going to group “like” functions and put them into a small docker container. For example, we may have a “communication” container. This would contain things like text messaging, emails, etc. The idea behind this is that teams can own these areas, but also we are not creating a systems nightmare with containers running all over the place.
We are also being very picky on what becomes a microservice. Not all things are good candidates for microservices. We don’t want the overhead of Cache and Database connections in our containers. This causes bloat and management issues. We are looking at simple functions that can be converted over and allow other areas of our system to communicate with them. The less points of failure in these services the better off we will be.
All of our microservices are running through the Adobe API Manager. This allows the teams to create and monitor the individual services. We get excellent analytics on all services and can troubleshoot any issues quickly.