There’s a real buzz about microservices and containers in the application development and DevOps communities, and of course these are topics we’ve been talking about a great deal lately here at XebiaLabs too.
Microservices and containers offer many attractive features, not least the potential for enhanced flexibility, and a robust architecture based on best-fit services. What we at XebiaLabs are really interested in is how organizations can effectively deliver microservices-based apps to better serve their customers and users. As we break down monolithic applications and move complexity from within to between applications, how do we cater for the new challenges?
Coordinating Interdependent Deployments
Yesterday’s workflow-based deployment tools were designed to deal with complex deployments of large, individual applications. With microservices we need new tooling that can harness a multitude of much smaller deployments, while tracking and managing their dependencies. It needs to be able to conduct proceedings, to bring everything together in time to deliver the app, but it can’t be too rigid. We want to be able to deploy different “bundles” of services easily, without having to ask an administrator to reconfigure our deployment tool.
Planning and configuration should be offered through a single interface with a real-time view of app deployment. We’re seeking the same balance of speed and efficiency that Continuous Delivery offers.
There’s a potential productivity boost in splitting services apart, but tracking all of the relationships between your services is going to be vital if you expect this to work well. You need to have certainty on environment and version compatibility, the impact on live services must be weighed, and components must be tested together. Testing isolated services is a simple enough proposition, but testing the entire app can be problematic.
Coordinating pipelines seamlessly, while retaining the agility to modify or remove services from a run, without fear of the impact, is a real challenge. Dependencies must be dealt with automatically to minimize error, but you won’t always be able to automate. The tooling must allow for manual tasks and provide insight that you can act on.
Taking A Measured Approach
Finding the right set of technologies for your microservices implementation will not be a quick or simple task. This is a fast-moving space that’s yet to mature and it takes time to assess where the greatest value lies for each team within your business. Delivering the greatest benefits may mean adopting a hybrid system that draws on and integrates different technologies.
Ultimately, the fundamental requirement for your tooling is to lay out the big picture, help you to predict risk areas, and empower you to mitigate them. You should be able to make the changes you need to make, without everything else falling over.
There can be no effective delivery of microservices-based apps without graceful management of multiple deployments and a clear understanding of their dependencies.
The latest versions of XL Deploy and XL Release have a number of features designed to help you cater for microservices architecture and containers, and we’ll continue to look at ways to provide practical support for the latest DevOps trends.