What are Microservices?
Microservices is an implementation approach for service-oriented architectures (SOA), which is used to build independently deployable software systems. Services in a Microservice Architecture (MSA) communicate with each other over a network to achieve a common goal. The microservices approach is the first realisation of SOA that followed the introduction of DevOps. The DevOps is becoming popular for building continuously deployed systems.
In a Microservices architecture, services need to be granular with lightweight protocols. A central microservices property that appears in multiple definitions is that services should be independently deployable. The benefit you get by distributing responsibilities of the system into different smaller services is that it improves the cohesion and decreases the coupling.
It makes it easier to change and add functions and qualities to the system at any time. It allows the architecture of an individual service to develop through continuous refactoring and reduces the need for a large-scale design at the beginning. It allows for releasing software early and continuously.
Characteristics of Microservices:
There is no universally accepted definition of Microservices or MSA architecture, but there are some defining characteristics which are common:
• The services are easy to replace with other microservices.
• These are the services organised around competencies like user interface, front-end, recommendation, billing, etc.
• You can implement these services using various programming languages, databases, hardware, and software environment, depending on what is best for the need.
• These small services are messaging enabled, autonomously developed, independently deployable, decentralised and built. They get released with automated processes.
• A microservices-based architecture naturally enforces a modular structure, which is great for maintenance and support.
• The service lends itself to a continuous delivery software development process.
• When there is a change in the application, it requires one or a few services to be rebuilt and redeployed.
These services adhere to the principles such as fine-grained interfaces, business-driven development, IDEAL cloud application architectures, polyglot programming and persistence, lightweight container deployment, and DevOps with very good service monitoring.
Monolithic Application Style
Most Enterprise Applications have three main parts:
1. Client-side user interface
3. Server-side application
The server-side application handles the HTTP requests, execute domain logic, retrieve and update data from the database, and populate HTML views to for the browser. This server-side application is a monolith (a single logical executable unit). In such systems, when there are changes to the system, it involves deploying another version of the server-side application.
Such a monolithic server is a natural way to approach building such a system. Your logic for handling a request runs in a single process & it allows you to use the rudimentary features of your programming language to divide up the application into classes, functions, and namespaces.
You can run and test the application on a developer’s laptop, and use a deployment pipeline to ensure that changes are tested and deployed properly into the production system. You can horizontally scale the monolithic design by running many instances behind a load-balancer.
Some reasons for being these Services very popular:
1. Technologies aligned with microservices
Traditional technology stacks are not fit for the realization of the microservices architecture. Lately, we have seen multiple large enterprises investing PaaS solutions such as Pivotal CF/IBM Bluemix (which is an open standard, a cloud platform for building, running, and managing apps and services) with the intent to leverage microservices architecture style. Successful microservices adoption requires the developer (or team) of the microservices to be empowered.
2. Return of SOA
In the last decade, enterprises have invested millions in building practices around their Service Oriented Architecture (SOA) programs. During these years, the enterprises have built skills, processes, and platforms. Many enterprises have reached a point where they have lost track of the services in these SOA platforms. Though the skill for building and managing the services is there, the agility expected by stakeholders is not achievable due to the complex and monolithic nature of the services built on these platforms.
Microservices is a next generation services architecture that addresses the pain points experienced by the current state of SOA. The expectation is that adoption of the microservices pattern over SOA will enable the development teams to realize the digital ambitions of the enterprise. Most of the freelance gigs are already on this platform.
3. DevOps adoption
DevOps* is a must for the successful realization of the microservices. There are multiple tools and technologies available to the enterprises today for creating their continuous integration or delivery pipelines. This maturity of DevOps is helping to boost the confidence of IT teams in their capabilities to build and manage applications based on microservices. Although in principle it is possible to practice DevOps with any architectural style, the MSA style is becoming the standard, for building continuously deployed systems.
*DevOps is a term used for a combination of Development and IT Operations. It refers to a set of practices that stress the collaboration and communication of software developers (or freelance web developers) with Information Technology professionals while automating the process of software delivery and infrastructure changes. It is establishing a culture, where building, testing, and releasing software can happen rapidly, frequently, and more reliably.
4. Providers of Microservices:
Technology vendor blogs are full of advice on how to build and manage microservices using their products. There are considerable marketing efforts by multiple vendors which are influencing the IT decision makers to consider the adoption of microservices.
The well-known names or success stories are Netflix, eBay, Amazon, Forward, Twitter, PayPal, Gilt, Bluemix, Soundcloud and The Guardian. These and many other large-scale websites & Apps have evolved from monolithic to microservices architecture.
In many organisations, developers are already employing microservices architecture. With a proper cloud infrastructure, microservices architecture can not only boost developer productivity but also enable the development of new applications that would have been impractical to build before.
When you add the increasing complexity and communication requirements of SaaS apps, it’s clear that microservice architecture has a very bright future ahead. Some names like MSA just don’t add more to the technical jargon, but if used properly, they add value to your websites and applications.