Home United States USA — software What Are Microservices?

What Are Microservices?

204
0
SHARE

Microservices have become the new darlings in modern software development. Despite the benefits, this paradigm is easy to get wrong.
Join the DZone community and get the full member experience. Beloved by tech giants like Netflix and Amazon, microservices have become the new darlings in modern software development, even though they are more than a decade old. But, despite the benefits, this paradigm is easy to get wrong. So, let’s explore what microservices are and, more importantly, what they are not. The microservice architecture is a software design approach that decomposes an application into small independent services that communicate over well-defined APIs. Since each service can be developed and maintained by autonomous teams, it is the most scalable method for software development. Microservice design is the polar opposite of monolith development. A monolith is one big codebase (« the kitchen sink ») that implements all functionalities. Everything is in one place, and no single component can work in isolation. This means that the application must be tested as a whole. On the plus side, monoliths are easy to get up and running. Airbnb, to give an example, started with « The Monorail », a Ruby on Rails monolith. While the company was still small, developers could iterate fast. Making broad changes was easy as the relationships between the different parts of the monolith were transparent. As a company grows and teams increase in size, however, monolith development becomes more difficult. Soon, the system can no longer fit in a single head — there are just too many moving parts, so things slow down. Microservices allow companies to keep teams small and agile. The idea is to decompose the application into small services that can be autonomously developed and deployed by tightly-knitted teams. The main reason that companies adopt microservices is scalability. Services can be developed and released independently without arranging large-scale coordination efforts within the organization. A benefit of having a distributed system is the ability to avoid single failure points. You can deploy microservices in different availability zones with cloud-enabled technologies, ensuring that your users never experience an outage. With microservices, the development team can stay small and cohesive. The smaller the group, the less communication overhead and the better the collaboration.

Continue reading...