Microservices (Comment)

Using microservices is one of my favorite things on projects, they make it easier to reuse already done software written on any programming language. The only drawback is the complexity of organizing those microservices. Another problem is to define how small your microservice should be. This microservice can scale horizontally by running many instances behind a load-balancer. As Martin Fowler and James Lewis said, a microservice has the next characteristics:

  • Componentization via Services
  • Organized around Business Capabilities
  • Products not Projects
  • Smart endpoints and dumb pipes
  • Decentralized Governance
  • Decentralized Data Management
  • Infrastructure Automation
  • Design for failure
  • Evolutionary Design

For me, the best implementation of microservices are APIs and packages that can be called in order to create or transform a piece of information with certain operations/instructions. Now a days we don't create a server entirely, we use a package to create an endpoint that can be called through a browser. For example if we are using NodeJS, most of the people use a package called Express to get the project up and running. If we need to create a system for the company that makes OCR (Optical Character Recognition), one can create a web project that calls certain package or call a Cloud Service as Google Vision. You don't need to add this little program to other systems. And if at any time you need to combine them, one can create secure endpoints to reduce the changes on both systems. 

A great example given in the article is to start with a monolithic application and start to use microservices when it becomes more complex. This approach helps the system to be self-sufficient in some parts and not that complex to change in the future. Creating microservices also helps agile teams to create new software. By doing so, each person works in an independent part of the system which will be connected to the main system without having problems like editing a particular file at the same time and so on. It also helps to construct software faster because the owner of the microservice becomes an expert on it, if a problem appears, you know which person to ask.

It would be great to know big companies architectures to reinforce or not, the idea of using microservices in production systems like google search or youtube, etc.

References:

J. Lewis (2014). Microservices. Obtained on October 20, 2017 from https://martinfowler.com/articles/microservices.html

Comentarios

Entradas populares de este blog

Metaprogramming (Comment)

Understanding the SOLID Principles - Comment

Is Design Dead? - Comment