Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta guía se describe lo que debe tener en cuenta cuando quiera migrar una aplicación de Spring Cloud existente para que se ejecute en Azure Container Apps.
Antes de la migración
Para asegurarse de que la migración se realiza correctamente, antes de empezar, complete los pasos de evaluación e inventario descritos en las secciones siguientes.
Si no puede cumplir alguno de los requisitos previos a la migración, consulte las siguientes guías de migración complementarias:
- Migración de aplicaciones JAR ejecutables a contenedores en Azure Kubernetes Service (guía planeada)
- Migración de aplicaciones JAR ejecutables a Azure Virtual Machines (guía planeada)
Inspección de los componentes de la aplicación
Determinación de si se usa el sistema de archivos y cómo
Busque cualquier instancia en la que los servicios lean o escriban en el sistema de archivos local. Identifique dónde se escriben y se leen los archivos temporales o a corto plazo, y dónde se escriben y se leen los archivos de larga duración.
Azure Container Apps ofrece varios tipos de almacenamiento. El almacenamiento efímero puede leer y escribir datos temporales y estar disponible para un contenedor o réplica en ejecución. Azure File proporciona almacenamiento permanente y se puede compartir entre varios contenedores. Para obtener más información, consulte Cómo utilizar los montajes de almacenamiento en Azure Container Apps.
Contenido estático de solo lectura
Si su aplicación actualmente trabaja con contenido estático, necesitará una ubicación alternativa para él. Es posible que desee considerar mover contenido estático a Azure Blob Storage y agregar Azure CDN para descargas ultrarrápidas a nivel global. Para obtener más información, vea Static website hosting in Azure Storage and Quickstart: Integrate an Azure storage account with Azure CDN.
Contenido estático publicado dinámicamente
Si la aplicación admite contenido estático, ya sea cargado o generado por la propia aplicación, que permanece sin cambios después de su creación, puede integrar Azure Blob Storage y Azure CDN. También puede usar una función de Azure para administrar cargas y desencadenar actualizaciones de red CDN cuando sea necesario. Hemos proporcionado una implementación de ejemplo para su uso en Uploading y la precarga de contenido estático de CDN con Azure Functions.
Determinación de si alguno de los servicios contiene código específico del sistema operativo
Si la aplicación contiene código con dependencias en el sistema operativo del host, deberá refactorizarla para quitar esas dependencias. Por ejemplo, puede que tenga que reemplazar cualquier uso de / o \ en las rutas de acceso del sistema de archivos con File.Separator o Paths.get si la aplicación se ejecuta en Windows.
Cambio a una plataforma compatible
Si crea el Dockerfile manualmente e implementa una aplicación contenedorizada en Azure Container Apps, tendrá control total sobre la implementación, incluidas las versiones jrE/JDK.
Para la implementación desde artefactos, Azure Container Apps también ofrece versiones específicas de Java (8, 11, 17 y 21) y versiones específicas de los componentes de Spring Boot y Spring Cloud. Para garantizar la compatibilidad, migre primero la aplicación a una de las versiones admitidas de Java en su entorno actual y, a continuación, continúe con los pasos de migración restantes. Asegúrese de probar por completo la configuración resultante. Use la versión estable más reciente de la distribución de Linux en dichas pruebas.
Nota:
Esta validación es especialmente importante si el servidor actual se está ejecutando en un JDK no compatible (como Oracle JDK o IBM OpenJ9).
Para obtener la versión actual de Java, inicie sesión en el servidor de producción y ejecute el siguiente comando:
java -version
Para obtener versiones compatibles de Java, Spring Boot y Spring Cloud, así como instrucciones para actualizarlas, consulte Java en Azure Container Apps información general.
Identificación de las versiones de Spring Boot
Examine las dependencias de cada aplicación que se va a migrar para determinar su versión de Spring Boot.
Maven
En los proyectos de Maven, la versión de Spring Boot se encuentra normalmente en el elemento del archivo POM:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Gradle
En los proyectos de Gradle, la versión de Spring Boot se encontrará normalmente en la sección , como la versión del complemento :
plugins {
id 'org.springframework.boot' version '3.3.3'
id 'io.spring.dependency-management' version '1.1.6'
id 'java'
}
Para cualquier aplicación que use versiones de Spring Boot anteriores a la 3.x, consulte la guía de migración de Spring Boot 2.0 o la Guía de migración de Spring Boot 3.0 para actualizarlas a una versión de Spring Boot compatible. En el caso de las versiones admitidas, consulte la documentación de Spring Cloud.
Identificación de las versiones de Spring Cloud
Examine las dependencias de cada aplicación que va a migrar para determinar la versión de los componentes de Spring Cloud que usa.
Maven
En los proyectos de Maven, la versión de Spring Cloud normalmente se establece en la propiedad :
<properties>
<spring-cloud.version>2023.0.2</spring-cloud.version>
</properties>
Gradle
En los proyectos de Gradle, la versión de Spring Cloud normalmente se establece en el bloque "extra properties" (propiedades adicionales):
ext {
set('springCloudVersion', "2023.0.2")
}
Tendrá que actualizar todas las aplicaciones para que usen las versiones compatibles de Spring Cloud. En el caso de las versiones admitidas, consulte la documentación de Spring Cloud.
Identificación de soluciones de agregación de registros
Identifique todas las soluciones de agregación de registros que estén usando las aplicaciones que va a migrar. Debe configurar los ajustes de diagnóstico en la migración para que los eventos registrados estén disponibles para su consumo. Para obtener más información, consulte la sección Asegurar el registro de la consola y configurar las opciones de diagnóstico.
Identificación de los agentes de administración del rendimiento de la aplicación (APM)
Identifique los agentes de gestión del rendimiento que utilizan sus aplicaciones. Azure Containers Apps no ofrece compatibilidad integrada con la integración de APM. Debe preparar la imagen de contenedor o integrar la herramienta de APM directamente en el código. Si quiere medir el rendimiento de la aplicación, pero aún no ha integrado ningún APM, considere la posibilidad de usar Azure Application Insights. Para obtener más información, consulte la sección Migración.
Recursos externos de inventario
Identifique los recursos externos, tales como los orígenes de datos, los agentes de mensajes JMS y las direcciones URL de otros servicios. En las aplicaciones de Spring Cloud, la configuración de estos recursos normalmente se encuentra en una de las siguientes ubicaciones:
- En la carpeta src/main/resources, en un archivo llamado normalmente application.properties o application.yml.
- En el repositorio de Spring Cloud Config Server que identificaste en el paso anterior.
Bases de datos
En el caso de una aplicación de Spring Boot, las cadenas de conexión suelen aparecer en archivos de configuración cuando depende de una base de datos externa. A continuación se muestra un ejemplo de un archivo application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
A continuación se muestra un ejemplo de un archivo application.yaml:
spring:
data:
mongodb:
uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017
Consulte la documentación de Spring Data para ver posibles escenarios de configuración:
- Repositorios de JPA
- Repositorios de JDBC
- Repositorios de Cassandra
- Repositorios de MongoDB
Intermediarios de mensajes JMS
Identifique el broker o los brokers en uso buscando las dependencias pertinentes en el manifiesto de compilación (normalmente, un archivo pom.xml o build.gradle).
Por ejemplo, una aplicación de Spring Boot con ActiveMQ normalmente contendría esta dependencia en su archivo pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
Las aplicaciones Spring Boot que utilizan brokers comerciales suelen contener dependencias directas de las bibliotecas de controladores JMS de los brokers. A continuación se muestra un ejemplo de un archivo build.gradle:
dependencies {
...
compile("com.ibm.mq:com.ibm.mq.allclient:9.4.0.5")
...
}
Una vez identificado el broker o los brokers en uso, busque la configuración correspondiente. En las aplicaciones de Spring Cloud, normalmente se encuentran en los archivos application.properties y application.yml, en el directorio de la aplicación o en el repositorio de Spring Cloud Config Server.
Nota:
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este procedimiento, como para bases de datos, memorias caché, mensajería o servicios de inteligencia artificial, requiere un grado de confianza muy alto en la aplicación y conlleva riesgos que no están presentes en otros flujos. Use este flujo solo cuando las opciones más seguras, como las identidades administradas para conexiones sin contraseña o sin claves, no sean viables. En el caso de las operaciones de máquina local, prefiera identidades de usuario para conexiones sin contraseña o sin claves.
A continuación, se muestra un ejemplo de ActiveMQ de un archivo application.properties:
spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=<password>
Para más información sobre la configuración de ActiveMQ, consulte la documentación de Spring Boot sobre mensajería.
A continuación, se muestra un ejemplo de IBM MQ de un archivo application.yaml:
ibm:
mq:
queueManager: qm1
channel: dev.ORDERS
connName: localhost(14)
user: admin
password: <password>
Para más información sobre la configuración de IBM MQ, consulte la documentación IBM MQ Spring sobre componentes.
Identificación de cachés externas
Identifique cualquier caché externa en uso. Con frecuencia, Redis se usa a través de Spring Data Redis. Para más información de configuración, consulte la documentación de Spring Data Redis.
Determine si los datos de sesión se almacenan en caché a través de Spring Session buscando la configuración respectiva (en Java o XML).
Proveedores de identidades
Identifique todos los proveedores de identidades y todas las aplicaciones de Spring Cloud que requieran autenticación o autorización. Para obtener información sobre cómo puede configurar los proveedores de identidad, consulte los siguientes recursos:
- Para la configuración de OAuth2, consulte la guía de inicio rápido de Spring Cloud Security.
- Para más información sobre la configuración de Auth0 en Spring Security, consulte la documentación de Auth0 en Spring Security.
- Para más información sobre la configuración de PingFederate en Spring Security, consulte las instrucciones sobre cómo usar Auth0 con PingFederate.
Recursos configurados mediante Tanzu Application Service de VMware (antes llamado Pivotal Cloud Foundry)
En el caso de las aplicaciones administradas con TAS, los recursos externos, incluidos los recursos descritos anteriormente, a menudo se configuran mediante enlaces de servicio TAS. Para ver la configuración de estos recursos, use la CLI de TAS (Cloud Foundry) para ver la variable de la aplicación.
# Log into TAS, if needed (enter credentials when prompted)
cf login -a <API endpoint>
# Set the organization and space containing the application, if not already selected during login.
cf target org <organization name>
cf target space <space name>
# Display variables for the application
cf env <Application Name>
Examine la variable para obtener los valores de configuración de los servicios externos enlazados a la aplicación. Para obtener más información, consulte Documentación de TAS (Cloud Foundry).
Todos los demás recursos externos
No es factible documentar todas las dependencias externas posibles en esta guía. Es su responsabilidad verificar que pueda satisfacer todas las dependencias externas de su aplicación después de la migración.
Orígenes y secretos de configuración de inventario
Contraseñas y cadenas seguras de inventario
Compruebe si hay cadenas secretas y contraseñas en todas las propiedades, los archivos de configuración y las variables de entorno de las implementaciones de producción. En una aplicación de Spring Cloud, normalmente encontrará estas cadenas en el archivo application.properties o application.yml en servicios concretos o en el repositorio de Spring Cloud Config Server.
Certificados de inventario
Documente todos los certificados utilizados para los puntos de conexión SSL públicos o la comunicación con las bases de datos de backend y otros sistemas. Para ver todos los certificados de los servidores de producción, ejecute el siguiente comando:
keytool -list -v -keystore <path to keystore>
Determinación de si se usa Spring Cloud Vault
Si usa Spring Cloud Vault para almacenar y acceder a secretos, identifique el almacén de secretos de respaldo( por ejemplo, HashiCorp Vault o CredHub). Después, identifique todos los secretos utilizados por el código de la aplicación.
Localización del origen del servidor de configuración
Si la aplicación usa un Spring Cloud Config Server, identifique dónde se almacena la configuración. Por lo general, encontrará esta opción en el archivo bootstrap.yml o bootstrap.properties o, en ocasiones, en el archivo application.yml o application.properties. El ajuste se parece al del ejemplo siguiente:
spring.cloud.config.server.git.uri: file://${user.home}/spring-cloud-config-repo
Aunque git es comúnmente utilizado como el sistema de almacenamiento de respaldo de Spring Cloud Config Server, como se ha indicado anteriormente, podría estar en uso otro de los posibles backends. Consulte la documentación de Spring Cloud Config Server para obtener más información sobre otros servidores de backend, como Relational Database (JDBC), SVN y el sistema de archivos local.
Inspección de la arquitectura de implementación
Requisitos de hardware para cada servicio
Para cada uno de los servicios de Spring Cloud (sin incluir el servidor de configuración, el registro o la puerta de enlace), documente la siguiente información:
- Número de instancias en ejecución.
- Número de CPU asignadas a cada instancia.
- Cantidad de RAM asignada a cada instancia.
Distribución y replicación geográfica de documentos
Determine si las aplicaciones de Spring Cloud están siendo distribuidas actualmente entre varias regiones o centros de datos. Documente los requisitos de tiempo de actividad o el Acuerdo de Nivel de Servicio de las aplicaciones que va a migrar.
Identificación de los clientes que omiten el registro del servicio
Identifique las aplicaciones cliente que invoquen a cualquiera de los servicios que se van a migrar sin usar el registro de Spring Cloud Service. Después de la migración, estas invocaciones ya no serán posibles. Actualice estos clientes para usar Spring Cloud OpenFeign antes de la migración.
Migración
Eliminar configuraciones restringidas
El entorno de Azure Container Apps ofrece el servidor Eureka administrado, Spring Cloud Config Server y el administrador. Cuando una aplicación está enlazada al componente de Java, Azure Container Apps inserta propiedades relacionadas como variables de entorno del sistema. Conforme al diseño de Configuración Externalizada de Spring Boot, las propiedades de la aplicación definidas en el código o empaquetadas en artefactos se sobrescriben mediante variables de entorno del sistema.
Si establece una de las siguientes propiedades mediante el argumento de la línea de comandos, una propiedad del sistema Java o la variable de entorno del contenedor, debe quitarla para evitar conflictos y un comportamiento inesperado:
SPRING_CLOUD_CONFIG_COMPONENT_URISPRING_CLOUD_CONFIG_URISPRING_CONFIG_IMPORTeureka.client.fetch-registryeureka.client.service-url.defaultZoneeureka.instance.prefer-ip-addresseureka.client.register-with-eurekaSPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IPSPRING_BOOT_ADMIN_CLIENT_URL
Crear un entorno administrado de Azure Container Apps y aplicaciones.
Aprovisione una aplicación Azure Container Apps en la suscripción de Azure en un entorno administrado existente o cree una nueva para cada servicio que vaya a migrar. No es necesario crear aplicaciones que se ejecuten como servidores de registro y configuración de Spring Cloud. Para obtener más información, consulte Quickstart: Implementación de la primera aplicación contenedora mediante el portal de Azure.
Preparar el servidor de configuración de Spring Cloud
Configura el servidor de configuración en tus aplicaciones de contenedor de Azure para el componente Spring. Para obtener más información, consulte Configuración de la configuración del componente Config Server for Spring en Azure Container Apps.
Nota:
Si el repositorio actual de Configuración de Spring Cloud está en el sistema de archivos local o en el entorno local, primero debe migrar o replicar los archivos de configuración en un repositorio basado en la nube, como GitHub, Azure Repos o BitBucket.
Comprobación del registro de la consola y configuración de los valores de diagnóstico
Configure los registros para garantizar que todo lo que se genere se enrute a la consola, y no a los archivos.
Después de implementar una aplicación en Azure Container Apps, puede configurar las opciones de registro en el entorno de Container Apps para definir uno o varios destinos de los registros. Estos destinos pueden incluir Azure Monitor Log Analytics, Azure Centro de eventos o incluso otras soluciones de supervisión de terceros. También tiene la opción de deshabilitar los datos de registro y ver los registros solo en tiempo de ejecución. Para obtener instrucciones de configuración detalladas, consulte Log storage and monitoring options in Azure Container Apps.
Configuración de almacenamiento persistente
Si alguna parte de la aplicación lee o escribe en el sistema de archivos local, deberá configurar el almacenamiento persistente para reemplazar el sistema de archivos local. Puede indicar la ruta de acceso para montar en el contenedor a través de los ajustes de la aplicación y alinearla con la ruta de acceso que usa la aplicación. Para obtener más información, consulte Cómo utilizar los montajes de almacenamiento en Azure Container Apps.
Migración de secretos de Spring Cloud Vault a Azure KeyVault
Puede insertar secretos directamente en aplicaciones a través de Spring mediante el Azure KeyVault Spring Boot Starter. Para obtener más información, consulte How to use the Spring Boot Starter for Azure Key Vault.
Nota:
La migración puede requerir que renombres algunos datos confidenciales. Actualice el código de la aplicación como sea necesario.
Migración de todos los certificados a KeyVault
Azure Containers Apps admite la comunicación segura entre aplicaciones. La aplicación no necesita administrar el proceso de establecimiento de comunicaciones seguras. Puede cargar el certificado privado en Azure Container Apps o usar un certificado administrado gratuito proporcionado por Azure Container Apps. Usar Azure Key Vault para administrar certificados es un enfoque recomendado. Para obtener más información, vea Certificates en Azure Container Apps.
Configuración de las integraciones de administración del rendimiento de la aplicación (APM)
Si ya ha configurado variables relacionadas con APM dentro del contenedor, lo único que debe hacer es asegurarse de que se pueda establecer la conexión a la plataforma de APM de destino. Si la configuración de APM hace referencia a variables de entorno del contenedor, debe establecer las variables de entorno en tiempo de ejecución en consecuencia en Azure Container Apps. La información confidencial, como la cadena de conexión, debe manejarse de manera segura. Puede especificarlo como un secreto o hacer referencia a un secreto almacenado en Azure Key Vault.
Configuración de secretos por servicio y configuraciones externalizadas
Puede insertar opciones de configuración en cada contenedor como variables de entorno. Los cambios en las variables crean una nueva revisión para la aplicación existente. Los secretos son pares clave-valor y son válidos en todas las revisiones.
Migración y habilitación del proveedor de identidades
Si alguna de las aplicaciones de Spring Cloud requiere autenticación o autorización, consulte las siguientes indicaciones para garantizar que están configuradas para acceder al proveedor de identidades:
- Si el proveedor de identidades es Microsoft Entra ID, no se deben realizar cambios.
- Si el proveedor de identidades es un bosque de Active Directory local, considere implementar una solución de identidad híbrida con Microsoft Entra ID. Para más instrucciones, consulte la documentación sobre identidades híbridas.
- Si el proveedor de identidades es otra solución local, como PingFederate, consulte el tema Instalación personalizada de Microsoft Entra Connect para configurar la federación con Microsoft Entra ID. Como alternativa, considere usar Spring Security para integrar su proveedor de identidad mediante OAuth2/OpenID Connect o SAML.
Actualización de aplicaciones cliente
Actualice la configuración de todas las aplicaciones cliente para usar los puntos de conexión de Azure Container Apps publicados para las aplicaciones migradas.
Después de la migración
Ahora que ha completado la migración, compruebe que la aplicación funciona como se espera. Después, tenga en cuenta las recomendaciones siguientes para que su aplicación se comporte de forma más nativa en la nube.
Considere la posibilidad de habilitar la aplicación para que funcione con el registro de Spring Cloud. Este componente permite que otras aplicaciones de Spring y clientes implementados detecten dinámicamente la aplicación. Para obtener más información, vea Configuración de la configuración del componente Eureka Server for Spring en Azure Container Apps. A continuación, modifique los clientes de la aplicación para que usen el Load Balancer de Spring Client. Spring Client Load Balancer permite al cliente obtener direcciones de todas las instancias en ejecución de la aplicación y buscar una instancia que funcione si otra instancia se daña o no responde. Para obtener más información, consulte Spring Tips: Spring Cloud Load Balancer en el blog de Spring.
En lugar de convertir la aplicación en pública, considere la posibilidad de agregar una instancia de Spring Cloud Gateway. Spring Cloud Gateway proporciona un único punto de conexión para todas las aplicaciones implementadas en el entorno de Azure Container Apps. Si ya hay implementada una instancia de Spring Cloud Gateway, asegúrese de que haya configurada una regla destinada a dirigir el tráfico a la aplicación recién implementada.
Tiene la opción de agregar un servidor de Spring Cloud Config Server para administrar de forma centralizada y configurar el control de versiones de todas las aplicaciones de Spring Cloud. En primer lugar, cree un repositorio de Git para hospedar la configuración y configurar la instancia de la aplicación para usarla. Para obtener más información, consulte Configuración de la configuración del componente Config Server for Spring en Azure Container Apps. A continuación, migre la configuración siguiendo estos pasos:
En el directorio src/main/resources de la aplicación, cree el archivo bootstrap.yml con el siguiente contenido:
spring: application: name: <your-application-name>En el repositorio de configuración de Git, cree el archivo your-application-name.yml, donde "your-application-name" es el mismo que en el paso anterior. Mueva los ajustes del archivo application.yml en src/main/resources al nuevo archivo que acaba de crear. Si la configuración estaba anteriormente en un archivo .properties, deberá convertirlo primero a formato YAML. Puede encontrar herramientas en línea o complementos de IntelliJ para realizar esta conversión.
Cree el archivo application.yml en el directorio anterior. Puede usar este archivo para definir la configuración y los recursos que se comparten entre todas las aplicaciones del entorno de Azure Container Apps. Estos valores suelen incluir orígenes de datos, configuración de registro, configuración de Spring Boot Actuator y otros.
Confirme e inserte estos cambios en el repositorio de Git.
Elimine el archivo application.properties o application.yml de la aplicación.
Considere agregar el componente gestionado por Admin para Spring para habilitar una interfaz administrativa para las aplicaciones web de Spring Boot que expongan los endpoints del actuator. Para obtener más información, consulte Configurar el componente administrador de Spring Boot en Azure Container Apps.
Considere la posibilidad de agregar una canalización de implementación para realizar implementaciones automáticas y coherentes. Hay instrucciones disponibles para Azure Pipelines y para GitHub Actions.
Tenga en cuenta que puede usar revisiones de aplicaciones de contenedor, etiquetas de revisión y volúmenes de tráfico de entrada para habilitar la implementación azul-verde, lo que le permite probar los cambios en el código en fase de producción antes de que estén disponibles para algunos o todos los usuarios finales. Para obtener más información, consulte el Despliegue Blue-Green en Azure Container Apps.
Considere la posibilidad de agregar enlaces de servicio para conectar la aplicación a bases de datos de Azure admitidas. Estos enlaces de servicio eliminarán la necesidad de proporcionar información de conexión, incluidas las credenciales, a las aplicaciones de Spring Cloud.
Considere la posibilidad de habilitar la pila de desarrollo de Java para recopilar métricas principales de JVM para las aplicaciones. Para obtener más información, consulte Java métricas para aplicaciones de Java en Azure Container Apps.
Considere la posibilidad de agregar Azure Monitor reglas de alertas y grupos de acciones para detectar y abordar rápidamente condiciones aberantes. Para obtener más información, consulte Configurar alertas en Azure Container Apps.
Considere la posibilidad de replicar la aplicación en las zonas de la región habilitando la redundancia de zona Azure Container Apps. La carga del tráfico se equilibra y se dirige automáticamente a las réplicas si se produce una interrupción en la zona. Para obtener más información sobre la configuración redundante, consulte Reliability en Azure Container Apps.
Considere la posibilidad de proteger Azure Container Apps frente a vulnerabilidades de seguridad comunes mediante Web Application Firewall en Application Gateway. Para obtener más información, consulte Proteger Aplicaciones de Contenedor de Azure con el Firewall de Aplicaciones Web en una Puerta de Enlace de Aplicación.
Si las aplicaciones usan componentes heredados de Spring Cloud Netflix, tiene la posibilidad de reemplazarlos por alternativas actuales, tal como se indica en la siguiente tabla:
Legado Actual Spring Cloud Eureka Registro de servicios de Spring Cloud Spring Cloud Netflix Zuul Spring Cloud Gateway Spring Cloud Netflix Archaius Servidor de configuración de Spring Cloud Spring Cloud Netflix Ribbon Spring Cloud Load Balancer (balanceador de carga del lado del cliente) Spring Cloud Hystrix Spring Cloud Circuit Breaker + Resilience4J Turbina de Netflix de Spring Cloud Micrometer + Prometheus