Logotipo de Zephyrnet

Nexthink escala a billones de eventos por día con Amazon MSK | Servicios web de Amazon

Fecha:

La transmisión de datos en tiempo real y el procesamiento de eventos presentan desafíos de escalabilidad y gestión. AWS ofrece una amplia selección de servicios administrados servicios de transmisión de datos en tiempo real para ejecutar sin esfuerzo estas cargas de trabajo a cualquier escala.

En esta publicación, Nextthink comparte cómo Streaming administrado por Amazon para Apache Kafka (Amazon MSK) les permitió lograr una escala masiva en el procesamiento de eventos. Al experimentar un hipercrecimiento empresarial, Nexthink migró a AWS para superar las limitaciones de escala de las soluciones locales. Con Amazon MSK, Nexthink ahora procesa sin problemas billones de eventos por día, alcanzando más de 5 GB por segundo de rendimiento agregado.

En las siguientes secciones, Nexthink presenta su producto y la necesidad de escalabilidad. Luego destacan los desafíos de su aplicación local heredada y presentan su transición a una arquitectura de software como servicio (SaaS) centrada en la nube impulsada por Amazon MSK. Finalmente, Nexthink detalla los beneficios que se logran al adoptar Amazon MSK.

La necesidad de Nextthink de escalar

Nextthink es el líder en experiencia digital para empleados (DeX). La empresa está dando forma al futuro del trabajo proporcionando a los líderes de TI y a los niveles C información sobre las experiencias tecnológicas diarias de los empleados a nivel de dispositivo y aplicación. Esto permite que TI evolucione de la resolución reactiva de problemas a la optimización proactiva.

El Plataforma Nextthink Infinity combina análisis, monitoreo, automatización y más para gestionar la experiencia digital de los empleados. Al recopilar eventos de dispositivos y aplicaciones, procesarlos en tiempo real y almacenarlos, nuestra plataforma analiza datos para resolver problemas e impulsar experiencias para más de 15 millones de empleados en cinco continentes.

En solo 3 años, el negocio de Nexthink se multiplicó por diez y, con la introducción de más datos en tiempo real, nuestra aplicación tuvo que escalar desde el procesamiento de 200 MB por segundo a 5 GB por segundo y billones de eventos diarios. Para permitir este crecimiento, modernizamos nuestra aplicación de un monolito local de un solo inquilino a una solución SaaS escalable basada en la nube con tecnología de Amazon MSK.

Las siguientes secciones detallan nuestro viaje de modernización, incluidos los desafíos que enfrentamos y los beneficios que obtuvimos con nuestra nueva arquitectura basada en AWS y centrada en la nube.

La solución local y sus desafíos

Primero exploremos nuestra solución local anterior, Nexthink V6, antes de examinar cómo Amazon MSK abordó sus desafíos. El siguiente diagrama ilustra su arquitectura.

Nextthink v6

V6 estaba compuesto por dos aplicaciones Java y C++ monolíticas y de un solo inquilino que estaban estrechamente acopladas. El portal era una aplicación Java backend-for-frontend y el motor central era una aplicación interna de base de datos en memoria C++ que también manejaba conexiones de dispositivos, ingesta de datos, agregación y consultas. Al agrupar todas estas funciones, el motor se volvió difícil de gestionar y mejorar.

V6 también carecía de escalabilidad. Inicialmente admitía 10,000 300,000 dispositivos, pero algunos nuevos inquilinos tenían más de 6 XNUMX dispositivos. Reaccionamos implementando múltiples motores VXNUMX por inquilino, lo que aumentó la complejidad y el costo, obstaculizó la experiencia del usuario y retrasó el tiempo de comercialización. Esto también condujo a ciclos de prueba de concepto e incorporación más prolongados, lo que perjudicó al negocio.

Además, la ausencia de una plataforma de transmisión como Kafka creó dependencias entre equipos a través del estrecho acoplamiento HTTP/gRPC. Además, los equipos no podían acceder a los eventos en tiempo real antes de su incorporación a la base de datos, lo que limitaba el desarrollo de funciones. También carecíamos de un búfer de datos, lo que corría el riesgo de perderlos durante las interrupciones. Estas limitaciones obstaculizaron la innovación y aumentaron los riesgos.

En resumen, aunque el sistema V6 cumplió su propósito inicial, reinventarlo con tecnologías centradas en la nube se volvió imperativo para mejorar la escalabilidad, la confiabilidad y fomentar la innovación por parte de nuestros equipos de ingeniería y productos.

Transición a una arquitectura centrada en la nube con Amazon MSK

Para lograr nuestros objetivos de modernización, después de una exhaustiva investigación e iteraciones, implementamos un diseño de microservicios impulsados ​​por eventos en Servicio Amazon Elastic Kubernetes (Amazon EKS), utilizando Kafka en Amazon MSK para almacenamiento y transmisión distribuidos de eventos.

Nuestra transición de la solución local v6 a la plataforma centrada en la nube se realizó en cuatro iteraciones:

  • Fase 1 – Levantamos y cambiamos de máquinas locales a máquinas virtuales en la nube, reduciendo las complejidades operativas y acelerando los ciclos de prueba de concepto mientras migramos a los clientes de manera transparente.
  • Fase 2 – Ampliamos la arquitectura de la nube implementando nuevas características del producto con microservicios y Kafka autoadministrable en Kubernetes. Sin embargo, operar nosotros mismos los clústeres de Kafka resultó demasiado difícil, lo que nos llevó a la Fase 3.
  • Fase 3 – Pasamos de Kafka autoadministrado a Amazon MSK, mejorando la estabilidad y reduciendo los costos operativos. Nos dimos cuenta de que gestionar Kafka no era nuestra principal competencia ni nuestro diferenciador, y que los gastos generales eran elevados. Amazon MSK nos permitió centrarnos en nuestra aplicación principal, liberándonos de la carga de la gestión indiferenciada de Kafka.
  • Fase 4 – Finalmente, eliminamos todos los componentes heredados, completando la transición a una plataforma SaaS totalmente centrada en la nube. Este viaje de varios años de aprendizaje y transformación tomó 3 años.

Hoy, después de nuestra exitosa transición, utilizamos Amazon MSK para dos funciones clave:

  • Ingesta de datos en tiempo real y procesamiento de billones de eventos diarios desde más de 15 millones de dispositivos en todo el mundo, como se ilustra en la siguiente figura.

Ingestión de arquitectura Nextthink

  • Habilitar un sistema basado en eventos que desacopla a los productores y consumidores de datos, como se muestra en la siguiente figura.

Nexthink Arquitectura impulsada por eventos

Para mejorar aún más nuestra escalabilidad y resiliencia, adoptamos un arquitectura basada en celdas utilizando la amplia disponibilidad de Amazon MSK en todas las regiones de AWS. Actualmente operamos más de 10 células, cada una de las cuales representa una implementación regional independiente de nuestra solución SaaS. Este enfoque basado en células minimiza el área de impacto en caso de problemas, aborda los requisitos de residencia de datos y permite el escalamiento horizontal en todas las regiones de AWS, como se ilustra en la siguiente figura.

Células de arquitectura Nextthink

Beneficios de Amazon MSK

Amazon MSK ha sido fundamental para permitir nuestro diseño basado en eventos. En esta sección, describimos los principales beneficios que obtuvimos de su adopción.

Resiliencia de datos mejorada

En nuestra nueva arquitectura, los datos de los dispositivos se envían directamente a temas de Kafka en Amazon MSK, lo que proporciona alta disponibilidad y resiliencia. Esto garantiza que los eventos se puedan recibir y almacenar de forma segura en cualquier momento. Nuestros servicios que consumen estos datos heredan la misma resiliencia de Amazon MSK. Si nuestros servicios de ingesta de backend enfrentan interrupciones, no se pierde ningún evento, porque Kafka conserva todos los mensajes publicados. Cuando nuestros servicios se reanudan, continúan procesando sin problemas desde donde lo dejaron, gracias a la semántica del productor de Kafka, que permite procesar mensajes exactamente una vez, al menos una vez o como máximo una vez según las necesidades de la aplicación.

Amazon MSK nos permite adaptar la duración de la retención de datos a nuestros requisitos específicos, desde segundos hasta una duración ilimitada. Esta flexibilidad otorga disponibilidad de datos ininterrumpida a nuestra aplicación, lo que no era posible con nuestra arquitectura anterior. Además, para salvaguardar la integridad de los datos en caso de errores de procesamiento o corrupción, Kafka nos permitió implementar un mecanismo de reproducción de datos, garantizando la coherencia y confiabilidad de los datos.

Escalado organizacional

Al adoptar una arquitectura basada en eventos con Amazon MSK, descompusimos nuestra aplicación monolítica en microservicios sin estado y poco acoplados que se comunican de forma asincrónica a través de temas de Kafka. Este enfoque permitió a nuestra organización de ingeniería escalar rápidamente de solo 4 a 5 equipos en 2019 a más de 40 equipos y aproximadamente 350 ingenieros en la actualidad.

El débil acoplamiento entre los editores de eventos y los suscriptores permitió a los equipos centrarse en distintos dominios, como la ingesta de datos, los servicios de identificación y los lagos de datos. Los equipos podrían desarrollar soluciones de forma independiente dentro de sus dominios, comunicándose a través de temas de Kafka sin un acoplamiento estrecho. Esta arquitectura aceleró el desarrollo de funciones al minimizar el riesgo de que las nuevas funciones afecten a las existentes. Los equipos podrían consumir de manera eficiente eventos publicados por otros, ofreciendo nuevas capacidades más rápidamente y al mismo tiempo reduciendo las dependencias entre equipos.

La siguiente figura ilustra el flujo de trabajo fluido al agregar nuevos dominios a nuestro sistema.

Agregar dominios

Además, el diseño basado en eventos permitió a los equipos crear servicios sin estado que podían escalarse automáticamente sin problemas en función de métricas de MSK, como mensajes por segundo. Esta escalabilidad impulsada por eventos eliminó la necesidad de una planificación exhaustiva de la capacidad y esfuerzos de escalamiento manual, lo que liberó tiempo de desarrollo.

Al utilizar una arquitectura de microservicios basada en eventos en Amazon MSK, logramos agilidad organizacional, escalabilidad mejorada y innovación acelerada, al tiempo que minimizamos los gastos operativos.

Escalado de infraestructura sin interrupciones

El negocio de Nexthink se multiplicó por diez en 3 años y se agregaron muchas capacidades nuevas al producto, lo que generó un aumento sustancial en el tráfico de 200 MB por segundo a 5 GB por segundo. Este crecimiento exponencial de los datos fue posible gracias a la sólida escalabilidad de Amazon MSK. Lograr tal escala con una solución local habría sido desafiante y costoso, si no inviable.

El intento de autogestionar Kafka impuso gastos operativos innecesarios sin aportar valor empresarial. Ejecutarlo con solo el 5 % del tráfico actual ya era complejo y requería dos ingenieros. Con los volúmenes actuales, estimamos que se necesitarían entre 6 y 10 empleados dedicados, lo que aumentaría los costos y desviaría recursos de las prioridades centrales.

Capacidades en tiempo real

Al canalizar todos nuestros datos a través de Amazon MSK, permitimos el procesamiento de eventos en tiempo real. Esto desbloqueó capacidades como alertas en tiempo real, activadores basados ​​en eventos y webhooks que antes eran inalcanzables. Como tal, Amazon MSK jugó un papel decisivo a la hora de facilitar nuestra arquitectura basada en eventos e impulsar innovaciones impactantes.

Acceso seguro a los datos

Al realizar la transición a nuestra nueva arquitectura, cumplimos nuestros objetivos de seguridad e integridad de datos. Con las ACL de Kafka, aplicamos controles de acceso estrictos, lo que permite a los consumidores y productores interactuar solo con temas autorizados. Basamos estos controles granulares de acceso a datos en criterios como tipo de datos, dominio y equipo.

Para escalar de forma segura la gestión descentralizada de temas, introdujimos propiedad Definiciones de recursos personalizados (CRD) de Kubernetes. Estos CRD permitieron a los equipos administrar de forma independiente sus propios temas, configuraciones y ACL sin comprometer la seguridad.

Cifrado Amazon MSK se aseguró de que los datos permanecieran cifrados en reposo y en tránsito. También introdujimos la opción Traiga su propia clave (BYOK), que permite el cifrado a nivel de aplicación con claves de cliente para todos los temas de un solo inquilino y de múltiples inquilinos.

Observabilidad mejorada

Amazon MSK nos brindó una gran visibilidad de nuestros flujos de datos. Lo listo para usar Reloj en la nube de Amazon métrica veamos la cantidad y los tipos de datos que fluyen a través de cada tema y grupo. Esto nos ayudó a cuantificar el uso de las funciones de nuestro producto mediante el seguimiento de volúmenes de datos a nivel de tema. Las métricas operativas de Amazon MSK permitieron monitorear sin esfuerzo y dimensionar correctamente los clústeres y los corredores. En general, la rica observabilidad de Amazon MSK facilitó decisiones basadas en datos sobre la arquitectura y las características del producto.

Conclusión

El viaje de Nexthink desde un monolito local a un SaaS en la nube se simplificó mediante el uso de Amazon MSK, un servicio Kafka totalmente administrado. Amazon MSK nos permitió escalar sin problemas y al mismo tiempo beneficiarnos de confiabilidad y seguridad de nivel empresarial. Al transferir la administración de Kafka a AWS, podríamos mantenernos enfocados en nuestro negocio principal e innovar más rápido.

En el futuro, planeamos mejorar aún más el rendimiento, los costos y la escalabilidad mediante la adopción de capacidades de Amazon MSK como almacenamiento en niveles y Tipos de instancias EC2 basadas en AWS Graviton.

También estamos trabajando estrechamente con el equipo de Amazon MSK para prepararnos para las próximas funciones del servicio. La adopción rápida de nuevas capacidades nos ayudará a permanecer a la vanguardia de la innovación mientras continuamos haciendo crecer nuestro negocio.

Para obtener más información sobre cómo Nexthink utiliza AWS para atender a su base de clientes global, explore el Nextthink en el caso de estudio de AWS. Además, descubra otras historias de éxito de clientes con Amazon MSK visitando el Categoría de blog de Amazon MSK.


Acerca de los autores

Moe HaidarMoe Haidar es ingeniero principal y líder de proyectos especiales en la oficina CTO de Nexthink. Ha estado involucrado con AWS desde 2018 y es un colaborador clave en la transformación de la nube de la plataforma Nexthink a AWS. Su atención se centra en la incubación y la arquitectura de productos y tecnologías, pero también le encanta realizar actividades prácticas para mantener su conocimiento de las tecnologías actualizado y actualizado. Todavía contribuye en gran medida a la base del código y le encanta abordar problemas complejos.
Simone PomataSimone Pomata es arquitecto sénior de soluciones en AWS. Ha trabajado con entusiasmo en la industria tecnológica durante más de 10 años. En AWS, ayuda a los clientes a tener éxito en la creación de nuevas tecnologías todos los días.
Magdalena GargasMagdalena Gargas es un Arquitecto de Soluciones apasionado por la tecnología y la solución de los desafíos de los clientes. En AWS, trabaja principalmente con empresas de software, ayudándolas a innovar en la nube. Participa en eventos de la industria, comparte ideas y contribuye al avance del campo de la contenedorización.

punto_img

Información más reciente

punto_img