Ouracademy

Microservicios: que son, cuando usarlos y como construirlos

Una traducción de Microservices Guide de Martin Fowler

"Una guia o serie de recursos para aprender de microservicios (microservices)"

En pocas palabras, microservicios es un estilo de arquitectura, un enfoque para desarrollar una aplicación como un conjunto de servicios pequeños, cada uno ejecutandose en su propio proceso (quizá en el misma computadora o en otra aparte) y comunicandose a través de mecanismos livianos, muy a menudo a tráves de una API de recursos HTTP (ver REST). Estos servicios se construyen en base a las capacidades del negocio y son independientemente desplegables por un sistema completamente automatizado (ver Continous Delivery). Estos servicios poseen una gestión centralizada pero minima (ver Centralized Services: Circuit Breaker, Aggregated Log, Service Mesh...), donde los servicios pueden estar escritos en diferentes lenguajes de programación y usando diferentes tecnologías para almacenar datos (ver SQL y NoSQL).

-- James Lewis and Martin Fowler (2014)

Deberíamos usarlo o no? ... Pero primero, en sí, que rayos significa?

Charla sobre microservicios

Si eres de los que aprende escuchando y viendo videos, te recomiendo ver la charla de introducción a los microservicios por Martin Fowler, que dura aprox. 25 min, donde explica sus caracteristicas principales, las compara con monolitos y indica las cosas principales que deberías primero hacer antes de lanzar microservicios en producción.

Que son los microservicios?

A finales del 2013, existia toda una discusión de lo que era microservicios, no existia una clara definición de lo que eran (un problema que causo muchos muchos problemas en SOA). Así que Martin Fowler y James Lewis, decidieron escribir:

Microservicios: Articulo

El articulo provee una definición clara de lo que es este estilo de arquitectura: microservicios, a través de listar las caracteristicas más comunes que vimos:

  • Componentizacion via Servicios
  • Organidos en base a las capacidades del negocio (Business Capabilities)
  • Productos no Proyectos
  • Endpoints inteligentes y pipes tontos (dumb pipes)
  • Governanza descentralizada
  • Gestión de datos decentralizada
  • Automatización de infrastructura
  • Diseño enfocado a fallas
  • Diseño evolutivo (Evolutionary Design)

Además de contestar las preguntas comunes como "que tan grande o pequeño debe ser un microservicio?" y "cual es la diferencia entre microservicios y Arquitectura Orientada a Servicios (SOA)"

Cuando usar microservicios?

Todo estilo de arquitectura tiene sus trade-offs: sus ventajas y desventajas que debemos evaluar cuando queremos usarla en un determinado proyecto. Esto sucede claramente al usar microservicios. Aunque puede ser muy útil usar microservicios - en muchos casos es mejor ir por un monolito.

Los microservices proveen beneficios...

  • Strong Module Boundaries: Microservices reinforce modular structure, which is particularly important for larger teams.
  • Independent Deployment: Simple services are easier to deploy, and since they are autonomous, are less likely to cause system failures when they go wrong.
  • Technology Diversity: With microservices you can mix multiple languages, development frameworks and data-storage technologies.

...pero tienen costos

  • Distribution: Distributed systems are harder to program, since remote calls are slow and are always at risk of failure.
  • Eventual Consistency: Maintaining strong consistency is extremely difficult for a distributed system, which means everyone has to manage eventual consistency.
  • Operational Complexity: You need a mature operations team to manage lots of services, which are being redeployed regularly.

Mira más en:

Como construir microservicios?

Construir microservicios no es una tarea nada fácil, pero organizaciones la han adoptado y han aprendido de muchos errores, existen ahora muchos libros, articulos, sitios web por donde empezar a construir microservicios.

Prerequisitos de microservicios y temas relacionados:

Libros:

Cambios y revisiones:

17/02/2020: update link to translation of microprerequisites

09/02/2020: initial microservices guide

Si te fue útil este artículo, por favor compártelo. Apreciamos los comentarios y el aliento.
Compartelo por:

Quiza te pueda interesar...

Prerrequisitos de microservicios

Que debes conocer y aplicar antes de usar microservicios, microservices, o sino tendras graves problemas

UML y sus modos de uso

¿UML no sirve? UML está muerto? o aún es muy útil? Un articulo que contesta el porque de las distintas opiniones sobre UML.

Que es un closure?

que es un closure? con ejemplos en javascript y ruby