How to use microservices in Hybrid IT
According to Gartner, microservices are part of the top 10 strategic technology trends for 2017, in support of mesh app and service architecture. You may have heard of microservices, but have you considered how they could benefit your applications and organisation in a Hybrid IT environment?
Microservices are independent application components that deliver specific outcomes and processes.
These components can be combined together to create a higher-level outcome, or complete application.
By their very nature, microservices are loosely coupled and can be interacted and combined via predefined Application Programming Interfaces (APIs).
This componentised architecture is well suited to cloud platform services. While it’s not mandatory, they work well together.
The elasticity of cloud platform services means they are excellent for scaling to meet demand.
Microservices can be scaled independently and therefore you do not need to scale your entire application. Instead, you can maintain performance and right-size infrastructure to meet the application component’s needs.
The alternative approach is to create a monolithic application architecture. Although this may be made up of a number of modules, they are often so tightly coupled, they must be developed, deployed, managed, upgraded and scaled as a whole.
The fact the application must be treated as a single entity and cannot be separated is a huge limiting factor, and one that is the key benefit of microservices. All other benefits can be linked from this single fact…microservices are loosely coupled and have well defined dependencies between each other.
A real life microservices example
Right now, I’m the business owner of a new application development project. This application is being developed with a microservices architecture, connected with RESTful APIs, on a fully containerised infrastructure which is being orchestrated with Kubernetes.
Yes, I know…I probably could not have crammed many more buzzwords into that sentence even if tried. Well, I could have added blockchain or serverless, but that is not the point. What I’m saying is, that this approach is providing me with tangible benefits.
Most of these benefits can be ratified down to a single unifying feature of microservices:
Microservices are loosely coupled with well-defined dependencies between each other
Let me explain, what impact this is having…
Geographically dispersed development
Defined dependencies help to make my geographically dispersed development team productive.
The team is working in different locations around Fujitsu’s global organisation that has been mandated due to skills and other organisational characteristics. This is common in many large enterprises.
The benefits of collocated teams have been well documented. However, I’ve been able to limit the impact of this geographically dispersed team by enabling each location, team or sub-team to be productive.
This is by focusing on a specific set of microservices to avoid conflicts and to limit the challenges of communication across time zones.
Multiple development languages
Again, the defined dependency nature of microservices has given the team the freedom to use different development languages.