¿Qué Software es apto para su empresa?

Acceda a nuestros evaluadores

Los microservicios, o arquitectura de microservicios, es un enfoque para el desarrollo de software en el que una aplicación grande se construye como un conjunto de componentes o servicios modulares.

Cada módulo admite una tarea específica o un objetivo de negocio y utiliza una interfaz simple y bien definida, como una interfaz de programación de aplicaciones (API), para comunicarse con otros conjuntos de servicios.

Cómo funcionan los microservicios

En la arquitectura de microservicios, una aplicación se divide en servicios. Cada uno ejecuta un proceso único y generalmente administra su propia base de datos. Un servicio puede generar alertas, registrar datos, admitir interfaces de usuario (UI), manejar la identificación o autenticación del usuario y realizar otras tareas.

El paradigma de microservicio proporciona a los equipos de desarrollo un enfoque más descentralizado para construir software. Los microservicios permiten que cada servicio sea aislado, reconstruido, re desplegado y administrado de forma independiente. Por ejemplo, si un programa no genera informes correctamente, puede ser más fácil rastrear el problema a ese servicio específico. Ese servicio específico podría luego probarse, reiniciarse, parchearse y volver a implementarse según sea necesario, independientemente de otros servicios.

Microservicios vs. arquitectura monolítica

En una arquitectura monolítica, todo el código está en un archivo ejecutable principal, que puede ser más difícil de solucionar, probar y actualizar. Si hay un problema en una base de código, ese problema podría ubicarse en cualquier lugar dentro del software. Habría más pruebas, y éstas tardarían más debido a la cantidad de código monolítico involucrado. En una aplicación monolítica, cualquier pequeño cambio o actualización requiere compilar e implementar una versión completamente nueva de la aplicación. Esto significa que cualquier desarrollo de aplicaciones monolíticas implica una planificación, preparación, tiempo y gasto significativos.

Además, las aplicaciones monolíticas son más difíciles de escalar. Cuando una aplicación monolítica alcanza una limitación de su capacidad, como el rendimiento de datos o algún otro cuello de botella, la única alternativa práctica es implementar otra iteración completa de toda la aplicación monolítica: administrar el tráfico entre las instancias utilizando balanceadores de carga.

En comparación, es posible escalar solo los servicios de una aplicación de microservicio agregando instancias de contenedor de solo esos servicios. Esto hace que el microservicio de escala sea mucho más eficiente en recursos que las aplicaciones de escala utilizando una arquitectura monolítica.

Los microservicios facilitan la prueba y el despliegue de cambios. Debido a que cada uno está separado de los otros, se mejora el aislamiento de fallas. Si hay un problema en el software, el servicio problemático puede ser aislado, remediado, probado y redistribuido sin la necesidad de realizar una prueba de regresión de toda la aplicación como ocurre con las arquitecturas de aplicaciones monolíticas tradicionales. La arquitectura de microservicios mejora la agilidad empresarial con un desarrollo e implementación de software más rápido en comparación con la arquitectura de software monolítica.

Sin embargo, los microservicios no son libres de gestión. Con la misma cantidad de servicios que un producto de software monolítico, la administración requerida en una arquitectura de microservicios podría ser más compleja ya que cada servicio está separado uno del otro. Esto puede llevar a dificultades para manejar todas las partes de un todo. Por ejemplo, se necesita una cuidadosa supervisión y administración para rastrear la disponibilidad y el rendimiento de todos los servicios de componentes que operan dentro de una aplicación de microservicio.

Imagen 1

Microservicio pros y contras

La arquitectura de microservicios plantea una serie de concesiones para los desarrolladores de software. En términos de ventajas, se observan:

  • Se despliegan fácilmente.
  • Requieren menos tiempo de desarrollo.
  • Puede escalar rápidamente
  • Se puede reutilizar en diferentes proyectos.
  • Contienen mejor aislamiento de fallas.
  • Puede ser desplegado en equipos relativamente pequeños.
  • Trabaja bien con los contenedores.

Sin embargo, también hay inconvenientes con la arquitectura de microservicios, tales como:

  • Potencialmente demasiada granularidad.
  • Esfuerzo extra de diseño para la comunicación entre servicios.
  • Latencia durante el uso pesado.
  • Pruebas complejas.

Microservicios y DevOps

DevOps combina tareas entre la aplicación y los equipos de operaciones del sistema. Con el aumento de las comunicaciones entre los desarrolladores y el personal de operaciones, un equipo de TI puede crear y administrar mejor la infraestructura. Las operaciones de TI aseguran el presupuesto para capacidades, tareas operativas, actualizaciones y más. Los desarrolladores y los equipos de aplicaciones pueden administrar bases de datos, servidores, software y hardware utilizados en la producción.

El trabajo en equipo y la colaboración entre los equipos de desarrollo y operaciones son necesarios para soportar el ciclo de vida de los microservicios, prestándose a los equipos de DevOps. También es la razón por la que los equipos de DevOps experimentados están bien equipados para emplear arquitectura de microservicios en proyectos de desarrollo de software.

Arquitectura de microservicios vs. SOA

SOA es una arquitectura de software donde cada uno de sus servicios utiliza protocolos. Esto permite a los usuarios combinar funcionalidades y dar vida a aplicaciones creadas a partir de servicios anteriores. SOA ha sido la práctica de desarrollo estándar durante casi dos décadas. Sin embargo, el ingenio de SOA se pone en tela de juicio cuando se trabaja con la computación en la nube. Con la nube, SOA carece de escalabilidad y se ralentiza con los cambios de solicitud de trabajo, lo que limita el desarrollo de la aplicación.

Muchos desarrolladores consideran que la arquitectura de microservicios es un enfoque más granular de SOA. Los defensores del modelo SOA creen que la arquitectura de microservicios es la evolución natural de SOA necesaria para adaptarse a la computación en la nube y satisfacer las crecientes demandas de ciclos de desarrollo de software más rápidos.

Otros creen que los microservicios son un enfoque más independiente de la plataforma para el desarrollo de aplicaciones y, por lo tanto, deben tener un nombre único. Este grupo podría argumentar que SOA vive en las capas de administración de microservicio.

Microservicios y contenedores

Un contenedor es un paquete de software individual y ejecutable, que incluye todas las dependencias que se necesitan para funcionar de manera independiente. Los contenedores están separados del resto del software que los rodea, y muchos contenedores pueden emplearse en el mismo entorno. En una arquitectura de microservicios, cada servicio se crea en contenedores individualmente en el mismo entorno, como el mismo servidor o los servidores relacionados.

Una máquina virtual (VM) se puede utilizar como alternativa a los contenedores para crear microservicios. Una máquina virtual simula los sistemas informáticos para producir funcionalidades de una computadora física. Cada servicio podría potencialmente utilizar una máquina virtual para alojar una característica prevista. Sin embargo, las máquinas virtuales a menudo se evitan para los microservicios debido al sistema operativo individual (SO) y otros gastos generales necesarios para cada máquina virtual. Los contenedores son mucho más eficientes en el uso de recursos porque solo se requieren el código subyacente y las dependencias relacionadas para operar el servicio.

Seguridad de la arquitectura de microservicios

La arquitectura de microservicios puede aliviar algunos problemas de seguridad que surgen con las aplicaciones monolíticas. Los microservicios simplifican el monitoreo de seguridad porque las diversas partes de una aplicación están aisladas. Una brecha de seguridad podría ocurrir en una sección sin afectar otras áreas del proyecto. Los microservicios ofrecen resistencia contra los ataques distribuidos de denegación de servicio (DDoS) cuando se usan con contenedores al minimizar una toma de control de la infraestructura con demasiadas solicitudes de servidor.

Sin embargo, todavía existen desafíos al proteger aplicaciones de microservicios, que incluyen:

  • Más áreas de red están abiertas a vulnerabilidades.
  • Una menor coherencia general entre las actualizaciones de la aplicación permite más violaciones de seguridad.
  • Hay una mayor área de ataque, a través de múltiples puertos y APIs.
  • Hay una falta de control de software de terceros.
  • La seguridad debe mantenerse para cada servicio.

Los desarrolladores de microservicios han ideado estrategias para aliviar los problemas de seguridad. Para ser proactivo, use un escáner de seguridad, utilice limitaciones de control de acceso, redes internas seguras, incluidos los entornos Docker, y opere fuera de los silos, comunicándose con todas las partes de la operación.

Despliegue de aplicaciones de microservicio

Se han producido tres avances principales para hacer viable la arquitectura de microservicios.

El primer avance, los contenedores, permite un medio consistente y eficiente de recursos para empaquetar servicios individuales. Docker es una herramienta popular para desarrolladores, que permite el uso de contenedores en las instalaciones o en la nube pública o privada. Esto ofrece una amplia variedad de alternativas de implementación para desarrolladores de microservicios y empresas.

El segundo desarrollo importante es la aparición de herramientas de orquestación, como Kubernetes. Estas herramientas ayudan a automatizar el escalado, la implementación y la administración de contenedores.

Un tercer avance importante para los microservicios es la evolución de la malla. Una malla de servicios es una capa de infraestructura dedicada a la comunicación entre servicios individuales. Las mallas de servicio hacen que estas comunicaciones sean más rápidas, más seguras, visibles y confiables.

Cuando cientos de servicios se comunican entre sí, se vuelve complicado saber cuáles interactúan entre sí. Linkerd es una herramienta de orquestación que logra comunicaciones seguras, rápidas y visibles entre los servicios mediante la captura de comportamientos, como el equilibrio de carga compatible con la latencia o el descubrimiento del servicio.

Los niveles de complejidad en los microservicios están disminuyendo constantemente debido a estos avances, como las complejidades de la supervisión y el registro, a medida que más organizaciones y equipos de desarrollo adoptan los microservicios.

Fuente: Techtaget.com

Traducido y adaptado por la División consultoría de EvaluandoSoftware.com

 

¿Qué Software es apto para su empresa?

Acceda a nuestros evaluadores