More and more enterprises are starting to think about adopting microservice architectures: small autonomous services that work together.
Unlike the monolithic applications of old, microservice application architectures can be used to adopt best-of-breed technologies – even if they mix and match different operating systems, languages, frameworks, runtimes, databases and monitoring tools.
Microservice applications can also be selectively scaled out. This delivers better value from the underlying infrastructure. But how should enterprises approach microservice architectures?
According to Matt Saunders (@cm6051), Senior DevOps Specialist at Contino and Co-Organiser of the London DevOps meetup, microservice architectures are not a free lunch. Paradoxically, the increased flexibility for developers often comes with an increase in complexity at an operational level.
For this reason, Saunders advocates finding a suitable pilot project for introducing a microservice architecture, providing a gentler introduction to microservices.
We spoke with Matt to get his take on how regulated enterprises can stay ahead, one of the biggest obstacles to adopting next generation design patterns and application containers, and the importance of Docker in general.
What should regulated enterprises be doing to stay ahead in 2015?
Software is taking over the world, so all companies whether regulated or not, should be looking at software as an enabler, and ensuring that their development processes deliver quality software as fast as possible.
Use the right combinations of Agile and DevOps techniques, appropriate to your organization. Remove obstacles, break down silos, find problems early in the development cycle, get code out, and get good code out to users more regularly.
What is the biggest obstacle to enterprises adopting microservice application architectures?
Microservice application architectures allow an organization to decouple parts of an application, allowing the constituent parts to have their own release cycles and more formally defined contracts with each other. This reduces fragility and allows different teams to operate at their own pace.
But microservice application architectures are not a free lunch – a gain in flexibility can often come with increased complexity at an operational level.
Where a single application previously had a standardized change process, possibly in a waterfall development environment, now multiple microservice applications need to be choreographed and monitored.
Scaling up change management and operational processes to deal with this can be a challenge for many organizations.
How can enterprises design a software stack that is both flexible and robust?
De-coupling software into smaller more manageable pieces – potentially by using microservice application architectures – enables flexibility.
Empowering development teams by allowing them to choose their own tools encourages experimentation, innovation and simplification, which in turn leads to robustness and commitment.
Using the same tools throughout the entire application lifecycle including the developer’s workstation promotes the early identification of bugs and integration problems. This further improves robustness.
Why is Docker so important?
Whilst application container technology has been around for over a decade, it’s only with the advent of Docker that application containers have become realistically usable in a build process.
Being able to make fully-functioning application containers that can be easily deployed and instantly started without the overhead of an entire virtual machine makes Docker a unique proposition.
Capacity management is simpler, and the ability to run the same code across environments without modification dramatically reduces friction between teams and increases ability to deliver code.
What would you say to a CIO who heavily invested in VMs?
CIOs who invested heavily in VM infrastructure don’t have to throw it all away! A sensible approach to using application containers would involve finding a suitable pilot project, perhaps one where the backend technology is reaching end-of-life, or where the largest gains could be made from increasing release speed.
Using a modern Agile and DevOps approach to create an application container-based infrastructure isolated to that project gives a gentler introduction to a containerised world.
And multiple virtual machines can be re-partitioned as Docker hosts – and indeed put to better use as there is no need to have a copy of the whole OS for each application container.
What does Contino do?
Contino is a London-based company helping enterprise organizations to deliver better software faster. We provide technical transformation services through using Continuous Delivery and DevOps techniques.
We’ve successfully worked in large retailers, conglomerates, banking, financial brokers and publishing, helping those organizations with their digital transformation and continuous delivery maturity.