Cómo escala nuestra infraestructura junto con nuestros clientes
Publicado: 2022-06-03Nos tomamos en serio ofrecer la mejor experiencia al cliente con nuestro sistema operativo Engagement. Tenemos ambiciones verdaderamente globales para llevar nuestra misión de hacer que los negocios de Internet sean personales para los clientes empresariales más grandes de todo el mundo.
Esta ambición se refleja en la forma en que diseñamos y construimos la infraestructura que respalda la plataforma Intercom. Estamos construyendo a largo plazo, lo que significa garantizar la confiabilidad de forma predeterminada y la capacidad de adaptarse a una escala masiva a medida que crecemos.
Intercom ha estado creciendo y seguirá haciéndolo: muchos de nuestros clientes más antiguos han evolucionado con nosotros a lo largo de los años. A medida que estos clientes existentes crecieron y le dimos la bienvenida a clientes cada vez más grandes, siempre nos enfocamos en decir sí a la escala.
Esta es la tercera publicación de una serie que explora las formas en que Intercom ha escalado funciones clave para satisfacer las necesidades de los clientes empresariales.
Crecemos junto a nuestros clientes
- Desea servir a varios millones de usuarios activos. ¿Puede Intercom hacer eso?
- Debe almacenar varios millones de registros de usuario. ¿Puede Intercom hacer eso?
- Tiene muchos miles de agentes activos que desea que actúen en su espacio de trabajo. ¿Puede Intercom manejar eso?
Sí a todo lo anterior.
Hoy en día, nuestros sistemas se escalan dinámicamente para atender alrededor de 50 000 solicitudes web por segundo en su punto máximo, 26 000 trabajos en segundo plano por segundo y 11 000 solicitudes API públicas por segundo, lo que demuestra nuestra capacidad de escalar continuamente para cumplir con los requisitos de las empresas modernas.
Queremos estar a la altura de sus ambiciones. Eso significa poder acomodar grandes cargas de trabajo de manera confiable y eficaz, y expandirlas continuamente a medida que nuestros clientes crecen con nosotros. Queremos asociarnos verdaderamente con nuestros clientes para asegurarnos de que estamos resolviendo sus problemas, a escala, a largo plazo.
En Intercom, nuestro objetivo es ejecutar menos software
Construimos exclusivamente sobre un conjunto muy pequeño de tecnologías centrales. Esto nos permite desarrollar equipos de expertos en dominios profundos para respaldar y habilitar a los ingenieros de productos a medida que construyen la próxima generación de Intercom, y proporcionar herramientas de observabilidad de clase mundial, escalabilidad, confiabilidad y patrones de construcción seguros por defecto.
Nuestras herramientas permiten una alta disponibilidad
Trabajamos exclusivamente con AWS como nuestro proveedor de servicios en la nube y actualmente brindamos ofertas de alojamiento de datos en tres regiones globales diferentes (EE. UU., UE y Australia), cada una diseñada en varias zonas de disponibilidad para una alta disponibilidad.
Nuestra aplicación de compañero de equipo es una interfaz de Ember.js respaldada por un monolito de Ruby on Rails . La aplicación Rails es el núcleo de Intercom y lo que implementamos en miles de trabajadores web, API y asincrónicos en clústeres dedicados por función.
“Cada año, el Black Friday, cuando muchos de nuestros clientes llegan a su período de mayor actividad, nuestra infraestructura se escala para adaptarse sin intervención humana”
Estos clústeres se escalan automáticamente para atender las solicitudes de los clientes a medida que pasamos por los picos y valles del tráfico de clientes cada día. Por ejemplo, cada año el Black Friday, cuando muchos de nuestros clientes alcanzan su período de mayor actividad, nuestra infraestructura se escala para adaptarse sin intervención humana.
Nuestras herramientas de observabilidad nos permiten monitorear de cerca cómo atendemos el tráfico
Nuestras herramientas de observabilidad aseguran que estemos al tanto de la eficiencia y eficacia con la que atendemos el tráfico por cliente. También nos asociamos estrechamente con AWS en nuevas tecnologías y enfoques diseñados para probar nuestro rápido crecimiento en el futuro.
Además de las métricas estándar y el registro, nuestro monolito Rails se instrumenta automáticamente con trazas ricas en atributos y de alta calidad. Esto permite a los ingenieros observar la producción sin necesidad de escribir ningún código adicional.
Nuestra canalización de observabilidad se basa en Honeycomb Refinery y muestrea dinámicamente solicitudes valiosas para conservar rastros interesantes (por ejemplo, un error de cara al cliente) de forma predeterminada. También tenemos la capacidad de configurar reglas personalizadas para un control total del muestreo.
"Apoyamos el 100 % de retención para brindar a los ingenieros todos los datos que necesitan a medida que desarrollamos nuevas funciones o depuramos problemas de producción"
Fundamentalmente, para las transacciones más valiosas, admitimos una retención del 100 % para brindar a los ingenieros todos los datos que necesitan a medida que desarrollamos nuevas funciones o depuramos problemas de producción. Además, como etiquetamos todos los rastros con el ID de cliente del autor de la solicitud, podemos profundizar en cómo cualquiera de nuestros clientes está experimentando Intercom.
Diferentes almacenes de datos permiten la optimización en varios casos de uso
Ejecutamos varios tipos diferentes de almacenes de datos para admitir nuestros diversos requisitos de lectura y escritura de datos en todas las aplicaciones:
- AWS Aurora MySQL : nuestros almacenes de datos de fuente de la verdad se construyen en gran medida sobre AWS Aurora MySQL. Como parte de nuestro escalado inicial, fragmentamos las bases de datos por función. Una vez que los clústeres de bases de datos individuales crecieron hasta convertirse en las instancias más grandes proporcionadas por AWS Aurora, iniciamos un programa para desarrollar bases de datos por cliente que residen en múltiples clústeres de clústeres de bases de datos más pequeños, que ahora podemos escalar tanto horizontal como verticalmente. Este trabajo se completó a principios de 2020 y la arquitectura nos permite escalar nuestras mesas más grandes indefinidamente.
- Elasticache : Delante de nuestras bases de datos tenemos una capa de almacenamiento en caché memcached construida sobre Elasticache.
- DynamoDB : Usamos DynamoDB con moderación para casos de uso de lectura y escritura muy altos .
La búsqueda es una parte indispensable de Intercom
La búsqueda respalda una gran cantidad de funciones principales de Intercom: Vistas de la bandeja de entrada , API , Artículos , la lista de usuarios, Salida , Informes , Bot de resolución y nuestros sistemas de registro internos.
La búsqueda está impulsada en gran medida por muchos clústeres de Elasticsearch por función . Hemos creado muchas herramientas que automatizan las tareas más laboriosas de Elasticsearch, incluidas la aplicación de parches de seguridad, la actualización y el reemplazo de hardware degradado. También creamos herramientas que nos permiten ejecutar migraciones (de manera similar a MySQL) contra índices.
“Nuestra infraestructura global está diseñada para servir a cientos de miles de empresas, grandes y pequeñas”
Además de mejorar la capacidad de nuestros ingenieros para iterar en el esquema de índices a escala, nos permite dividir índices grandes en índices más pequeños que son más fáciles de administrar y brindan un mayor rendimiento y estabilidad. También nos brinda una dimensión adicional en la que podemos escalar nuestros clústeres de Elasticsearch. Al igual que nuestro enfoque de fragmentación de MySQL, esto nos brinda muchos años de escalabilidad.
La infraestructura global de Intercom está diseñada para la escala de Internet
Nuestra infraestructura global está diseñada para servir a cientos de miles de empresas, grandes y pequeñas, y el rigor que aplicamos para administrar nuestras operaciones de infraestructura garantiza que todo funcione sin problemas.
Al trazar la hoja de ruta, la escalabilidad es un dato clave que todo equipo tiene en cuenta. Nuestras revisiones operativas regulares cuentan con la contribución de expertos en múltiples niveles en nuestros equipos de back-end donde evaluamos las métricas de infraestructura y revisamos los requisitos de capacidad.
Trabajamos duro e inteligentemente para mantenerlo así, y es por eso que nuestros clientes confían en nosotros, desde las nuevas empresas más pequeñas hasta las empresas más grandes del mundo.
Descubra otras publicaciones de la serie Intercom for Enterprise