Arquitectura de microservicios

Problemas de aplicaciones antiguas

Muchas aplicaciones en la nube más antiguas utilizan una arquitectura monolítica. Aunque estas aplicaciones heredadas pueden servir a varios inquilinos, están creadas como un conjunto grande y engorroso de componentes altamente interdependientes. Una falla en un componente puede tener un impacto devastador en otro componente, lo que resulta en interrupciones del servicio para muchos o todos los inquilinos. La actualización de estos sistemas requiere desconectarlos, lo que limita el acceso de los usuarios durante el proceso de actualización. Los problemas de los servicios monolíticos se agravan cuando se implementan en centros de datos patentados con hardware limitado. porque las restricciones de hardware limitan aún más la disponibilidad y escalabilidad de los recursos de software.

Solución de microservicios de Genesys Cloud

Genesys Cloud resuelve los problemas de la arquitectura monolítica con nuestro uso de microservicios. Con los microservicios, resolvemos problemas complejos con objetos simples sin estado. Nuestra arquitectura de microservicios también proporciona escalabilidad en miles de servidores en múltiples centros de datos geográficamente diversos.

mono vs micro

En lugar de utilizar varios componentes estrechamente acoplados, Genesys Cloud divide su funcionalidad en servicios, cada uno de los cuales maneja un tipo de solicitud determinado. Cada servicio de Genesys Cloud utiliza Elastic Load Balancers (ELB) para distribuir el trabajo; cada grupo contiene varios servidores, que escalan dinámicamente en función de la carga. Monitoreamos continuamente el tráfico de nivel de servicio y optimizamos los microservicios en función de los niveles de uso y los tipos de solicitudes.

Este diagrama ilustra los principales servicios de Genesys Cloud.

2-56cf47d60000205b16537af5.PC-platform-portrait2

 

Escalado bajo demanda 

La mayoría de los servicios de Genesys Cloud utilizan un ELB con un grupo de escalado automático (ASG). Genesys Cloud distribuye la carga y monitorea los grupos de acuerdo con las políticas específicas del servicio (CPU para servicios de computación intensiva, tiempo medio de respuesta para un servicio de consulta, etc.). Cuando superamos una política de umbral, el grupo agrega o elimina automáticamente recursos adicionales según sea necesario. Por ejemplo, si una organización necesita enviar repentinamente un millón de faxes, los microservicios asociados se escalan automáticamente para satisfacer la demanda sin afectar a otras funciones ni a otros inquilinos.

Procesamiento a prueba de fallas

Debido a que operan de forma independiente, un problema con un microservicio no puede afectar al otro, lo que limita en gran medida la posibilidad de problemas. Por ejemplo, tres microservicios independientes manejan la recuperación del correo de voz, el envío de faxes salientes y el enrutamiento de las llamadas entrantes de los clientes. Si el microservicio de recuperación de correo de voz falla, el microservicio de llamadas entrantes del cliente continúa funcionando sin interrupciones.

Fiabilidad a través de la recuperación

Cuando un servidor individual falla, el ELB / ASG apropiado detecta fallas o tiempos de espera de verificación de estado y desconecta el componente en mal estado del balanceador de carga. Si este error no es transitorio, la lógica adicional desencadena un comportamiento de autorreparación, donde el nodo errante se detiene y se crea un servidor completamente nuevo para ocupar su lugar. El tráfico continúa sin cesar, con otros servidores en el grupo acomodando sin problemas el trabajo adicional. Genesys Cloud se recupera antes de que cualquier usuario note una brecha en el servicio. Este proceso de recuperación requiere un aumento en los recursos, pero tenemos acceso a un amplio ancho de banda bajo demanda a través de Amazon Web Services (AWS).

Genesys Cloud se basa en AWS, el líder indiscutible en implementaciones internacionales basadas en la nube. Hemos trabajado en estrecha colaboración con Amazon durante los últimos cuatro años para probar y perfeccionar sus sistemas de monitoreo y ELB.

Regiones de AWS

Genesys Cloud se implementa en varias regiones independientes de AWS de todo el mundo. Cada región consta de varias “zonas de disponibilidad” de Amazon, cada una de las cuales se compone de uno o más centros de datos físicos. La redundancia está integrada en la estructura del sistema incluso en este nivel, y cada zona de disponibilidad tiene energía separada, conectividad de red troncal, memoria de datos replicada y (en algunos casos) separación física que abarca placas de falla tectónica. Los datos de los clientes se replican en las zonas y los centros de datos de una región. La pérdida de un centro de datos completo solo reduciría temporalmente la capacidad; la situación se curaría automáticamente y lo haría sin pérdida de datos. Además de garantizar la durabilidad de los datos, la soberanía de los datos también es un aspecto importante para una implementación en la nube. La arquitectura de Genesys Cloud permite a una organización definir su “región de registro” para garantizar que los datos no crucen los límites regionales dentro de nuestra infraestructura.

Regiones de AWS para la implementación de Genesys Cloud

Regiones de AWS para la implementación de Genesys Cloud Voice

Navegadores y clientes móviles

En muchos sentidos, los clientes de Genesys Cloud reflejan el enfoque sin estado utilizado por los microservicios. A medida que el navegador procesa Genesys Cloud, se integra un conjunto de objetos en la memoria del navegador, incluidas las notificaciones de eventos para las actualizaciones de datos. A medida que el navegador recibe nueva información, actualiza los objetos en la memoria y luego actualiza la vista para el usuario.

Siempre que un usuario cambia su vista o inicia una nueva tarea, los datos locales existentes se muestran inmediatamente mientras se realiza una solicitud para buscar actualizaciones. Estas solicitudes de datos están diseñadas para coincidir con los servicios disponibles y optimizadas para reducir el ancho de banda de datos y mejorar la velocidad de las vistas del cliente.

Actualizaciones continuas

Continuamente introducimos nuevo código en nuestro sistema de producción Genesys Cloud. Si se detecta un pequeño defecto, simplemente lo solucionamos de inmediato y lanzamos nuevas versiones de los servicios afectados.

Nuestra arquitectura distribuida nos permite lanzar actualizaciones continuas sin tener que apagar todo el sistema para mantenimiento. Usamos equilibrio de carga y técnicas como "implementaciones rojo-negro" para garantizar que los clientes no se vean afectados negativamente por nuestro proceso de actualización. Cuando hay disponible una nueva versión de un microservicio (que contiene nuevas funciones o correcciones), creamos una imagen de servidor completamente nueva para ese servicio. Esta imagen se utiliza para crear servidores completamente nuevos en lugar de aplicar parches a los sistemas. A medida que estos nuevos servidores se conectan y se determina que están en buen estado, posteriormente se adjuntan al equilibrador de carga y ahora comienzan a manejar un pequeño porcentaje del tráfico. Suponiendo que los nuevos servidores funcionen como se desea, se agrega más capacidad y los servidores antiguos (con la versión anterior del servicio) se eliminan del balanceador de carga y se agotan las solicitudes pendientes. En cuestión de minutos, se pueden reemplazar flotas enteras de servidores que brindan las funciones de un microservicio determinado. Además de hacer que la entrega continua del servicio sea perfecta, esto proporciona una confiabilidad incomparable. Evitar la actualización en el lugar reduce la fragilidad al garantizar que los sistemas que probamos en nuestros entornos de preproducción sean funcionalmente idénticos a los sistemas implementados en producción. Además, permite una rápida reversión a la variante en buen estado de un microservicio en el improbable caso de que una nueva versión no funcione como se desea.

La independencia de los microservicios y nuestro extenso proceso automatizado de prueba y promoción de compilación permite a Genesys eliminar las correcciones de errores sin el temor de romper inadvertidamente otra cosa. Además, Genesys puede crear microservicios para nuevas funciones sin afectar los servicios existentes. Las actualizaciones se producen mientras millones de clientes utilizan activamente Genesys Cloud.