This is a four part blog series about Microservices, and how to productively implement them. Part one - advantages of building microservice based applications.
To follow this series, it is important to first understand what microservices and services are.
What Are Microservices?
Microservices is a specialization of an implementation approach for service-oriented architectures (SOA) used to build flexible, independently deployable software systems. Services in a microservice architecture (MSA) are processes that communicate with each other over a network in order to fulfill a goal. These services use technology-agnostic protocols. The microservices approach is the first realization of SOA that followed the introduction of DevOps and is becoming more popular for building continuously deployed systems.
In short, applications designed using this architecture are comprised of small, modular, independent services. There are many benefits of having single-functioning separate services with their own supporting code base. These services are loosely coupled, communicate through APIs and are easier to develop, update, and maintain.
Check out our infographic on microservices
What Is a Service?
A Service is a software that:
- is responsible for holding, processing, and distributing a particular kind of information within the scope of the system;
- deployment and runs are independent;
- communicates with consumers and other services, presenting information using conventions and contracts;
- handles failure conditions.
Benefits of Microservices
Simple bug fixes, adding a single new field to an already-running application, or changing one particular component of a service are a few of the many benefits of Microservices. A decentralized method of creating and maintaining applications means for fewer down times, quicker iterations, and a more flexible landscape. Monolithic applications are built and deployed as a single application, and small changes can easily suspend the use of entire systems until bugs are fixed.
For example - if Netflix continued to be a monolithic application, the entire site could go down for its 103.95 million subscribers while developers fixed a small login component. Since Netflix uses (and pioneered) the microservices architecture, their developers can fix important components of code without affecting the front end interface for the massive base (1.5% of the world’s population) that uses their service.
Microservice architecture embeds a culture of freedom, responsibility, autonomy, inclusivity, deep communication, and fast iteration.
Technology Diversification and Conflicting Dependencies
Applications on monolithic frameworks are developed in one stack, and in one specific language. If there are possible new features for a certain component of one stack, it may or may not be able to be adapted because of the differences in language. Under the microservice approach, you can pick the best technology for specific features without running into stack or language issues.
For example - the profile service of an application may be written in Java, the log-in service may be written in an older version of C++, and the order service can be written in the latest version of C++ simultaneously.
Reduction in IT Cost :
Microservices reduces costs in the following ways :
Agility: Microservices architecture speeds up deployment, and shows that processes can be accomplished in shorter times. Shorter times to deployment cuts your IT spend.
Efficiency: reducing the amount of complexity required to run a given application also results in savings. Up to 50% of cost may be saved by reducing the complexity of an application’s infrastructure.
Flexibility: Dispersing functionality across multiple services eliminates an applications susceptibility to a single point of failure (SPOF). Stronger applications perform better, have fewer outages, and has the potential to scale rapidly.
Accountability: Decreased downtime directly increases revenue - through improving user engagement, increasing consistency, and sharpening efficiencies. All of these byproducts lead to increased user retention and engagement.
Microservices increase the productivity of DevOps as they include a common toolset that can also be used for development and operations. This common toolset creates a common terminology and processes for requirements, dependencies and problems; that in turn makes it easier for devs and ops to work together, as the two units can work jointly on the same problem and successfully repair a build configuration or a build script. DevOps and microservices both work better when they are used together.
What is DevOps?
DevOps is a software development process that emphasizes communication and collaboration between product management, software development, and operations professionals. The term comes from an abbreviated compound of "development" + "operations." This trending software development approach has many benefits - shorter development cycles, increased deployment frequency, and faster times to market. In today's world, enterprises must stay abreast of customer needs, beat competitors to market, and constantly change direction when necessary.
There are many reasons to implement the microservices framework, from reduced IT cost rapid deployment. In our next blog post, we will discuss the challenges in going from a monolithic application to using microservices.