¿Qué es AWS App Mesh? - AWS App Mesh

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

¿Qué es AWS App Mesh?

AWS App Mesh es una malla de servicios que facilita la monitorización y el control de los servicios. Una malla de servicios es una capa de infraestructura dedicada a gestionar la comunicación entre servicios, normalmente a través de una serie de proxies de red ligeros implementados junto con el código de la aplicación. App Mesh estandariza cómo se comunican sus servicios, ofrece visibilidad integral y lo ayuda a garantizar la alta disponibilidad de las aplicaciones. App Mesh ofrece visibilidad y controles de tráfico de red coherentes para cada microservicio en una aplicación.

Adición de App Mesh a una aplicación de ejemplo

Considere la siguiente aplicación de ejemplo simple que no usa App Mesh. Los dos servicios pueden ejecutarse en AWS Fargate, Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), Kubernetes en instancias de Amazon Elastic Compute Cloud (Amazon EC2) o en instancias de Amazon EC2 con Docker.

Diagram showing client service connecting to servicea.apps.local and serviceb.apps.local. (AI generated)

En esta ilustración, tanto serviceA y serviceB se pueden detectar a través del espacio de nombres apps.local. Supongamos, por ejemplo, que decide implementar una nueva versión de serviceb.apps.local denominada servicebv2.apps.local. A continuación, quiere dirigir un porcentaje del tráfico de servicea.apps.local a serviceb.apps.local y un porcentaje a servicebv2.apps.local. Cuando esté seguro de servicebv2 que funciona bien, querrá enviarle el cien por cien del tráfico.

App Mesh puede ayudarlo a hacerlo sin cambiar el código de la aplicación ni los nombres de servicio registrados. Si utiliza App Mesh con esta aplicación de ejemplo, la malla podría tener el aspecto que se muestra en la siguiente ilustración.

Diagram showing client service connecting to virtual services through proxies and virtual nodes/routers in an App Mesh. (AI generated)

En esta configuración, los servicios ya no se comunican entre sí directamente. En cambio, se comunican entre sí a través de un proxy. El proxy implementado con el servicio servicea.apps.local lee la configuración de App Mesh y envía el tráfico a serviceb.apps.local o servicebv2.apps.local en función de la configuración.

Componentes de App Mesh

App Mesh consta de los siguientes componentes, como se mostró en el ejemplo anterior:

  • Malla de servicios: es un límite lógico para el tráfico de red entre los servicios que residen dentro de ella. En el ejemplo, la malla se denomina apps y contiene todos los demás recursos de la malla. Para obtener más información, consulte Mallas de servicios.

  • Servicios virtuales: un servicio virtual es una abstracción de un servicio real que se proporciona mediante un nodo virtual directa o indirectamente a través de un enrutador virtual. En la ilustración, dos servicios virtuales representan los dos servicios reales. Los nombres de los servicios virtuales son los nombres detectables de los servicios reales. Cuando un servicio virtual y un servicio real tienen el mismo nombre, varios servicios pueden comunicar entre sí con los mismos nombres que utilizaban antes de implementar App Mesh. Para obtener más información, consulte Servicios virtuales.

  • Nodos virtuales: un nodo virtual actúa como un puntero lógico a un servicio detectable, por ejemplo, un servicio de Amazon ECS o de Kubernetes. Para cada servicio virtual, tendrá al menos un nodo virtual. En la ilustración, el servicio virtual servicea.apps.local obtiene la información de configuración del nodo virtual denominado serviceA. El nodo virtual serviceA está configurado con el nombre servicea.apps.local para la detección de servicios. El servicio virtual serviceb.apps.local está configurado para enrutar el tráfico a los nodos virtuales serviceB y serviceBv2 a través de un enrutador virtual denominado serviceB. Para obtener más información, consulte Nodos virtuales.

  • Enrutadores virtuales y rutas: los enrutadores virtuales gestionan el tráfico de uno o más servicios virtuales dentro de la malla. Una ruta está asociada a un enrutador virtual. La ruta se usa para hacer coincidir las solicitudes del enrutador virtual y distribuir el tráfico a sus nodos virtuales asociados. En la ilustración anterior, el enrutador virtual serviceB tiene una ruta que dirige un porcentaje del tráfico al nodo virtual serviceB y un porcentaje del tráfico al nodo virtual serviceBv2. Puede establecer el porcentaje de tráfico enrutado a un nodo virtual concreto y cambiarlo con el tiempo. Puede enrutar el tráfico en función de criterios como los encabezados HTTP, las rutas URL o los nombres de los métodos y servicios gRPC. Puede configurar políticas de reintentos para reintentar una conexión si se produce un error en la respuesta. Por ejemplo, en la ilustración, la política de reintentos de la ruta puede especificar que una conexión a serviceb.apps.local se reintente cinco veces, con diez segundos entre reintentos, si serviceb.apps.local devuelve tipos de errores específicos. Para obtener más información, consulte Enrutadores virtuales y Rutas.

  • Proxy: los servicios se configuran para que usen el proxy después de crear la malla y sus recursos. El proxy lee la configuración de App Mesh y dirige el tráfico de forma adecuada. En la ilustración, todas las comunicaciones de servicea.apps.local a serviceb.apps.local pasan por el proxy implementado con cada servicio. Los servicios se comunican entre sí mediante los mismos nombres de detección de servicios que utilizaban antes de introducir App Mesh. Como el proxy lee la configuración de App Mesh, puede controlar cómo se comunican los dos servicios entre sí. Si desea cambiar la configuración de App Mesh, no necesita cambiar ni volver a implementar los propios servicios ni los proxies. Para obtener más información, consulte Imagen de Envoy.

Cómo empezar

Para usar App Mesh, debe tener un servicio existente en ejecución en AWS Fargate, Amazon ECS, Amazon EKS, Kubernetes en Amazon EC2 o Amazon EC2 con Docker.

Para empezar a usar App Mesh, consulte las siguientes guías:

Acceso a App Mesh

Puede trabajar con App Mesh de las siguientes formas:

AWS Management Console

La consola es una interfaz basada en navegador que puede utilizar para administrar sus recursos de App Mesh. Puede abrir la consola de App Mesh en https://console.aws.amazon.com/appmesh/.

AWS CLI

Ofrece comandos para un amplio conjunto de productos de AWS y es compatible con Windows, Mac y Linux. Para empezar, consulte la Guía del usuario de AWS Command Line Interface. Para obtener más información acerca de los comandos de App Mesh, consulte appmesh en la Referencia de los comandos de la AWS CLI.

AWS Tools for Windows PowerShell

Ofrece comandos para un amplio conjunto de productos de AWS para los usuarios que utilizan scripts en el entorno de PowerShell. Para empezar, consulte la Guía del usuario de AWS Tools for Windows PowerShell. Para obtener más información acerca de los cmdlets de App Mesh, consulte App Mesh en la Referencia de cmdlets de AWS Tools for PowerShell.

AWS CloudFormation

Permite crear una plantilla que describe todos los recursos de AWS que desea utilizar. Con la plantilla, AWS CloudFormation aprovisiona y configura los recursos por usted. Para empezar, consulte la Guía del usuario de AWS CloudFormation. Para obtener más información sobre los tipos de recursos de App Mesh, consulte la Referencia de tipos de recursos de App Mesh en la Referencia de plantillas de AWS CloudFormation.

SDK de AWS

También proporcionamos SDK que le permiten tener acceso a App Mesh mediante una serie de lenguajes de programación. Los SDK se encargan automáticamente de tareas como las siguientes:

  • Firmar criptográficamente sus solicitudes de servicio

  • Reintentar solicitudes

  • Tratar las respuestas a errores

Para obtener más información sobre los SDK disponibles, consulte Herramientas para Amazon Web Services.

Para obtener más información sobre las API de App Mesh, consulte la Referencia de la API de AWS App Mesh.