
[04/05/2021] La arquitectura de microservicios traslada la complejidad del diseño de la aplicación interna a la arquitectura de servicios conectados a la red externa. Los proveedores de la nube ofrecen una variedad de enfoques para gestionar esta complejidad. Este artículo le brinda una descripción general de las opciones disponibles en Google Cloud Platform (GCP).
[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]
Descripción general de las herramientas de microservicios de GCP
Puede obtener una introducción general a los microservicios aquí. Hay una serie de enfoques para tratar con una arquitectura de este tipo de servicios más pequeños e interrelacionados. A continuación, se muestra una lista de opciones disponibles en GCP.
- Desarrolle su propio Kubernetes con Google Compute Engine
- Kubernetes administrado con Google Kubernetes Engine
- Arquitectura de contenedor sin servidor con Google Cloud Run
- Plataforma como servicio en Google App Engine
- Funciones sin servidor con Google Cloud Functions
Esta descripción general procede de una manera general desde el enfoque más práctico e impulsado por el desarrollador, hacia las opciones más prácticas y gestionadas por la plataforma. No son mutuamente excluyentes, y algunos equipos tenderán a utilizar un solo enfoque mientras que otros combinarán opciones. Las funciones de la nube en especial se utilizan a menudo junto con otros enfoques para manejar requerimientos más pequeños.
También tenga en cuenta que aquí nos ocupamos específicamente de la arquitectura de la aplicación, y no consideramos cosas como las soluciones de almacén de datos.
Desarrolle su propio Kubernetes con Google Compute Engine
Kubernetes es un sistema de código abierto multiplataforma (desarrollado originalmente en Google) para administrar clústeres de aplicaciones en contenedores.
El enfoque más práctico para crear aplicaciones de microservicios es definir sus máquinas virtuales y redes en Google Compute Engine, y luego instalar Kubernetes en esta infraestructura. Luego, estará a cargo de configurar y ejecutar el clúster de Kubernetes sobre esta infraestructura.
El proceso general consiste en crear una máquina virtual maestra y una o varias máquinas virtuales de trabajo, con Kubernetes instalado para controlar las aplicaciones en los contenedores implementados ahí. Aquí encontrará una descripción general para ejecutar en Google Compute Engine de los documentos de Kubernetes, y las guías para instalar Kubernetes con herramientas de implementación.
La definición manual de la infraestructura brinda el mayor grado de control al desarrollador. La otra cara de esa moneda es que requiere la mayor intervención. La configuración de la infraestructura, como el provisionamiento de las máquinas virtuales y la configuración de la red, se puede administrar a través de herramientas como Ansible y Terraform, y el escalado automático puede ser compatible con herramientas como GCP Cloud Monitor.
Administrar Kubernetes con GKE
Google Kubernetes Engine (GKE) es una abstracción de nivel superior construida sobre Kubernetes. Está diseñado para automatizar ciertos aspectos de la administración de los clústeres. Éstos incluyen:
- Balanceo de cargas automatizado
- Subconjuntos de grupos de nodos
- Escalado automático del recuento de instancias de su nodo
- Actualizaciones automáticas para el software de nodo de su clúster
- Reparación automática de nodos para mantener el estado y la disponibilidad del nodo
- Registro y monitoreo con Google Cloud Operations
En general, GKE se esfuerza por agrupar las necesidades comunes que enfrentan los desarrolladores cuando administran clústeres de Kubernetes, desde la configuración y el aprovisionamiento hasta la supervisión y el ajuste de escala automático, y ofrece medios simplificados para abordarlas. Además, GKE permite administrar muchas de estas opciones a través de su GUI web.
GKE incluye el registro tanto a nivel de contenedor como de host. GKE también soporta la integración con las herramientas CI/CD de GCP como Cloud Build. Puede publicar las imágenes de su contenedor en el Container Registry de Google.
Por supuesto, estas comodidades tienen un costo. Los clústeres de GKE se facturan a una tarifa superior a los servicios específicos en los que se ejecutan. Aquí encontrará una guía de precios y una calculadora. Y una descripción general de GKE aquí.
Arquitectura de contenedor sin servidor con Google Cloud Run
Google Cloud Run es una capa de abstracción sin servidor construida sobre Knative, que es un proyecto de código abierto para crear aplicaciones sin servidor sobre Kubernetes.
En general, Google Cloud Run es una abstracción de orden superior a GKE. Cloud Run abstrae del desarrollador casi todo el aprovisionamiento, la configuración y la administración del clúster de Kubernetes. Está diseñado para ejecutar aplicaciones de microservicios simples que requieren poca administración de infraestructura personalizada.
Google Cloud Run también incluye la capacidad de usar su función de administración con un clúster de GKE Anthos existente que esté utilizando, lo que abre un mayor grado de control del desarrollador.
Al elegir entre GKE y Google Cloud Run, Google recomienda que "comprenda sus requisitos de servicio funcionales y no funcionales, como la capacidad de escalar a cero o la capacidad de controlar la configuración detallada”. En cualquier caso, este es un buen consejo, pero específicamente aquí la pregunta es si Cloud Run le ofrece el control que necesita para la arquitectura de su aplicación. De lo contrario, debe usar GKE.
Al igual que las soluciones PaaS, Google Cloud Run requiere que emplee una arquitectura de aplicaciones sin estado.
Plataforma como servicio en Google App Engine
Como una abstracción de la infraestructura de aplicaciones, la plataforma como servicio (PaaS) se encuentra en algún lugar entre IaaS y sin servidor. Aunque verá que Google App Engine se denomina sin servidor, es fundamentalmente una PaaS.
Google App Engine también emplea Kubernetes, pero esto está en gran parte oculto para usted como desarrollador.
Al igual que con otras ofertas de PaaS como Cloud Foundry, las aplicaciones de Google App Engine deben ser sin estado. Esto se debe a que la propia PaaS es responsable de escalar hacia arriba y hacia abajo y enrutar las solicitudes. El desarrollador no tiene control sobre cómo se agregan o quitan los recursos de la aplicación. Es posible que no exista un nodo de aplicación que maneja una solicitud de cliente determinada para la siguiente solicitud.
Funciones sin servidor con Google Cloud Functions
Las funciones de Google Cloud se incluyen en la categoría FaaS (funciones como servicio). Este es el tipo de computación en la nube más abstracto. La unidad de implementación es la función y la infraestructura para entregar el procesamiento está muy administrada.
Las funciones de Google Cloud se activan mediante eventos y realizan acciones simples de alcance de función. Los activadores en el momento de escribir este artículo incluyen activadores HTTP, Cloud Storage y Pub/Sub. Los datos de los activadores se pasan a Cloud Functions como parámetros.
Por el momento, Google Cloud Functions soporta Go, Java, .NET, Node.js, Python y Ruby como lenguajes de tiempo de ejecución. Estos permiten el uso idiomático de tecnología relacionada. Como ejemplo, puede usar la API de Java Servlet para manejar los disparadores HTTP o puede adoptar enfoques más avanzados, como usar marcos estilo Spring Cloud Function o Node.js Express.
Google Cloud Functions representa un enfoque muy potente y simple para implementar funciones. Sin embargo, tienen una capacidad limitada para manejar casos de uso complejos y limitan la capacidad de los desarrolladores para controlar la infraestructura. Las funciones de la nube se utilizan a menudo para manejar partes más pequeñas de funcionalidad junto con los otros enfoques que se describen en este artículo.
Google sugiere Cloud Functions para estos tipos de casos de uso:
- Procesamiento de datos ligero y ETL: Ejecución de datos o activadores basados en archivos para manejar tareas como el procesamiento o la compresión de imágenes
- Webhooks: Responda a solicitudes basadas en HTTP de sistemas como GitHub o Stripe
- API ligeras: Gestiona solicitudes o eventos individuales que se pueden interrelacionar para componer aplicaciones más grandes
- Back end móvil: Actúa como intermediario entre servicios basados en la nube como Firebase y otros servicios
- IoT: Aproveche los activadores de Pub/Sub para manejar los eventos a escala de IoT
Muchas opciones de microservicios
El panorama de los servicios en la nube en GCP ofrece muchas opciones para arquitecturas de aplicaciones que soportan microservicios. Al comprender las ofertas y herramientas de microservicios disponibles, puede encontrar la arquitectura y el enfoque adecuados para cumplir con éxito sus requisitos.
Basado en el artículo de Matthew Tyson (InfoWorld) y editado por CIO Perú
Puede ver también: