29 de novembro de 2021

Uma espiada sob as capas da proteção Datto SaaS

Por Ken Ringdahl
Backup e RecuperaçãoBackup SaaSDatto Backup para Microsoft Azure

Todos sabemos que a migração para a infraestrutura em nuvem e para serviços hospedados na nuvem vem crescendo rapidamente há muito tempo — e a pandemia apenas acelerou esse crescimento. O serviço SaaS Protection da Datto protege ofertas de SaaS, como o Microsoft 365 e o Google Workspace (anteriormente conhecido como G Suite). Muitas vezes, um crescimento rápido traz consigo mudanças significativas e, ocasionalmente, também instabilidade. Mesmo para empresas como a Microsoft e o Google, que operam em hiperescala, esse crescimento acelerado pode gerar problemas.

A Datto é especializada em proteção de dados, o que significa que a qualidade, a confiabilidade e a resiliência estão na vanguarda de nossas prioridades de engenharia. O ano passado testou todos nós nessas áreas-chave. Somos uma organização ágil que está sempre se adaptando e fazendo melhorias incrementais. Nesta postagem do blog, destacarei alguns dos desafios recentes que encontramos, as medidas que tomamos e nossos planos para o futuro a fim de oferecer o melhor serviço da categoria para proteger cargas de trabalho de SaaS.

Embora ofereçamos suporte ao Microsoft 365 e ao Google Workspace, vou me concentrar especificamente no M365 porque ele representa uma maioria crescente de nossa base de clientes. No entanto, muitos desses mesmos tópicos se aplicam de forma semelhante ao Google Workspace.

APIs da Microsoft

As APIs da Microsoft estão passando por uma transição das APIs legadas específicas de cada serviço (por exemplo, Exchange Online, SharePoint, OneDrive) para a API Graph. Temos migrado rapidamente para a API Graph, e todo o nosso novo desenvolvimento é feito nessa API. Já faz algum tempo que é assim. Estamos cientes de todas as datas de descontinuação das APIs específicas de cada serviço e estamos bem adiantados em relação a cada uma delas. Estamos acelerando a transição conforme a necessidade, já que algumas APIs legadas específicas de serviços têm datas fixas de fim de vida útil (EOL). Há duas situações relacionadas às APIs que gostaria de destacar:

  • As APIs estão mudando o que retornam: estamos observando que o comportamento das APIs da Microsoft está mudando com bastante frequência. A assinatura das APIs não muda, pois essa é uma política padrão para desenvolvedores. No entanto, os resultados retornados pelas chamadas às APIs podem mudar (e de fato mudam) sem aviso prévio. Por exemplo, podemos receber regularmente um valor de string específico que muda, ou receber códigos de erro diferentes a partir das mesmas chamadas. Tenho visto nossos concorrentes mencionarem publicamente esse tipo de mudança. Para usar uma expressão comum hoje em dia, estamos todos no mesmo barco. As APIs que usamos são as mesmas que nossos concorrentes utilizam (com uma exceção, descrita no próximo item). Isso significa que, se estamos enfrentando erros ou exceções devido a um problema da Microsoft, há uma grande probabilidade de que outras soluções também estejam enfrentando o mesmo.
  • Usar uma API beta é arriscado: a Microsoft disponibiliza certas funcionalidades por meio de APIs beta, a fim de obter feedback em tempo real de seus parceiros e clientes mais próximos. A Datto, como parceira estratégica da Microsoft, utiliza regularmente APIs beta para projetar e desenvolver novos recursos para nossos parceiros e clientes finais o mais rápido possível. Por exemplo, tivemos o orgulho de ser os primeiros a lançar no mercado o suporte ao backup nativo do Microsoft Teams no ano passado. No entanto, não sacrificaremos a estabilidade e a confiabilidade em prol da velocidade. As APIs beta da Microsoft, assim como todo código e funcionalidade em fase de pré-lançamento, apresentam riscos inerentes. Ao contrário do que mencionei acima, as APIs beta podem violar políticas padrão (por exemplo, uma alteração de assinatura) ou, muito provavelmente, ser descontinuadas completamente com pouco ou nenhum aviso prévio. Simplesmente não utilizamos APIs beta em produção devido a esse risco. Fique atento a qualquer fornecedor que não adote uma prática semelhante, pois isso representaria um risco inerente à capacidade de proteger e recuperar seus dados.

Assim como muitos provedores de serviços em nuvem, a Microsoft implementa limitação nas chamadas de API para garantir uma alta qualidade de serviço. Durante os horários de pico, a Microsoft prioriza certas chamadas de API em detrimento de outras. Por exemplo, uma solicitação de usuário (como a recuperação de uma mensagem por meio de um cliente de usuário final) terá prioridade sobre uma solicitação de aplicativo de terceiros, como a do Datto SaaS Protection. Quando nossas chamadas de API são limitadas, recebemos um código de erro específico, normalmente “429 Too Many Requests”. Uma vantagem que temos, tanto como desenvolvedores quanto como operadores do serviço — ao contrário de um Fornecedor Independente de Software (ISV) que licencia seu software a um provedor terceirizado —, é que temos acesso a uma enorme quantidade de dados de telemetria. Fizemos investimentos significativos na análise desses dados com o objetivo específico de tornar nosso serviço mais eficiente e confiável. Um exemplo concreto disso é uma mudança que fizemos no início deste ano para agendar estrategicamente os backups em horários do dia em que observamos o menor número de erros de limitação. Isso aumentou significativamente nossa taxa geral de sucesso nos backups.

Eventos da Microsoft

Muitos serviços de nuvem que estão passando por um hipercrescimento semelhante ao que o M365 vem experimentando, especialmente nos últimos 18 meses, precisam fazer mudanças para acompanhar a demanda. Isso envolve não apenas a adição de novos recursos, mas também a adição de infraestrutura para suportar a demanda. Houve dois eventos no ano passado que tiveram um impacto significativo em nosso serviço.

O primeiro incidente desse tipo ocorreu em 15 de março, quando houve uma interrupção global no sistema de autenticação. Esse foi um evento amplamente divulgado e afetou tanto os usuários finais quanto os provedores de serviços. Para nós, isso causou um grande aumento nas solicitações de suporte ao Datto SaaS Protection, que mais que dobraram o volume de suporte previsto para o mês de março. Atender a todas as solicitações de suporte levou tempo e gerou um acúmulo significativo de casos pendentes. Desde então, fizemos mudanças nos processos e na equipe para podermos lidar com um evento desse tipo, caso ele venha a ocorrer novamente no futuro.

Praticamente ao mesmo tempo em que ocorreu o problema de autenticação, também observamos erros em um de nossos links de peering na região dos EUA. A Microsoft oferece um serviço de peering que proporciona menor latência e maior confiabilidade para o tráfego de/para serviços da Microsoft, como o M365 e o Azure. Investimos nesses links quando atingimos um determinado nível de escala em uma determinada região. O uso de links de peering é mutuamente benéfico para a Datto e nossos parceiros. Na região dos EUA, temos vários links de peering para nossos data centers, dos quais apenas um estava apresentando erros, o que dificultou o diagnóstico do problema exato. O maior desafio para identificar a causa raiz dos erros nos links de peering foi o fato de estarmos recebendo apenas erros da API da Microsoft, que se pareciam exatamente com os erros que recebemos durante a interrupção da autenticação. Devido à coincidência de tempo, esses problemas se somaram, criando uma tempestade perfeita e provocando um aumento repentino no número de tickets de suporte.

O último evento relevante da Microsoft ocorreu em dias consecutivos em maio. Nossos sistemas de monitoramento e alertas identificaram rapidamente um problema, pois nossos KPIs começaram a cair vertiginosamente. Após investigação, identificamos a causa raiz como uma falha na negociação TLS. A Microsoft estava aplicando atualizações contínuas às versões e algoritmos de criptografia TLS aceitos. Já estávamos usando o TLS v1.2. No entanto, a Microsoft selecionou manualmente um conjunto específico de algoritmos de criptografia dentro do TLS v1.2 que só aceitaria. Como essa mudança não foi bem comunicada, abrimos um ticket de interrupção de produção junto à Microsoft. Só posso supor que outros fornecedores tenham feito o mesmo, pois logo em seguida a Microsoft interrompeu as atualizações contínuas e reverteu as mudanças (algo realmente muito raro). Infelizmente, a Microsoft recomeçou a aplicar essas atualizações apenas 24 horas depois. Estávamos testando as alterações nas cifras, mas tivemos que mudar rapidamente para implantar as alterações de TLS em nossa frota. Isso nos deu a oportunidade de estabelecer uma parceria com a Microsoft para definir um esquema de comunicação adequado, a fim de nos alertar corretamente sobre essas mudanças no futuro. Acredite ou não, nem mesmo nossos contatos de suporte premium estavam cientes dessa manutenção.

Nossa parceria com a Microsoft

Dada a importância da Microsoft para nós e nossos clientes, estamos fazendo investimentos significativos nesse relacionamento. Há algumas coisas a serem destacadas em particular:

  • Tivemos um contrato de suporte ao desenvolvedor premium da Microsoft nos últimos dois anos. Isso permite que um gerente de suporte dedicado ajude a escalar nossos tíquetes de suporte e também fornece acesso a recursos técnicos adicionais.
  • Além do contrato de suporte premium ao desenvolvedor, adquirimos blocos de horas de consultoria para desenvolvedores conforme a necessidade. Usamos isso de algumas maneiras diferentes:
    • Quando estamos criando uma nova funcionalidade, podemos recorrer a um especialista em uma determinada área que pode revisar nosso projeto e lógica para garantir que estamos usando as APIs corretas e interpretando os dados da maneira apropriada. É uma maneira conveniente de obter um especialista da Microsoft para ajudar no projeto e na revisão de nossa solução.
    • Para casos de suporte específicos que achamos que não estão recebendo a devida atenção, podemos usar essas horas de consultoria para obter a atribuição de um recurso dedicado. De certa forma, estamos pagando para obter atenção mais oportuna para alguns dos nossos problemas mais importantes com a Microsoft. Às vezes, isso faz com que a Microsoft tenha que fazer uma alteração no código, o que pode levar um longo período de tempo. Outras vezes, eles podem sugerir uma solução alternativa para evitar completamente o problema.
  • Por fim, do ponto de vista do suporte da Microsoft, estamos adicionando uma opção ao nosso suporte premium que permitirá que nossos parceiros e clientes trabalhem em conjunto conosco em um tíquete da Microsoft. Isso não apenas proporcionará transparência no status, mas também reduzirá o tempo de ciclo em determinados tíquetes. Muitas vezes nos tornamos a pessoa no meio (ou seja, a Microsoft nos pede para perguntar algo ao parceiro ou ao cliente final e vice-versa). Acreditamos que isso fará uma grande diferença em situações específicas e é apenas mais um valor agregado que podemos oferecer.
  • Com o Datto Backup for Microsoft Azure agora em Acesso Antecipado, não somos apenas parceiros da Microsoft, mas também um importante cliente emergente. Temos um incentivo mútuo para tornar nossa parceria um grande sucesso. É realmente uma situação em que todos saem ganhando (Datto, Microsoft e nossos parceiros).

Acabamos de arranhar a superfície de algumas das histórias e desafios técnicos que encontramos. Volte para ver os próximos blogs com foco em diferentes aspectos da proteção Datto SaaS.

Sugestões para as próximas leituras