Un vistazo detrás del telón en Hotmail

Este artículo fue publicado originalmente en inglés por Arthur de Haan, el 22 de diciembre, aquí.

Hola, mi nombre es Arthur de Haan y soy responsable del Área de Pruebas e Ingeniería de Sistemas en Windows Live. Para comenzar, me gustaría mostrarles qué sucede detrás del telón en Hotmail y contarles un poco más acerca de lo que se necesita para crear, implementar y ejecutar el servicio de Windows Live Hotmail a la escala global y masiva en que lo hacemos.

Albergar sus correos electrónicos y sus datos (y nuestros propios datos también) en nuestros servidores implica una gran responsabilidad; por ello, nos tomamos muy en serio la calidad, el rendimiento y la confiabilidad. Realizamos importantes inversiones en ingeniería e infraestructura con el fin de mantener a Hotmail funcionando en óptimas condiciones las 24 horas, en todo momento, año tras año. Pocas veces escucharán sobre estos esfuerzos: solamente leerán sobre ellos en la rara ocasión en la que algo no haya salido como se esperaba y nuestro servicio haya fallado.

Hotmail es un servicio enorme en todas las dimensiones. Aquí les mostramos algunos puntos importantes:

· Somos un servicio global que brinda versiones localizadas de Hotmail en 59 mercados regionales, en 36 idiomas.

· Albergamos mucho más de 1300 millones de bandejas de entrada (algunos usuarios tienen varias bandejas de entrada).

· Más de 350 millones de personas usan activamente Hotmail por mes (fuente: comScore, agosto de 2009).

· Manejamos más de 3000 millones de mensajes por día y filtramos más de 1000 millones de mensajes de correo no deseado (correo que nunca ven en sus bandejas de entrada).

· Aumentamos el almacenamiento en más de 2 petabytes por mes (1 petabyte equivale aproximadamente a 1 millón de gigabytes o a 1000 terabytes).

· Actualmente, contamos con más de 155 petabytes de almacenamiento implementado (70% del almacenamiento es usado con datos adjuntos, por lo general, fotografías).

· Somos la implementación de SQL Server 2008 más grande de todo el mundo (supervisamos y administramos muchos miles de servidores SQL).

Imaginen que la interfaz de usuario de Hotmail que ven en el explorador es solamente la punta del iceberg: muchas innovaciones ocurren debajo de la superficie. En este artículo, brindaré una descripción de gran nivel acerca de cómo está elaborado el sistema. Profundizaremos en algunas características específicas en futuros artículos.

Arquitectura

Hotmail y nuestros otros servicios de Windows Live están albergados en varios centros de datos de todo el mundo. Nuestro servicio de Hotmail está organizado en “unidades de escala” lógicas o clústeres. Además, Hotmail comparte su infraestructura entre los clústeres de cada centro de datos:

· Servidores que manejan correo entrante y saliente.

· Filtros contra correo no deseado

· Agregación y almacenamiento de datos desde nuestros sistemas de supervisión del estado del servicio.

· Infraestructura de respuesta ante incidentes y supervisión.

· Infraestructura para administrar actualizaciones automatizadas de configuración e implementación de códigos.

Un clúster alberga millones de usuarios (la cantidad que alberga depende de la antigüedad del hardware) y es un conjunto autocontenido de servidores, entre los que se incluyen:

· Servidores front-end: servidores que comprueban la existencia de virus y albergan el código que se comunica con sus exploradores o clientes de correo usando ciertos protocolos, como POP3 y DeltaSync.

· Servidores back-end: servidores de almacenamiento de archivos y SQL, filtros contra correo no deseado, almacenamiento de datos de supervisión y de correo no deseado, agentes de directorios y servidores que manejan correo entrante y saliente.

· Equilibradores de carga: hardware y software usados para distribuir la carga de manera más uniforme y así obtener un mejor rendimiento.

Prevenir interrupciones y pérdidas de datos es nuestra prioridad; por tal motivo, tomamos todos los recaudos necesarios para evitar que ocurran. Hemos diseñado nuestro servicio para manejar errores: suponemos que todo aquello que puede fallar, lo hará con el tiempo. Tenemos errores de hardware: al contar con cientos de miles de discos duros en uso es inevitable que algunos fallen. Afortunadamente, debido a los procesos de administración de errores y a la arquitectura con los que contamos, los clientes raramente son afectados por estos errores.

Aquí les mostramos algunos modos en los que contenemos a los errores:

· Redundancia. Utilizamos una combinación de matrices de almacenamiento de servidores SQL para albergar nuestros datos. Usamos tecnologías de conmutación por error activas y pasivas. Esta es una manera elegante de decir que contamos con muchos servidores y muchas copias de sus datos, que están sincronizados constantemente. Si un servidor falla, otro servidor está listo para tomar su lugar en cuestión de segundos. En resumen, conservamos cuatro copias de sus datos en varias unidades y varios servidores con el fin de minimizar la posibilidad de que ocurran pérdidas de datos debido a un error de hardware.

· Otro beneficio de esta arquitectura es que podemos realizar mantenimientos planificados (como implementar actualizaciones de código o revisiones de seguridad) sin que los usuarios sean afectados por el tiempo de inactividad. También duplicamos partes clave de nuestro sistema de red para minimizar la posibilidad de que ocurran interrupciones relacionadas con la red.

· Supervisión. Tenemos un sistema elaborado para supervisar hardware y software. Miles de servidores supervisan el estado del servicio, las transacciones (por ejemplo, el envío de un correo electrónico) y el rendimiento del sistema para los clientes de todo el mundo. Debido a nuestro gran alcance, realizamos un seguimiento de las métricas de rendimiento y tiempo de actividad, tanto en los agregados como en los clústeres, y por área geográfica. Realmente queremos asegurarnos de que sus experiencias individuales nos lleguen y no se pierdan cuando analizamos promedios para todo el sistema. Nos importa la experiencia de cada usuario individual.

· Centro de respuestas. Contamos con un equipo permanente que protege nuestros sistemas de supervisión globales y toma medidas inmediatas cuando ocurre un problema. Tenemos un proceso de escalación que puede reunir a nuestro personal de ingeniería en unos pocos minutos cuando sea necesario.

Proceso de ingeniería

He hablado un poco acerca de nuestra arquitectura y acerca de los pasos que estamos tomando para garantizar un servicio sin interrupciones. No obstante, ningún servicio es estático. Además del crecimiento causado por el uso, lanzamos actualizaciones regularmente. Por ello, nuestros procesos de ingeniería son tan importantes como nuestra arquitectura para brindarles un gran servicio. Desde revisiones hasta pequeñas actualizaciones y lanzamientos importantes, tomamos muchas precauciones durante nuestro proceso de desarrollo y lanzamiento.

Pruebas e implementación.

Por cada desarrollador de nuestro personal, tenemos un ingeniero de pruebas que trabaja junto con él para brindar información sobre el diseño y las especificaciones, establecer una infraestructura de pruebas, escribir y automatizar casos de prueba para nuevas funciones y medir la calidad. Cuando hablamos acerca de la calidad, lo hacemos en el sentido más amplio de la palabra: no solo nos referimos a estabilidad y confiabilidad, sino que también nos referimos a facilidad de uso, rendimiento, seguridad, capacidad de acceso (para clientes con capacidades especiales), privacidad, escalabilidad y funcionalidad en todos los exploradores y clientes que admitimos en todo el mundo.

Dada nuestra escala, esto no es una tarea sencilla y debido a que somos un servicio gratuito financiado, en gran medida, por publicidad, necesitamos ser altamente eficientes en el ámbito operativo. Por lo tanto, la implementación, la configuración y el mantenimiento de nuestros sistemas son sumamente automatizados. La automatización también reduce el riesgo de error humano.

Implementación de códigos y administración de cambios.

Tenemos miles de servidores en nuestro laboratorio de prueba, donde implementamos y probamos los códigos antes de publicarlos para nuestros clientes. En el centro de datos, contamos con algunos clústeres reservados para probar “software de prueba” y versiones beta en las etapas finales de un proyecto. Probamos cada cambio en nuestro laboratorio, ya sea una actualización de código, un cambio de hardware o una revisión de seguridad, antes de implementarlo para nuestros clientes.

Una vez que todos los equipos de ingeniería aprueban una versión (incluida el Área de Pruebas e Ingeniería de Sistemas), comenzamos a actualizar, de forma gradual, los clústeres en el centro de datos para lanzar los cambios a los clientes de todo el mundo. Por lo general, lo hacemos en unos pocos meses; no solo porque lleva tiempo realizar las actualizaciones sin perjudicar a los clientes con tiempo de inactividad, sino también porque nos permite observar y asegurarnos de que no haya ninguna pérdida de calidad ni rendimiento.

También podemos activar o desactivar funciones individuales. Algunas veces, implementamos actualizaciones, pero posponemos o demoramos su activación. En raras ocasiones, hemos desactivado funciones temporalmente, ya sea por razones de seguridad o rendimiento.

Conclusión

Este artículo debe comenzar a darle una idea del tamaño y del alcance de la ingeniería que se usa para prestar el servicio de Hotmail y mantenerlo. Nos comprometemos a brindarles excelencia en ingeniería y mejoras continuas de nuestros servicios. Seguimos aprendiendo a medida que el servicio crece, y tomamos todos sus comentarios con seriedad; por ello, déjenme un comentario con sus opiniones y consultas. Tanto yo como todos los miembros del equipo de Windows Live somos apasionados de nuestros servicios. Podremos ser ingenieros, pero usamos los servicios nosotros mismos, junto con cientos de millones de nuestros clientes.

Arthur de Haan
Director, Pruebas e Ingeniería de Sistemas, Windows Live