The unrivalled agility and scalability offered by microservices enable change-ready growth for firms.
Business does not stand still. So, business software development can never rest. As the commercial landscape shifts, the needs for businesses to adapt, evolve, identify and exploit opportunity shift too. Demands for scalability and agility in multiple business contexts only increase. So too does the pressure on the IT organization to provide software that adapts to meet those ever-changing needs.
Microservices. The big idea is keep it small. Break up the software development behemoth. Partition the software itself into a range of small, independently deployable, but re-combinable components. These can work together to deliver a set of business functions today. And when tomorrow brings inevitable change? Because the components are separable, they can be re-ordered to fulfill new business functions unforeseen yesterday (or to satisfy known demands previously not met). Now, the organization can enjoy greater levels of business agility enabled by highly adaptable, change-ready software.
The business likes it, as does the IT organization. IT organizations love cost savings, and they value business resiliency. They like these advantages even more in the context of flexible solutions delivery and scalability, dealing effectively with the stresses of increasing volumes and customer demands. When it comes to meeting real world scalability requirements, small and independently deployable microservices outrun big monolithic software systems, delivering real advantages.
With any worthwhile opportunity comes challenge. For IT organizations, the move to a microservices-based architecture presents challenges as well as opportunities. These are twofold: to the technology and to the people.
Moving to a microservices-based architecture is technically feasible today. Moving to it successfully in practice demands clear insight and application of core guiding principles:
- Keep it SOLID Build on good foundations. Following certain software architecture and design precepts, such as the SOLID principles of object-oriented design, will make it easier to build and integrate microservices.
- Keep it simple Stick to simple distributed-application communication patterns.
- Keep it clear Maintain cohesion of individual microservices and work towards a ‘shared-nothing’ view.
- Keep it combinable Adopt a run-time configuration management approach that allows wiring together cooperating services, minimizing coupling and redesign when recombining services.
- Keep it orchestrated Since a business solution usually consists of an orchestrated set of microservices, an orchestration framework - tuned to the granularity of microservices - will be integral to the architecture.
- Keep data front of mind Remember that data sharing and data architecture present unique challenges when dealing with microservices.
People and the way they work are as important as technology to successfully implementing a microservices-based architecture. What are the key work style attributes for success?
- Small is beautiful Small, cross-functional development teams are most productive.
- Agility is everything Adopt a development methodology, such as Agile, capable of producing highly iterative and relatively small units of work.
- Decentralization is central Devise an enterprise architecture and governance structure that supports a decentralized and adaptable suite of software products and development processes.
Microservices are not offered as a cure-all, but their vast potential cannot be ignored. While the microservices approach will not, on its own, fix a ‘broken’ organizational software delivery process, the real benefits it brings - scalability and flexibility - are eminently achievable. And, as organizations make the transition to a cloud-based infrastructure and the internet of things (IoT), structuring their application architecture using a microservices approach will indeed be a natural and logical fit.
For details of how to implement microservices successfully, read our white paper Microservices: The software development approach with macro benefits potential