What are microservices?: Definition, characteristics, advantages and disadvantages

26th May 2017

Microservices seem to be gaining acceptance on the sector by the day. Architectures based on this type of service are increasingly becoming more popular. In fact, many people see them as the future of IT architecture and believe that they are a fundamental component for the digital transformation of companies. But what are microservices? What are their features? What are their advantages and disadvantages? Find out in this post.

What is a microservice? Definition

What are microservices? Microservices are a software development system that has become greatly popular during the last few years. Even though many people found them to be interesting, not everyone has dared to put them to practice. In fact, it is now that most developers are discovering how microservices positively influence aspects such as project times, performance and stability.

Microservices set forth their own architecture. While in a monolithic architecture the application is developed as a single unit, a microservices architecture works with a set of small services which are executed independently and autonomously. Each of them may even be written in a different programming language. This type of service enables us to have more flexible and adaptable IT infrastructures, since when modifying a single service, it is unnecessary to modify the rest of the infrastructure.

“While in a monolithic architecture the application is developed as a single unit, a microservices architecture works with a set of small services which are executed independently and autonomously.”

Microservices communicate with each other through, for example, HTTP requests to their APIs. In order to accomplish this, there should be a minimum number of microservices whose function is to manage common elements.

On the other hand, with the advent of this architecture, the functionality of ESBs comes under scrutiny. In other words, ESBs will act in a way where there will be an orchestration of services; routing or integration of other systems will have to be performed by other components – even by microservices themselves.

It is therefore that in order to implement the new architecture set forth by microservices, especially over previously developed IT solutions, we should use a two-layer architecture. One layer that acts internally, and the second layer externally. In order to learn more about the way in which they interact, and the features of the microservices architecture, you should visit this article: HOW TO IMPLEMENT MICROSERVICES IN A LARGE COMPANY

Without a doubt, one of the strong suits of this type of services is its scalability. If we develop a project based on this method, an application or tool will result from a combination of several independent services that are deployed as needed. This will result in a modular application that may be expanded or reduced depending on the company goals at each specific moment.

Microservices common features

Above we have seen how microservices do not behave in a standard manner. In spite of that, we can find some common characteristics.

  • Characteristics of its software: It may be broken down into several independent parts. To accomplish that, each of the services may be deployed and modified without affecting other functional aspects of the application.
  • Characteristics of its organisation: The way in which they are organised implies a contrast with the monolithic environment, since they account for aspects such as the capabilities, needs and preferences of the business or client where they are to be implemented. As for the architecture, multi-purpose modules are used, achieving the creation of a common module for everyone, offering a specific service. Undoubtedly, the greatest advantage is time savings and convenience in maintenance tasks, making sure the rest of the team can complete their workday while maintaining a module.
  • Characteristics of its architecture: Each module is independent, since each one of them has its own database; in other words, not all services connect with the same database. Therefore, overloading and application downtime is prevented.
  • Characteristics of their warnings and actions: Since several services are communicated, we need to have warning and action systems in case there is any failure on these services. In other words, we would get a warning, an e-mail would be sent to support, etc. This system is beneficial, since it favours a good operation between the remaining functional modules.

Microservice advantages and disadvantages

We now know what microservices are, as well as their architecture and main characteristics. We will therefore describe some of their advantages and disadvantages.

Advantages:

  • Minimal work team
  • Scalability
  • Modular functionality, independent modules.
  • Developer freedom to develop and deploy services independently
  • Use of containers, allowing for a quick deployment and development of the application

Disadvantages

  • High memory use
  • Time required to fragment different microservices
  • Complexity of managing a large number of services
  • Developer need to solve problems such as network latency or load balancing
  • Complex testing over the distributed deployment

In summary, as we have seen, microservices have several advantages that make processes easier when using an app. However, since it is a novel system, most CIOs would face obstacles when implementing these systems in their companies due to the complexity of some functionalities. Nonetheless, as we have seen, implementing microservices could bring great results that are highly beneficial to large companies. Some examples are Amazon or Netflix, which have already implemented this technology.

microservices-architectures-ebook-eng

Learn how to implement a microservice architecture with our free ebook

The microservices architectures (or microservices) are increasingly closer to becoming a