Ayer, Evernote sufrió una interrupción del servicio entre las 4:00 y las 6:30 EDT. A las 9:30, todos los usuarios que iniciaron sesión ya podían usar la aplicación con normalidad. Para intentar limitar los comportamientos malintencionados, limitamos de manera temporal el número de intentos de inicio de sesión que se pueden hacer desde una misma cuenta. Hoy, 5 de octubre, a las 11:30, hemos eliminado este límite de intentos de inicio de sesión.
Estas acciones pueden haber provocado que algunos clientes de Evernote hayan tenido los siguientes problemas: no poder iniciar sesión en Evernote, no poder sincronizar cambios, una falta de respuesta generalizada y una experiencia de producto lenta.
¿Por qué ha ocurrido esto?
Una migración especialmente importante (y complicada)
La interrupción de servicio se activó cuando migramos a una base de datos grande, que es responsable de los inicios de sesión, los nuevos registros y la información relacionada con los perfiles de los usuarios, y sacamos los datos desde la infraestructura básica heredada de Evernote (Monolith).
Durante los últimos meses hemos migrado numerosas partes de la infraestructura básica a un sistema más moderno y fiable. Ayer hicimos la migración final de datos desde Monolith. Una vez finalizada esta tarea, podemos avanzar con la transición de todo el sistema a una infraestructura nueva y, finalmente, llevar las bases de soporte de Evernote a un estado mucho más saludable.
Dejar atrás Monolith para usar una infraestructura más descentralizada ha sido uno de los objetivos del equipo de Evernote desde hace muchos años, y hace unos meses finalmente abordamos esta tarea tan compleja, y necesaria.
Si el nombre de Monolith te resulta familiar, es porque lo mencioné hace poco cuando hablamos sobre cómo estamos preparando las bases de Evernote para el futuro. Básicamente, Monolith es una enorme aplicación de Java Enterprise Edition que se utiliza para almacenar y sincronizar numerosas entidades dentro de Evernote. Monotlith es muy pesada y difícil de gestionar, además, ha acumulado una deuda técnica considerable a través de los años.
Esta última migración ha sido, con mucha diferencia, la más grande y técnicamente complicada hasta la fecha, además de ser una de las más significativas. Una vez superada, por fin hemos desbloqueado el enorme potencial para conseguir mejoras más rápidas y con un mayor impacto de cara al futuro.
Profundicemos en la interrupción del servicio
En nuestros intentos de reducir al mínimo la interrupción del servicio, programamos migrar la base de datos a las 3:30 EDT el 4 de octubre. Sin embargo, cuando la finalizamos y volvimos a conectar a los clientes, Monolith no era capaz de procesar un número de solicitudes más elevado de lo habitual. Por desgracias, nos vimos obligados a reiniciar todo el sistema y volver a introducir el tráfico de manera gradual.
Aquí está la cronología de lo que sucedió (todas las horas se refieren a la banda horaria del este de Estados Unidos):
4 de octubre
03:30 am
- El equipo comenzó la migración programada
04:00 am
- Tras finalizar la migración, nuestros servidores se saturaron por el número de solicitudes entrantes a medida que los clientes intentaban volver a conectar
- Monolith no pudo ampliar su escala para responder a la demanda de los clientes
- Pasamos a la acción de inmediato y tomamos la decisión de bloquear las solicitudes de los clientes de manera temporal, para que los servidores se pudieran reiniciar. Esto provocó la interrupción del servicio
- Durante este tiempo, es posible que los clientes hayan tenido los siguientes problemas:
- Una experiencia lenta y con falta de respuesta en la aplicación
- No poder sincronizar notas, que se mostraba con un estado de sincronización no efectivo o un mensaje de error indicando que la sincronización se había puesto en pausa de manera temporal
- (Si no habían iniciado sesión) No poder iniciar sesión en Evernote, que se mostraba con el mensaje 429 Error (demasiadas solicitudes) o un mensaje indicando que Evernote no estaba disponible de manera temporal
06:30 am
- Cuando los servidores se reiniciaron, comenzamos a permitimos que los clientes se volvieran a conectar y dimos prioridad a las funciones de guardado de notas
- En ese momento, algunos usuarios comenzaron a ver que la funcionalidad de Evernote volvía a ser normal
- Durante las siguientes tres horas, aumentamos el tráfico de manera metódica y gradual, hasta que la mayoría de las funciones básicas de Evernote se restauraron.
09:30 am
- Todos los usuarios que iniciaron sesión podían usar la aplicación con normalidad
- Para seguir protegiendo nuestro sistema, limitamos de manera temporal el número de intentos de inicio de sesión que se pueden hacer desde una misma cuenta
- Esto se hizo para prevenir que nuestro sistema sufriera ataques y se pusiera en peligro su estabilidad o la seguridad de los datos de los clientes
- Lamentablemente, estas limitaciones para posibles atacantes también afectaron a los usuarios legítimos, por lo que algunos tuvieron dificultades para acceder a Evernote cuando intentaron iniciar sesión
5 de octubre
11:30 am
- Limitamos el acceso de manera específica a posibles atacantes y retiramos estas limitaciones para volver a los niveles normales
- Observamos cambios positivos en el rendimiento de Evernote en comparación con los resultados antes de la interrupción del servicio, lo cual significa que la migración había tenido el efecto esperado
- La latencia global es inferior a la que se tenía antes de la migración
- RTE registra una tasa de error inferior a la que se tenía antes de la migración
A partir de este momento, la interrupción del servicio ha finalizado y se considera que la migración se ha completado. Si todavía tienes problemas para iniciar sesión o para sincronizar, ponte en contacto con nuestro equipo para recibir asistencia directa
Mejores procesos en adelante
Ahora que hemos dejado atrás este incidente, estamos haciendo un análisis retrospectivo de los acontecimientos que se produjeron antes y durante la interrupción del servicio para mejorar nuestros procesos en el futuro. Esta reflexión no se centrará solo en los aspectos técnicos, sino también en las comunicaciones. Deberíamos haber sido mucho más efectivos y oportunos en la manera de comunicarnos contigo.
En concreto, nos aseguraremos de que status.evernote.com se actualiza de inmediato en estas circunstancias. No actualizamos esa página hasta ayer a las 10.30 (varias horas después de que comenzaran los problemas), y muchos clientes confusos se pusieron en contacto conmigo después de sufrir los problemas sin tener ninguna información disponible en la página web. Pido disculpas por todo ello.
Las interrupciones de servicio nunca son agradables, y agradezco la paciencia mientras trabajábamos para encontrar una solución. En este caso, la interrupción del servicio fue una consecuencia desafortunada de lo que por otra parte es un desarrollo emocionante para el futuro de Evernote. Espero compartir muchas más actualizaciones (positivas) contigo pronto.
- Federico