En nuestra serie de preguntas y respuestas «Engineering Energizers», nos adentramos en los viajes de distinguidos líderes de la ingeniería. Hoy, presentamos a Archana Kumari, Directora de Ingeniería de Software en Salesforce.
Archana dirige nuestro equipo Data Cloud Compute Layer con sede en India, que desempeñó un papel fundamental en la reciente transición de Amazon EC2 a Kubernetes para cargas de trabajo de Trino. Este cambio no solo mejoró el rendimiento y la escalabilidad, sino que también redujo la sobrecarga operativa, mejoró la rentabilidad y aceleró el tiempo de comercialización de Data Cloud.
Data Cloud
Descubra las estrategias que el equipo de Archana utilizó para afrontar retos complejos, integrar a la perfección Hyperforce y desarrollar innovaciones propias que facilitaron la transición de las cargas de trabajo a Kubernetes.
Hyperforce, la capa propietaria de Salesforce sobre AWS. La arquitectura de Hyperforce es compleja, por lo que nuestro equipo tuvo que conocerla a fondo para facilitar una transición sin problemas. El proceso de integración fue especialmente difícil porque Hyperforce modifica el entorno estándar de AWS, lo que hace que las soluciones y configuraciones típicas resulten inadecuadas
Para abordar este problema, nos involucramos en una amplia colaboración con varios equipos de Salesforce, incluido el equipo de prestación de servicios de Data Cloud, el equipo de consultas y los equipos de Hyperforce, entre otros. Organizamos sesiones dedicadas que reunieron a todas las partes interesadas necesarias para participar en una resolución de problemas eficaz. Nuestra estrategia era tanto técnica como orientada al proceso. Nos sumergimos en la documentación de Hyperforce e interactuamos con sus diversos componentes por primera vez. Este proceso iterativo de identificación y solución de carencias desempeñó un papel crucial en la consecución de una migración satisfactoria.
Cuidado con la migración
¿Cómo garantizó su equipo la seguridad e integridad de los datos durante la migración de EC2 a Kubernetes?
Cómo garantizó su equipo la seguridad e integridad de los datos durante la migración de EC2 a Kubernetes?
Durante la transición de EC2 a Kubernetes para nuestra configuración de Trino, garantizar la seguridad e integridad de los datos era primordial. Para lograrlo, implementamos la malla de servicios Istio en todos los clústeres de Trino para asegurar la comunicación de pod a pod. Además, aplicamos controles de acceso basados en roles para limitar el acceso a los datos y recursos confidenciales estrictamente al personal autorizado.
Control de acceso basado en roles
Para reforzar aún más la seguridad de los datos, utilizamos protocolos de cifrado estándar del sector. Esto garantizaba que los datos se encriptaran tanto durante el tránsito como en reposo. Además, para mantener una postura de seguridad sólida, realizamos periódicamente auditorías de seguridad y evaluaciones de vulnerabilidad. Estas medidas proactivas fueron fundamentales para identificar y abordar posibles amenazas a la seguridad, garantizando así la protección de los datos durante todo el proceso de migración
¿Cuáles fueron los retos iniciales a los que se enfrentaron al trasladar las cargas de trabajo de EC2 a Kubernetes?
La transición de las cargas de trabajo de EC2 a Kubernetes planteó varios retos, principalmente la necesidad de dominar el nuevo entorno de Kubernetes con una experiencia previa limitada. Para hacer frente a esto, iniciamos un amplio programa de actualización que incluía sesiones de formación y talleres para mejorar la competencia de nuestro equipo. La adaptación a las complejidades de la infraestructura de Hyperforce también fue crucial, ya que requirió ajustes significativos y pruebas exhaustivas para garantizar la compatibilidad de la carga de trabajo.
Cuidado con el entorno Kubernetes
La depuración supuso un reto particular debido a nuestra falta de familiaridad inicial con Hyperforce. Respondimos desarrollando una documentación detallada para definir las responsabilidades del equipo y agilizar el proceso de depuración. Las sesiones semanales regulares de depuración y aprendizaje nos ayudaron a abordar los problemas de forma proactiva, mientras que los problemas persistentes se comunicaban a la dirección para su rápida resolución. Este enfoque estructurado fue clave para gestionar con éxito las complejidades de la migración y lograr una transición sin problemas a Kubernetes.
Diagrama representativo de Trino en Kubernetes.
Diagrama representativo de Trino en Kubernetes
¿Qué innovaciones específicas internas se desarrollaron para hacer frente a las dificultades de la migración?
Nuestro equipo ha desarrollado numerosas innovaciones clave en la empresa:
- Kubernetes Resource Controller (KRC) Framework: este marco se creó para automatizar el despliegue dinámico de recursos en función de la demanda, mejorando significativamente la capacidad de gestionar las cargas de trabajo y optimizar la utilización de los recursos.
- Kubernetes Resource Controller (KRC) Framework
- Ductos de IC/CD: Se implementaron tuberías de integración continua y despliegue continuo para automatizar el proceso de despliegue, reduciendo la intervención manual y minimizando los errores, lo que agilizó los flujos de trabajo y mejoró la eficiencia operativa.
- Mejora de la observabilidad: Se mejoraron las métricas para lograr una mejor observabilidad en todos los sistemas.
- Mejora de la observabilidad
- Integración de discos SSD: los discos SSD conectados a nodos se hicieron accesibles a los pods, mejorando las capacidades de almacenamiento.
- Resolución de problemas de PTT y PTE: los problemas relacionados con las terminaciones de pods y las actualizaciones de grupos de conexiones se solucionaron ajustando los hilos de conexión y los tiempos de espera a nivel de malla, y configurando los pods para que se apaguen con elegancia manteniendo la disponibilidad para las operaciones en curso.
- Mecanismos de autoescalado: El autoescalado se introdujo para permitir que la infraestructura se ajustara automáticamente a las cargas de tráfico, garantizando un rendimiento y una eficiencia de costes óptimos.
- Mecanismos de autoescalado
Estas innovaciones redujeron significativamente los costes de computación en un 54% y aceleraron los plazos de migración, completando la migración en seis meses para los entornos canarios y en nueve meses para todos los entornos.
Paneles de control de CTS que muestran la reducción de costes semanal tras la migración.
Distribución de los costes
![](https://engineering.salesforce.com/wp-content/uploads/2024/07/image_9caa6a.png?w=1024)
Paneles de control de CTS que muestran la reducción de costes mensual tras la migración.
Distribución de costes
¿Qué estrategias utilizó su equipo para optimizar la utilización de los recursos en el nuevo entorno Kubernetes y cómo mejoraron estas estrategias el rendimiento general del sistema?
El equipo implementó varias estrategias:
- Horizontal Pod Autoscaling (HPA): Esta función ajustaba automáticamente el número de réplicas de pods en función de la utilización de la CPU, lo que permitía al equipo gestionar eficazmente las cargas variables sin sobreaprovisionar recursos.
- El equipo implementó varias estrategias
- Ajuste del tipo de instancia: al seleccionar cuidadosamente los tipos de instancia, el equipo garantizó un equilibrio óptimo entre el uso de la CPU y de la memoria en función de los requisitos de la carga de trabajo, maximizando el rendimiento y minimizando los costes.
- Ajuste del tipo de instancia
- Solicitudes y límites de recursos: la configuración de solicitudes y límites de recursos para cada pod permitió a Kubernetes tomar decisiones informadas sobre la programación y la asignación de recursos, mejorando la eficiencia operativa.
- Kubernetes Cluster Autoscaler: esta herramienta ajustaba dinámicamente el tamaño de los clústeres en función de la demanda, lo que permitía a la infraestructura escalar sin problemas con los cambios en la carga de trabajo.
- Los clústeres de Kubernetes pueden escalar sin problemas con los cambios en la carga de trabajo
Estas estrategias mejoraron colectivamente el rendimiento y la rentabilidad del sistema al garantizar un uso óptimo de los recursos y una infraestructura adaptable para satisfacer las demandas cambiantes.
¿Cómo gestionó su equipo los recursos de forma eficaz para garantizar que el proyecto de migración siguiera su curso?
El equipo empleó varios métodos eficaces:
- Priorización cuidadosa y asignación estratégica de tareas: Al evaluar y priorizar continuamente las tareas críticas en colaboración con las partes interesadas, el equipo centró los esfuerzos en áreas de gran impacto, mejorando la eficiencia general.
- Enfoque de equipo colaborativo: Se fomentó una misión unificada entre los equipos de Compute, Query, Service Delivery e Hyperforce. Esta colaboración garantizó la alineación con los objetivos comunes y facilitó un trabajo en equipo sin fisuras.
- Empleo en equipo
- Comunicación global mejorada: Se utilizaron canales de comunicación regulares, incluidas reuniones virtuales y herramientas de colaboración, para mejorar la colaboración en diferentes ubicaciones geográficas. Este trabajo en equipo a escala mundial fue crucial para mantener el impulso y hacer frente a los retos con prontitud.
- Apoyo de los equipos de Data Cloud: el apoyo sustancial de varios equipos de Data Cloud fue fundamental para el éxito del proyecto. Su experiencia y asistencia fueron inestimables a la hora de superar obstáculos y garantizar el acceso a los recursos y conocimientos necesarios.
- Apoyo de los equipos de Data Cloud
- Revisiones periódicas y sesiones de retroalimentación: estas sesiones fueron cruciales para supervisar el progreso y abordar los problemas con rapidez, garantizando que los posibles contratiempos se gestionaran rápidamente.
Más información
- Lea este blog para saber cómo el equipo de Data Cloud está escalando volúmenes de datos masivos y reduciendo drásticamente los cuellos de botella en el rendimiento.
- Siga conectado: únase a nuestra Comunidad de talento
- Consulta nuestros equipos de Tecnología y Producto para saber cómo puedes participar.