Microservicios

El término microservicio tiene un significado diferente para distintas personas. Para algunos, el microservicio corresponde a los “cuadros” dibujados en una pizarra cuando se habla sobre la arquitectura del sistema. Otras hacen referencia a una definición más formal en la que se describe un extremo de red direccionable con una funcionalidad determinada por su API externa que se puede desarrollar, implementar y operar de forma independiente de otros microservicios del sistema. Incluso otros basan sus conocimientos en el concepto de microservicios que proporciona su plataforma de desarrollo, como los servicios de App Engine o el servicio de Anthos Service Mesh.

Nuestro objetivo no es imponer una definición de microservicio. En su lugar, queremos ayudarte a supervisar tus sistemas a gran escala durante la transformación digital mediante el aprovisionamiento de herramientas de supervisión orientadas al servicio que te asistan a ti y a tu arquitectura. Queremos trabajar contigo a fin de adoptar prácticas recomendadas para los sistemas de supervisión sin cambiar una sola línea del código.

Para ello, Cloud Monitoring detecta de forma automática los microservicios cuando puede, proporciona una experiencia guiada a fin de definir microservicios basados en Google Kubernetes Engine y ofrece una solución completamente personalizada para obtener una máxima flexibilidad.

Microservicios detectados de forma automática

Algunos frameworks de desarrollo modernos ofrecen un concepto bien definido de microservicio. En las arquitecturas que usan un framework de este tipo, Cloud Monitoring puede detectar de forma automática el momento en que se implementan, actualizan o borran servicios. Esto se logra mediante un análisis constante de la transmisión de metadatos que produce un proyecto.

Cloud Monitoring puede detectar de manera automática los microservicios compilados mediante los siguientes frameworks de desarrollo:

  • App Engine: App Engine tiene una noción sólida de microservicio, llamada servicio de App Engine (antes denominada módulo). Cada servicio se distingue por su propio archivo de configuración app.yaml.

  • Anthos Service Mesh: Cloud Monitoring es compatible con mallas de servicios compiladas sobre un clúster de GKE único. En esta configuración, un servicio de Anthos Service Mesh corresponde directamente a un servicio de GKE. Todos los servicios de Anthos Service Mesh, administrados por el usuario y por el sistema, se detectan de forma automática.

  • Istio de código abierto en Google Kubernetes Engine: GKE proporciona compatibilidad con Istio de código abierto (OSS) mediante la característica “complemento” de GKE. Con el complemento de GKE, los usuarios se benefician de la instalación administrada y la actualización de los componentes de Istio. Al igual que con Anthos Service Mesh, un servicio de Istio de OSS corresponde a un servicio de GKE.

Paneles para microservicios de detección automática

El panel de servicio se crea de manera automática para todos los microservicios que se detectan de forma automática. El panel contiene los detalles de metadatos del servicio, el cronograma de alertas, el estado del SLO y los registros relacionados con el servicio. Cada uno de estos componentes se describe con más detalle en Usa paneles de microservicios.

Panel de servicio para microservicios de detección automática.

Microservicios basados en GKE

GKE, y Kubernetes en el que se basa, es un sistema de organización de contenedores altamente flexible para implementar, escalar y administrar aplicaciones en contenedores. Según la investigación de varios usuarios avanzados de Kubernetes, no existe una noción única de microservicio en la que la comunidad esté de acuerdo. Algunos usuarios basan sus microservicios en espacios de nombres de Kubernetes, otros usan una carga de trabajo, como un conjunto de réplicas, para que corresponda con un microservicio.

Ten en cuenta que los usuarios desarrollaron una variedad de patrones para usar Kubernetes, y un microservicio puede, pero no siempre, corresponder a un “servicio de Kubernetes”.

Cloud Monitoring no puede detectar de forma automática los microservicios basados en GKE debido a la variedad de formas en que los usuarios administran las aplicaciones en Kubernetes. En su lugar, ofrecemos un enfoque guiado para ayudar a los usuarios a identificar sus microservicios. Para comenzar, haz clic en el vínculo etiquetado Definir servicio.

Puedes definir un servicio de GKE desde el panel Descripción general de los servicios.

En la bandeja desplegable, se muestra una lista de todas las entidades de GKE en el clúster, desde los espacios de nombres hasta los pods. También se muestran las etiquetas de metadatos para distinguir entre entidades con nombres similares. Usa la barra de filtros para encontrar la entidad que corresponda con tu microservicio. Selecciona la entidad y proporciona un nombre, o usa el nombre predeterminado que se proporciona.

Para definir un servicio GKE, selecciona una entidad de la lista.

Ya identificaste un microservicio basado en GKE que puede usarse con las funciones de supervisión orientadas al servicio. En la consola, se muestran los detalles del servicio recién creado para indicar que la operación se realizó de forma correcta. También se proporcionan vínculos a algunos de los siguientes pasos posibles: obtener más información sobre las prácticas recomendadas para la supervisión orientada a servicios, crear tu primer SLO o visualizar el panel de servicio.

Después de crear un servicio, puedes configurar los SLO y visualizar un panel del servicio.

Paneles para microservicios basados en GKE

Un panel de servicio se crea de forma automática para cada microservicio basado en GKE que se define. Al igual que con los paneles para los servicios de detección automática, estos contienen los detalles de los metadatos, un cronograma de alertas, un resumen de SLO y los registros relacionados. Además, el panel contiene un conjunto de métricas para el servicio, en el que distintos grupos de métricas se pueden seleccionar a fin de ser mostradas. En la parte inferior del panel, se proporciona un resumen con los vínculos de los pods que componen el servicio. Cada uno de estos componentes se describe con más detalle en Usa paneles de microservicios.

Se crea un panel de servicio para el servicio de GKE recién creado.

Define un servicio basado en GKE (API)

Los microservicios basados en GKE también se pueden definir mediante la API de SLO, que forma parte de la API de Cloud Monitoring. Estos servicios se representan en la API como un tipo de servicio Custom con un valor Telemetry.resourceName que identifica una entidad de GKE.

Si deseas crear un servicio de manera programática, publica una configuración como la siguiente en el método services.create:

{
  "displayName": "hello-world-microservice",
  "custom": {},
  "telemetry": {
    "resourceName":
"//container.googleapis.com/projects/PROJECT_ID/zones/us-central1-a/clusters/cluster-2/k8s/namespaces/default/services/hello-server"
  }
}

De manera genérica, el formato del campo resourceName es "//container.googleapis.com/projects/PROJECT_ID/zones/ZONE/clusters/CLUSTER_NAME/k8s/namespaces/NAMESPACE_NAME/ENTITY_TYPE/ENTITY_NAME"

Para obtener más información sobre cómo administrar servicios de manera programática, consulta Usa la API.

Crea microservicios personalizados (API)

En la API de SLO, el tipo de servicio Custom también se puede usar para crear un contenedor de REST que actúe como el superior de un conjunto de SLO. Esto puede ser útil cuando se definen los SLO en un tipo de servicio que, por el momento, no es compatible o en métricas empresariales que no corresponden a un microservicio.

Si deseas crear un servicio de manera programática, publica una configuración como la siguiente en el método services.create:

{
  "displayName": "hello-world-service",
  "custom": {}
}

Para obtener más información sobre cómo administrar servicios de manera programática, consulta Usa la API.