2023/08/21

Preparando los cimientos de Evernote para el futuro

Antes de entrar de lleno en algunos de los desarrollos más recientes de Evernote, vamos a hacer un repaso rápido del elefante en la habitación (bueno, el otro).

En los últimos siete meses hemos vivido muchísimos cambios, lo que ha llevado a algunos de nuestros usuarios a mostrarse desconcertados sobre las intenciones que tenemos para Evernote a largo plazo. Vamos a ser claros: Bending Spoons ha tomado las riendas de Evernote para ayudarla a prosperar, no para dar un pelotazo. Nuestro objetivo a largo plazo requería algunas decisiones difíciles a corto plazo, lo cual es muy triste. Pero también era necesario, pues de lo contrario Evernote no habría sobrevivido y mucho menos prosperado. En última instancia, Evernote será mucho más sólido por todo ello. En efecto, mientras que hace unos meses la suerte de Evernote era bastante negra, ahora podemos mirar al futuro a largo plazo con verdadero optimismo.

Nuestro objetivo es que Evernote se convierta en un segundo cerebro para ti, seguro y fiable. Una base de datos rápida e infalible de tu información más preciada, que puedas recuperar fácilmente cuando y donde quieras. Esta idea no es nueva, de hecho, son los cimientos sobre los que se construyó Evernote hace casi 20 años. Pero como administradores de la empresa, nuestra prioridad inmediata es hacer que los fundamentos sean mucho más sólidos de lo que han sido hasta ahora y cumplir esta visión compartida durante décadas.

Así que la pregunta que nos ahora nos planteamos es: ¿Cómo podemos ofrecerte el producto fiable y rápido que necesitas? La respuesta es larga y no es sencilla, pero haré todo lo posible por expresarla en este blog y en otros comunicados futuros.

Unas últimas palabras antes de empezar: Lo que viene a continuación no es para nada exhaustivo. He limitado esta publicación a tres áreas fundamentales, pero hay muchas más cosas sobre las que iré informando en su momento.

Un primer paso importante: Velocidad y sincronización

Todo viaje comienza con un primer paso. El nuestro comenzó en mayo de 2023, cuando presentamos el nuevo proceso de sincronización que impulsa la edición en tiempo real (RTE). Nuestro objetivo era ofrecerte la sincronización de notas más rápida hasta la fecha, con edición de notas simultánea y sin interrupciones en varios dispositivos. Al mismo tiempo, nos habíamos propuesto acabar con los conflictos entre notas.

Para hacer realidad este ambicioso proyecto era necesario que introdujésemos una nueva estructura de datos (tipos de datos replicados sin conflictos, o CRDT, por sus siglas en inglés) impulsada por una sólida implementación (Yjs), que nos permite sincronizar el contenido de las notas al instante en todos tus dispositivos, algo que no era posible con el formato de nota de estilo HTML anterior.

Me complace comunicaros que la implementación de esta importante nueva estructura y sistema ha concluido. Tuvimos algunas dificultades durante el período de transición, pero la implantación de algo tan fundamental como RTE conlleva inevitablemente la posibilidad de interrupciones, incluso después de una preparación exhaustiva y una resolución preventiva de problemas. Estábamos preparados para encontrar algunos baches en el camino y confiábamos en nuestra capacidad para superarlos. Hemos aprendido mucho con este esfuerzo y la experiencia de usuario de Evernote es ahora mucho más fluida y fiable para la inmensa mayoría.

Velocidad: alisando las arrugas

A pesar de tener una posición neta positiva, la introducción de la nueva sincronización que impulsa RTE hizo que algunos usuarios de Evernote notaran una ralentización al cargar sus notas. En parte, era de esperar: La primera vez que se abre una nota con el nuevo sistema de notas RTE, tiene que pasar por un proceso de conversión y tarda unos segundos en cargarse. Después de esta primera vez, las notas deberían abrirse y sincronizarse al instante.

No obstante, según algunos usuarios los tiempos de carga de las notas eran muchísimo más lentos, incluso después de convertir las notas a RTE. El problema se debía al procesamiento de notas del sistema en algunos casos muy concretos, lo que generaba enormes historiales anómalos. Además de la lentitud en la carga de las notas, observamos que esto hacía aumentar la probabilidad de que se produjeran otros problemas, como la falta de contenido y la sincronización de tareas.

Una vez que identificamos la causa, implementamos rápidamente las soluciones necesarias. Corregimos tres errores relacionados con el rendimiento dentro del backend (correcciones publicadas el 15 de junio, el 27 de junio y el 20 de julio; desde entonces hemos contribuido con estas correcciones a la comunidad de código abierto en la biblioteca Yjs). Casi de inmediato, comprobamos que los tiempos de carga de las notas en las cuentas afectadas volvían a la normalidad. Recomendamos que los usuarios que sigan teniendo algún problema usen la versión más reciente de Evernote y que si el problema persiste, se ponga en contacto con atención al cliente.

Navegación: Cambios importantes en segundo plano

Algunas de las mejoras que hemos implementado tienen lugar en lo más profundo del producto, lejos de la experiencia diaria del usuario en el Editor. La más importante es la reescritura completa del sistema de navegación web y de escritorio Evernote que tuvo lugar a finales de julio (versión 10.59). En dispositivos móviles, el sistema de navegación también se actualizó a fondo en el mismo período (versión 10.52). Básicamente, el sistema de navegación determina cómo se relacionan entre sí los distintos componentes de la aplicación. En dispositivos móviles, el cambio es casi imperceptible, aunque la navegación utiliza ahora API nativas, lo cual ayudará a mejorar el rendimiento. La única pista está en la nueva estructura de URL del escritorio:

www.evernote.com?b=<notebookID>&n=<noteID> →

www.evernote.com/notebook/<notebookID>/note/<noteID>

Lo que parece un pequeño cambio estético es en realidad la llave que abre nuestra capacidad de ampliar fácilmente el sistema de navegación a medida que el producto vaya evolucionando en el futuro.

Migración de Monolith

Otro cambio invisible pero fundamental que está requiriendo mucho trabajo de varios equipos es la migración del Monolith. Ahora me tengo que poner un poquito friki, tened paciencia.

El statu quo

Monolith es una antigua aplicación Java Enterprise Edition (JEE) que ejecuta la mayor parte de la lógica empresarial de Evernote en el backend. Como tal, impulsa el almacenamiento y la sincronización de varias entidades, incluidas las notas.

Antes de que empezásemos a trabajar, la base de datos se ejecutaba en la misma máquina que la capa de aplicación (JEE para la aplicación, MySQL para la base de datos). Esto hacía que las máquinas fueran sumamente pesadas y difíciles de gestionar. Tanto el código base como la infraestructura subyacente habían acumulado una importante deuda técnica. Afortunadamente, microservicios como el RTE nos están ayudando a alejarnos de este enfoque.

Qué viene ahora

Ahora nos centramos en limpiar el código base y pagar la deuda técnica. Ya estamos avanzando de manera significativa con la infraestructura; en efecto, hace poco reescribimos toda la infraestructura de producción usando tecnologías modernas.

Al reescribirla, también hemos separado la aplicación y la base de datos. La base de datos se está migrando ahora a una infraestructura nueva y mucho más moderna, lo cual mejora la seguridad y la fiabilidad de manera sustancial. Antes, la configuración se gestionaba con Puppet; ahora, todo se empaqueta como un contenedor Docker. Este nuevo entorno de producción es mucho más parecido al de desarrollo, lo cual ayuda a los desarrolladores y es mucho más fácil verificar que los cambios que implementamos tienen el efecto deseado. En resumen, se producen menos errores y los que se producen se solucionan más rápidamente.

El trabajo no termina aquí

En los próximos meses vamos a duplicar nuestros esfuerzos para resolver errores y garantizar una experiencia 100% fluida en todas las plataformas. Además, también tenemos previsto mejorar la fiabilidad de la sincronización de Tareas y mejorar de forma significativa la velocidad en el cliente de Evernote (tengo algunas pruebas iniciales que están dando resultados excelentes en el cliente Web y que confío en compartir con vosotros muy pronto).

Y aunque las funciones básicas y la experiencia son nuestra principal prioridad hoy día, esto no significa que estemos pasando por alto la importancia de la innovación. Un pequeño grupo de usuarios (empleados y expertos en Evernote) ya está probando la búsqueda impulsada por IA, y los comentarios han sido entusiastas y alentadores. Pero nuestros ambiciosos planes empiezan por asegurarnos que nuestros cimientos son sólidos como una roca. A partir de ahí, el cielo es el límite.

Hasta la próxima,

Federico