¿Que son los Microservicios.?

¿Que son los Microservicios.?
Los microservicios son un estilo arquitectónico de software que estructura una aplicación como una colección de servicios pequeños y autónomos, cada uno de los cuales resuelve una función de negocio específica y puede ser desplegado de manera independiente.
Estos son algunos de sus principales características:
- Desacoplados: cada microservicio puede funcionar o incluso fallar de manera independiente de los demás, lo que permite la separación de áreas de una aplicación o sistema y ayuda a contener las fallas de software.
- Organizados alrededor de capacidades comerciales: los microservicios se diseñan en función de las capacidades comerciales y se centran en el desarrollo de un componente de software específico para realizar esa función.
- Independencia del lenguaje de programación: cada microservicio puede estar escrito en diferentes lenguajes de programación. Esto es de gran ventaja, ya que permite elegir el lenguaje apropiado para realizar un tipo de tarea específica.
- Desarrollo y despliegue independientes: cada servicio puede desarrollarse y desplegarse de manera independiente.
- Orientados a datos: cada microservicio puede tener su propia base de datos y su modelo de datos, que puede ser diferente de los modelos utilizados por otros servicios.
- Comunicación API: Los microservicios suelen comunicarse entre sí mediante definiciones de interfaz de programación de aplicaciones (APIs) bien definidas y protocolos de comunicación estandarizados, que suelen ser HTTP/REST o, en algunos casos, AMQP, MQTT, etc.
- Orientación de servicios para facilitar el reemplazo: Uno de los objetivos de la arquitectura de microservicios es el de ofrecer, no solo la posibilidad de fallar sin afectar al conjunto, sino facilitar el rápido reemplazo o mejora de un microservicio sin afectar a los demás.
El uso de microservicios puede traer múltiples ventajas, como acelerar el tiempo de comercialización a través de la entrega continua y el despliegue, mejorar la escalabilidad y permitir a las organizaciones adoptar nuevas tecnologías más rápidamente. Pero también presenta desafíos, especialmente en términos de administración y coordinación de servicios, y puede no ser la solución adecuada para cada aplicación.
