Este post fue escrito por Eunice Aguilar y Francisco Rodera de REA Group.
Las empresas que necesitan compartir y acceder a grandes cantidades de datos en múltiples dominios y servicios necesitan construir una infraestructura en la nube que se adapte a los cambios de las necesidades. REA Group, una empresa digital que se especializa en propiedades inmobiliarias, resolvió este problema utilizando Streaming administrado por Amazon para Apache Kafka (Amazon MSK) y una plataforma de transmisión de datos llamada Hydro.
El equipo de REA Group, compuesto por más de 3,000 personas, se guía por nuestro propósito: cambiar la forma en que el mundo experimenta las propiedades. Ayudamos a las personas con todos los aspectos de su experiencia inmobiliaria (no solo con la compra, la venta y el alquiler) a través del contenido, los datos y los conocimientos más completos, las estimaciones de valoración y las soluciones de financiación de viviendas. Ofrecemos un valor incomparable a nuestros clientes, los agentes inmobiliarios de Australia, al brindar acceso a la audiencia más grande y comprometida de buscadores de propiedades.
Para lograr esto, los diferentes productos técnicos dentro de la empresa necesitan mover datos periódicamente entre dominios y servicios de manera eficiente y confiable.
Dentro del equipo de Plataforma de datos, hemos creado una plataforma de transmisión de datos llamada Hydro para brindar esta capacidad a toda la organización. Hydro funciona con Amazon MSK y otras herramientas con las que los equipos pueden mover, transformar y publicar datos con baja latencia mediante arquitecturas basadas en eventos. Este tipo de estructura es fundamental en REA para crear microservicios y procesar datos de manera oportuna para casos de uso en tiempo real y por lotes, como mensajería saliente urgente, personalización y aprendizaje automático (ML).
En esta publicación, compartimos nuestro enfoque para la planificación de la capacidad del clúster MSK.
El problema
Hydro administra una infraestructura de Amazon MSK a gran escala al proporcionar abstracciones de configuración, lo que permite a los usuarios centrarse en brindar valor a REA sin la sobrecarga cognitiva que implica la administración de la infraestructura. A medida que aumenta el uso de Hydro dentro de REA, es fundamental realizar una planificación de la capacidad para satisfacer las demandas de los usuarios y, al mismo tiempo, mantener un rendimiento y una rentabilidad óptimos.
Hydro utiliza clústeres MSK aprovisionados en entornos de desarrollo y producción. En cada entorno, Hydro administra un único clúster MSK que aloja varios usuarios con distintos requisitos de carga de trabajo. Una planificación adecuada de la capacidad garantiza que los clústeres puedan manejar un alto nivel de tráfico y brindar a todos los usuarios el nivel de servicio deseado.
La transmisión en tiempo real es una tecnología relativamente nueva en REA. Muchos usuarios aún no están familiarizados con Apache Kafka, y evaluar con precisión sus requisitos de carga de trabajo puede ser un desafío. Como custodios de la plataforma Hydro, es nuestra responsabilidad encontrar una manera de realizar una planificación de la capacidad para evaluar de manera proactiva el impacto de las cargas de trabajo de los usuarios en nuestros clústeres.
Goals
La planificación de la capacidad implica determinar el tamaño y la configuración adecuados del clúster en función de las cargas de trabajo actuales y proyectadas, además de considerar factores como la replicación de datos, el ancho de banda de la red y la capacidad de almacenamiento.
Sin una planificación de capacidad adecuada, los clústeres Hydro pueden verse sobrecargados por el alto tráfico y no brindarles a los usuarios el nivel de servicio deseado. Por lo tanto, para nosotros es muy importante invertir tiempo y recursos en la planificación de capacidad para asegurarnos de que los clústeres Hydro puedan brindar el rendimiento y la disponibilidad que requieren las aplicaciones modernas.
El enfoque de planificación de capacidad que seguimos para Hydro cubre tres áreas principales:
- Los modelos utilizados para el cálculo de las necesidades de capacidad actuales y futuras estimadas, incluidos los atributos utilizados como variables en ellos
- Los modelos utilizados para evaluar la capacidad aproximada esperada requerida para una nueva carga de trabajo hidroeléctrica que se una a la plataforma
- Las herramientas disponibles para los operadores y custodios para evaluar el consumo de capacidad histórico y actual de la plataforma y, en función de ellos, el margen disponible.
El siguiente diagrama muestra la interacción del uso de la capacidad y el uso máximo precalculado.
Aunque todavía no tenemos esta capacidad, el objetivo es llevar este enfoque un paso más allá en el futuro y predecir el tiempo aproximado de agotamiento de los recursos, como se muestra en el siguiente diagrama.
Para garantizar que nuestras operaciones digitales sean resilientes y eficientes, debemos mantener una observación integral de nuestro uso actual de la capacidad. Esta supervisión detallada nos permite no solo comprender los límites de rendimiento de nuestra infraestructura actual, sino también identificar posibles cuellos de botella antes de que afecten a nuestros servicios y usuarios.
Al establecer y monitorear de manera proactiva umbrales bien entendidos, podemos recibir alertas oportunas y tomar las medidas de escalamiento necesarias. Este enfoque garantiza que nuestra infraestructura pueda satisfacer picos de demanda sin comprometer el rendimiento, lo que en última instancia respalda una experiencia de usuario fluida y mantiene la integridad de nuestro sistema.
Resumen de la solución
Los clústeres MSK en Hydro están configurados con un PER_TOPIC_PER_BROKER
Nivel de monitoreo, que proporciona métricas a nivel de intermediario y de tema. Estas métricas nos ayudan a determinar los atributos del uso del clúster de manera efectiva.
Sin embargo, no sería prudente mostrar una cantidad excesiva de métricas en nuestros paneles de control de monitoreo, ya que eso podría generar una menor claridad y una visión más lenta del clúster. Es más valioso elegir las métricas más relevantes para la planificación de la capacidad en lugar de mostrar numerosas métricas.
Atributos de uso del clúster
Según las pautas de prácticas recomendadas de Amazon MSK, hemos identificado varios atributos clave para evaluar el estado del clúster MSK. Estos atributos incluyen lo siguiente:
- Rendimiento de entrada y salida
- uso de CPU
- Uso del espacio en disco
- Uso de memoria
- Latencia del productor y del consumidor
- Limitación de productores y consumidores
Para obtener más información sobre cómo dimensionar correctamente sus clústeres, consulte Las mejores prácticas para dimensionar correctamente sus clústeres de Apache Kafka para optimizar el rendimiento y el costo, Mejores prácticas para corredores estándar, Monitorizar el uso de la CPU, Monitorear el espacio en discoy Monitorizar la memoria de Apache Kafka.
La siguiente tabla contiene la lista detallada de todos los atributos que utilizamos para la planificación de la capacidad del clúster MSK en Hydro.
Nombre del Atributo | Tipo de atributo | Unidades | Comentarios |
---|---|---|---|
Bytes en | Throughput | Bytes por segundo | Se basa en la red agregada de Amazon EC2, la red de Amazon EBS y el rendimiento del almacenamiento de Amazon EBS. |
Bytes de salida | Throughput | Bytes por segundo | Se basa en la red agregada de Amazon EC2, la red de Amazon EBS y el rendimiento del almacenamiento de Amazon EBS. |
Latencia del consumidor | Estado latente | milisegundos | Los valores de latencia altos o inaceptables generalmente indican una degradación de la experiencia del usuario antes de alcanzar el agotamiento real de los recursos (por ejemplo, CPU y memoria). |
uso de CPU | Límites de capacidad | % CPU del usuario + CPU del sistema | Debería mantenerse por debajo del 60% |
Uso del espacio en disco | Almacenamiento persistente | Bytes | Debería mantenerse por debajo del 85% |
Uso de memoria | Límites de capacidad | % Memoria en uso | Debería mantenerse por debajo del 60% |
Latencia del productor | Estado latente | milisegundos | Los valores de latencia sostenida altos o inaceptables generalmente indican una degradación de la experiencia del usuario antes de alcanzar los límites de capacidad reales o el agotamiento real de los recursos (por ejemplo, CPU o memoria). |
Estrangulamiento | Límites de capacidad | Milisegundos, bytes o mensajes | Los valores de limitación sostenida altos o inaceptables indican que se están alcanzando los límites de capacidad antes del agotamiento real de los recursos (por ejemplo, CPU o memoria). |
Al monitorear estos atributos, podemos evaluar rápidamente el rendimiento de los clústeres a medida que agregamos más cargas de trabajo a la plataforma. Luego, combinamos estos atributos con las métricas MSK relevantes disponibles.
Límites de capacidad del clúster
Durante la planificación inicial de la capacidad, nuestros clústeres MSK no recibían suficiente tráfico para brindarnos una idea clara de sus límites de capacidad. Para solucionar esto, utilizamos Marco de pruebas de rendimiento de AWS para Apache Kafka para evaluar los límites teóricos de rendimiento. Realizamos pruebas de rendimiento y capacidad en los clústeres MSK de prueba que tenían las mismas configuraciones de clúster que nuestros clústeres de desarrollo y producción. Obtuvimos una comprensión más completa del rendimiento del clúster al realizar estos diversos escenarios de prueba. La siguiente figura muestra un ejemplo de las métricas de rendimiento de un clúster de prueba.
Para realizar las pruebas dentro de un marco de tiempo y un presupuesto específicos, nos centramos en los escenarios de prueba que podían medir de manera eficiente la capacidad del clúster. Por ejemplo, realizamos pruebas que implicaban enviar tráfico de alto rendimiento al clúster y crear temas con muchas particiones.
Después de cada prueba, recopilamos las métricas del clúster de prueba y extrajimos los valores máximos de los atributos de uso clave del clúster. Luego, consolidamos los resultados y determinamos los límites más adecuados para cada atributo. La siguiente captura de pantalla muestra un ejemplo de las métricas de rendimiento del clúster de prueba exportado.
Paneles de control de monitorización de capacidad
Como parte de nuestro proceso de gestión de la plataforma, realizamos revisiones operativas mensuales para mantener un rendimiento óptimo. Esto implica analizar un informe operativo automatizado que cubre todos los sistemas de la plataforma. Durante la revisión, evaluamos los objetivos de nivel de servicio (SLO) en función de determinados indicadores de nivel de servicio (SLI) y evaluamos las alertas de monitoreo activadas el mes anterior. De este modo, podemos identificar cualquier problema y tomar medidas correctivas.
Para ayudarnos a realizar las revisiones operativas y brindarnos una descripción general del uso del clúster, desarrollamos un panel de control de monitoreo de capacidad, como se muestra en la siguiente captura de pantalla, para cada entorno. Creamos el panel como infraestructura como código (IaC) utilizando Kit de desarrollo en la nube de AWS (AWS CDK). El panel se genera y administra automáticamente como un componente de la infraestructura de la plataforma, junto con el clúster MSK.
Al definir los límites de capacidad máxima del clúster MSK en un archivo de configuración, los límites se cargan automáticamente en el panel de capacidad como anotaciones en el Reloj en la nube de Amazon Widgets de gráficos. Las anotaciones de límites de capacidad son claramente visibles y nos brindan una vista del margen de capacidad del clúster en función del uso.
Determinamos los límites de capacidad para el rendimiento, la latencia y la limitación mediante pruebas de rendimiento. Los límites de capacidad de las demás métricas, como CPU, espacio en disco y memoria, se basan en las pautas de prácticas recomendadas de Amazon MSK.
Durante las revisiones operativas, evaluamos de manera proactiva los paneles de control de capacidad para determinar si es necesario agregar más capacidad al clúster. Este enfoque nos permite identificar y abordar posibles problemas de rendimiento antes de que tengan un impacto significativo en las cargas de trabajo de los usuarios. Es una medida preventiva en lugar de una respuesta reactiva a una degradación del rendimiento.
Alarmas preventivas de CloudWatch
Hemos implementado alarmas preventivas de CloudWatch además de los paneles de control de monitoreo de capacidad. Estas alarmas están configuradas para alertarnos antes de que una métrica de capacidad específica alcance su umbral, notificándonos cuando el valor sostenido alcanza el 80 % del límite de capacidad. Este método de monitoreo nos permite tomar medidas inmediatas en lugar de esperar a nuestra cadencia de revisión mensual.
Valor añadido por nuestro enfoque de planificación de capacidad
Como operadores de la plataforma Hydro, nuestro enfoque de planificación de la capacidad nos ha proporcionado una forma coherente de evaluar en qué medida nos encontramos respecto de los límites teóricos de capacidad de todos nuestros clústeres, independientemente de su configuración. Nuestros paneles de control de la capacidad son un instrumento de observación clave que revisamos periódicamente; también son útiles para solucionar problemas de rendimiento. Nos ayudan a determinar rápidamente si las limitaciones de capacidad podrían ser una posible causa raíz de algún problema en curso. Esto significa que podemos utilizar nuestro enfoque y herramientas de planificación de la capacidad actuales de forma proactiva o reactiva, según la situación y la necesidad.
Otro beneficio de este enfoque es que calculamos los valores teóricos de uso máximo que un clúster determinado con una configuración específica puede soportar desde un clúster independiente sin afectar a los usuarios reales de la plataforma. Ponemos en marcha clústeres MSK de corta duración a través de nuestra automatización basada en AWS CDK y realizamos pruebas de capacidad en ellos. Hacemos esto con bastante frecuencia para evaluar el impacto, si lo hay, que tienen los cambios realizados en las configuraciones del clúster en los límites de capacidad conocidos. De acuerdo con nuestro ciclo de retroalimentación actual, si estos límites recién calculados cambian con respecto a los conocidos anteriormente, se utilizan para actualizar automáticamente nuestros paneles de control y alarmas de capacidad en CloudWatch.
Evolución futura
Hydro es una plataforma que mejora constantemente con la incorporación de nuevas funciones. Una de estas funciones incluye la capacidad de crear cómodamente aplicaciones de cliente de Kafka. Para satisfacer la creciente demanda, es esencial estar a la vanguardia de la planificación de la capacidad. Si bien el enfoque que se analiza aquí nos ha resultado útil hasta ahora, no es de ninguna manera la etapa final y existen capacidades que debemos ampliar y áreas en las que debemos mejorar.
Arquitectura multiclúster
Para respaldar cargas de trabajo críticas, estamos considerando usar una arquitectura de múltiples clústeres con Amazon MSK, lo que también afectaría nuestra planificación de capacidad. En el futuro, planeamos crear perfiles de cargas de trabajo en función de metadatos, compararlos con métricas de capacidad y colocarlos en el clúster MSK adecuado. Además de los clústeres MSK aprovisionados existentes, evaluaremos cómo Amazon MSK sin servidor El tipo de clúster puede complementar la arquitectura de nuestra plataforma.
Tendencias de uso
Hemos añadido Detección de anomalías de CloudWatch Gráficos en nuestros paneles de control de monitoreo de capacidad para rastrear tendencias inusuales. Sin embargo, debido a que el algoritmo de detección de anomalías de CloudWatch solo evalúa hasta 2 semanas de datos de métricas, reevaluaremos su utilidad a medida que incorporemos más cargas de trabajo. Además de identificar tendencias de uso, exploraremos opciones para implementar un algoritmo con capacidades predictivas para detectar cuándo se degradan y agotan los recursos del clúster MSK.
Conclusión
La planificación inicial de la capacidad sienta una base sólida para futuras mejoras y proporciona un proceso de incorporación seguro para las cargas de trabajo. Para lograr un rendimiento óptimo de nuestra plataforma, debemos asegurarnos de que nuestra estrategia de planificación de la capacidad evolucione en línea con el crecimiento de la plataforma. Como resultado, mantenemos una estrecha colaboración con AWS para desarrollar continuamente funciones adicionales que satisfagan nuestras necesidades comerciales y estén sincronizadas con la hoja de ruta de Amazon MSK. Esto garantiza que nos mantengamos a la vanguardia y podamos brindar la mejor experiencia posible a nuestros usuarios.
Recomendamos a todos los usuarios de Amazon MSK que no dejen de aprovechar al máximo el potencial de su clúster y comiencen a planificar su capacidad. Implementar las estrategias que se enumeran en esta publicación es un excelente primer paso y dará como resultado operaciones más fluidas y ahorros significativos a largo plazo.
Acerca de los autores
Eunice Aguilar es ingeniera de datos en REA. Ha trabajado en ingeniería de software en varias industrias a lo largo de los años y recientemente en datos inmobiliarios. También es defensora de las mujeres interesadas en la transición hacia la tecnología, junto con personas con mucha experiencia en las que se inspira.
Francisco Rodera es ingeniero de sistemas en REA. Tiene amplia experiencia en la creación y operación de sistemas distribuidos a gran escala. Sus intereses son la automatización, la observabilidad y la aplicación de prácticas de SRE a servicios y plataformas críticos para el negocio.
Naeem Khizer es gerente de cuentas técnicas en AWS. Se especializa en computación eficiente y tiene una gran pasión por Linux y las tecnologías de código abierto, que aprovecha para ayudar a los clientes empresariales a modernizar y optimizar sus cargas de trabajo en la nube.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/big-data/how-rea-group-approaches-amazon-msk-cluster-capacity-planning/