2023/08/21

Preparando as bases do Evernote para o futuro

Antes de mergulhar em alguns dos acontecimentos recentes na Evernote, vamos rapidamente falar sobre o grande elefante que está incomodando (não o do logo, o outro).

Houve muitas mudanças nos últimos sete meses, levando alguns usuários a expressar suas incertezas sobre nossas intenções a longo prazo para o Evernote. Sendo bem claro: a Bending Spoons tomou as rédeas para ajudar o Evernote a ter sucesso novamente, não para ganhar um trocado rápido. Nossa visão de longo prazo precisava de algumas dores no curto prazo, e isso é triste. Mas, também era necessário, pois o Evernote não teria sobrevivido, e muito menos tido sucesso de outra forma. Finalmente, o Evernote vai ser muito mais forte por conta disso. De fato, apesar de há alguns meses o futuro do Evernote parecer sombrio, agora podemos olhar para o futuro com um verdadeiro otimismo.

Nosso foco é fazer com que o Evernote seja o seu segundo cérebro seguro e confiável. Um banco de dados rápido e infalível com suas informações mais preciosas que podem ser recuperadas onde e quando você quiser. Esta ideia não é nova, na verdade, ela é a base sobre a qual o Evernote foi construído há quase 20 anos. Mas, como administradores do Evernote, nossa prioridade imediata é fazer com que as bases sejam bem mais sólidas do que têm sido, e finalmente entregar esta visão compartilhada há décadas.

Então, a dúvida que temos é essa: como podemos entregar o eternamente confiável e incrivelmente rápido produto que você precisa? A resposta é longa e não é direta, mas vou me esforçar para me expressar neste post e em outras comunicações de agora em diante.

Um último comentário antes de começar: o que vem a seguir não é tudo que faremos. Eu limitei o post em três áreas chave, mas há muito mais acontecendo que vocês saberão na hora certa.

Um primeiro passo importante: velocidade e sincronização

Cada jornada começa com um primeiro passo. O nosso aconteceu em maio de 2023 quando apresentamos o novo processo de sincronização que é o responsável pela Edição em tempo real (RTE). Nosso objetivo era trazer para você a sincronização de nota mais rápida que temos com edição integrada simultânea em vários dispositivos. Ao mesmo tempo, buscamos acabar com os conflitos de mesma nota.

Este projeto ambicioso precisava que apresentássemos uma nova estrutura de dados (Tipos de dados replicados sem conflitos ou CRDT), impulsionada por uma forte implementação (Yjs), que nos permite sincronizar o conteúdo de suas notas de maneira instantânea em todos os seus dispositivos, algo que não era possível com o formato de nota estilo HTML anterior.

Fico feliz em compartilhar que a implementação desta importante nova estrutura e sistema foi concluída. O período de transição teve seus desafios, mas implementar algo tão fundamental como a ETR inevitavelmente traz a possibilidade de perturbações, mesmo após uma preparação extensiva e resolução de problemas preventiva. Estávamos preparados para encontrar algumas dificuldades no caminho e estávamos confiantes na nossa capacidade de superá-los. Aprendemos muito com este esforço. E a experiência de usuário Evernote agora é consideravelmente mais suave e confiável para a grande maioria.

Velocidade: resolvendo os últimos problemas

Apesar de ser algo positivo na soma dos fatores, a introdução da nova sincronização que viabiliza a ETR fez com que alguns usuários passassem por lentidão no carregamento das notas. Parte disso era esperada: a primeira vez que uma nota é aberta com o novo sistema de notas ETR, ela precisa passar por um processo de conversão e precisa de alguns segundos para carregar. Após essa primeira vez, as notas devem abrir e sincronizar de maneira instantânea.

Porém, alguns usuários relataram tempos de carregamento muito mais lentos, mesmo após as notas serem convertidas para ETR. O problema era causado pelo processamento de nota do sistema em alguns casos muito particulares, o que levou à geração anormal de grandes histórias. Além do tempo de carregamento mais lento, observamos que isso estava aumentando a probabilidade de outros problemas, como falta de conteúdo e sincronização de tarefa.

Assim que identificamos a causa, rapidamente implementamos as soluções necessárias. Isso envolvia corrigir três erros de desempenho nos bastidores (correções lançadas em 15 de junho, 27 de junho e 20 de julho, e desde então colocamos estas correções para a comunidade de código aberto na biblioteca Yjs). Quase que imediatamente vimos o retorno do tempo de carregamento de nota em contas afetadas. Encorajamos qualquer pessoa que ainda esteja passando por um problema para se certificar que estejam usando a versão mais recente do Evernote, depois entrar em contato com o suporte se isso persistir.

Navegação: alterações importantes nos bastidores

Algumas das melhorias que estamos fazendo acontecem no núcleo do produto, longe da experiência diária do usuário no Editor. A mais importante delas é a reescrita completa do sistema de navegação do Evernote Desktop e Web, que ocorreu no final de julho (versão 10.59). No mobile, o sistema de navegação também foi altamente atualizado no mesmo período (versão 10.52). Essencialmente, o sistema de navegação determina como todos os diferentes componentes do aplicativo se relacionam um com o outro. No mobile, a mudança é quase que invisível, mesmo com a navegação agora usando APIs nativas, que ajudam a melhorar o desempenho. A única dica está na nova estrutura de URL no desktop:

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

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

O que parece ser uma pequena alteração cosmética, na verdade é a chave que libera nossa capacidade para facilmente expandir o sistema de navegação conforme o produto evolui no futuro.

Migração do Monolito

Outra alteração essencial, porém invisível que está dando muito trabalho a várias equipes é a migração do Monolito. Vou precisar ser um pouco nerd agora, me aguentem.

O status quo

O Monolito é um aplicativo Java Enterprise Edition (JEE) antigo que roda a maior parte da lógica de negócio do Evernote no backend. Por isso, ele viabiliza o armazenamento e sincronização de várias entidades, incluindo notas.

Antes de começarmos nosso trabalho, o banco de dados rodava na mesma máquina que a camada de aplicativos (JEE para aplicativo, MySQL para o banco de dados). Isso deixava as máquinas muito pesadas e difíceis de serem gerenciadas. Tanto a base de código quanto a infraestrutura que vinha junto tinham uma dívida técnica significativa. Felizmente, os microsserviços como ETR estão nos ajudando a nos separar desta abordagem.

O que vem por aí

Nossa abordagem é focar em limpar a base de códigos e pagar esta dívida técnica. Já estamos fazendo grande progresso com a infraestrutura. Recentemente, reescrevemos toda a infraestrutura de produção usando tecnologias modernas.

Ao fazer essa reescrita, também separamos o aplicativo e banco de dados. O banco de dados agora está sendo migrado para uma nova e muito mais moderna infraestrutura, que melhora de maneira significativa a segurança e confiança. Antes, a configuração era gerenciada por Puppet. Agora, tudo está empacotado em um container Docker. Este novo ambiente de produto é muito mais semelhante ao do desenvolvimento, o que ajuda os desenvolvedores e significa que é muito mais fácil de verificar que mudanças que implementamos possuam o efeito desejado. Resumindo, menos erros, e correção mais fácil para os que ocorrerem.

O trabalho não para por aí

Nos próximos meses, estamos apostando na resolução de erros para garantir uma experiência completamente suave em todas as plataformas. Além disso, também estamos planejando melhorar a confiabilidade de Tarefas sincronizando e melhorar de maneira significativa a velocidade no cliente Evernote (tenho alguns testes antecipados que estão dando grandes resultados no cliente Web, que espero compartilhar com vocês em breve).

E apesar dos recursos núcleo e experiência serem nossa prioridade número um hoje, isso não significa que estamos ignorando a importância da inovação. Um pequeno grupo de usuários (funcionários e Especialistas Evernote) já está testando a Pesquisa IA, e o feedback tem sido emocionante e encorajador. Mas, nossos planos ambiciosos começam ao nos certificar que as bases são sólidas. Após isso, o céu é o limite.

Até a próxima,

Federico