Microservicios en PHP

De Wiki Proyectos Beta
Revisión del 15:12 25 ago 2022 de Josego (discusión | contribs.) (→‎Desafíos nuevos)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Descripción

El término microservicios denota un estilo arquitectónico de construcción de aplicaciones que toma la forma de servicios poco acoplados. Estos servicios desplegables de forma independiente son pequeñas aplicaciones que a menudo se crean mediante una tecnología de servicio web.

Si bien un servicio puede comunicarse a través de SOAP, el otro puede hacerlo a través de REST, u otra cosa.

Cada microservicio es responsable de brindar solución a un área de negocio concreta, abstrayendo al resto del sistema de los detalles concretos de la implementación, favoreciendo su independencia, el mantenimiento y la evolución de cada uno de ellos.

Al gestionar cada micro servicio como un pequeño sistema, nos da la posibilidad de ser desplegados sin perjudicar a los demás, favoreciendo así la escalabilidad.

No hay un estándar para especificar los requisitos, pero la idea general es tomar una gran aplicación monolítica y dividirla en varias aplicaciones más pequeñas, es decir, en servicios más pequeños.

Ventajas

  • Tamaño del equipo de desarrollo: un microservicio único que puede desarrollar un equipo relativamente pequeño.
  • Diversidad de habilidades de desarrollo: diferentes servicios que se pueden escribir en diferentes lenguajes de programación.
  • Cambio/actualización: fragmentos de código más pequeños que son más fáciles de cambiar o actualizar.
  • Integración e implementación: estos fragmentos de código que son más pequeños, son más fáciles de implementar.
  • Más fácil para los recién llegados: estos fragmentos de código son más pequeños, son más fáciles de entender.
  • Escalabilidad: no todo se escala por igual; fragmentos de código más pequeños se pueden escalar más fácilmente.
  • Manejo de fallas: este único servicio defectuoso no desactiva una aplicación completa.
  • Stack de tecnología: cada microservicio puede tener su stack independiente a los demás.
  • La capacidad de testing de cada microservicio es mayor.
  • Facilita el mantenimiento a lo largo del tiempo.
  • Permite que los desarrollos sean independientes y puedan avanzar en paralelo.
  • Permite despliegues independientes.

Desafíos nuevos

  • Comunicación de servicio: este es un esfuerzo adicional en torno a la comunicación por cada servicio.
  • Transacciones distribuidas: estos son desafíos causados por requisitos que abarcan varios servicios.
  • Pruebas y monitoreo: son algo más desafiantes que con las aplicaciones monolitos.
  • Latencia de red: cada microservicio introduce un poco más de latencia de red.
  • Tolerancia a fallas: microservicios que deben diseñarse para tolerancia a fallos.
  • Aumentará la complejidad en la gestión de la configuración y despliegue por lo que cada microservicio va a requerir su propia configuración de build, testing, despliegue (Jenkins, CircleCI, Git, etc.).

General

  • Monitoreo
  • Seguridad
  • Best practices y convenciones