- Yair Mark
In the environment I currently work in we use microservices to build applications for business. This is really cool in that we can create physical boundaries for product code and can more easily work on different products in parallel.
Managing these microservices is where it gets really tricky as you have many more smaller apps to manage. Kubernetes does an amazing job of this in terms of container orchestration and load balancing as well as helping to easily debug issues. Where I find it more cumbersome is in managing Continuous Delivery. You can use something like Jenkins or TeamCity to manage the CI but still need to define a strategy for the CD. Today that was crystal clear to me when managing the deployment of multiple microservices into an environment where I had to look at what had changed in each microservice and decide whether it made sense to deploy the changes. In some cases I had little context of what the changes were about in a microservice as they were worked on by another team.
Having looked briefly at this problem some sort of branching strategy seems best. Using something like GitHub Flow with toggles significantly simplifies the process as anything in master/trunk gets deployed to production. Each change gets QA'd via pull requests and if it is really big simply toggle it off and deploy. This is something we still need to explore more in our space.