Esclarecimento sobre as últimas instabilidades

por: Gustavo Rios   August 22, 2015 20:43 em General

Caros e estimados clientes,

Nas últimas semanas o sistema VTEX tem se comportado de uma maneira pior do que todos nós achamos adequada. Essa instabilidade percebida está longe do nível de serviço que queremos prestar a todos vocês.

Esse post tem o objetivo de explicar este momento.

Antes de entrar em detalhes, é importante ressaltar que a VTEX e os clientes VTEX valorizam dois principais aspectos de um sistema de e-Commerce: estabilidade e evolução contínua. O mercado de internet tem 20 anos de idade, representa menos que 5% das vendas do varejo físico, que tem mais do que 100 anos de idade, na forma como o conhecemos. Todos nós não temos dúvida de que há muito trabalho, muita evolução, muita inovação a ser feita para que a internet seja o canal preferencial de compras.

A VTEX é comprometida com essa evolução e adaptação. Vocês possuem e continuarão com a melhor ferramenta de e-Commerce por muitos e muitos anos. Nosso modelo de negócios permite, nossa equipe é comprometida e nosso sonho é grande.

Quanto à estabilidade: É fácil ser estável, basta não se mexer. Quantas vezes um sistema de banco cai? Quase nunca. Mas sabemos que os sistemas dos bancos são feitos em linguagens obsoletas e não evoluem, em seu core, há muitos anos. A grande diferença é que os bancos, principalmente os brasileiros, estão na posição mais cômoda do mundo: ninguém os desafia, eles não estão com a missão de conquistar uma massa de novos clientes todo ano. Quem não se mexe, na maioria das vezes, perece. Como uma pessoa em ótima forma, se ela interromper a rotina de exercício que a fez chegar à forma que estava, ela, bem rápido, fica “mole” e vulnerável, inclusive a doenças. Até os bancos, se não se “exercitarem”, podem pegar e morrer pelo vírus Paypal algum dia.

Os varejistas do mundo todo têm que se exercitar no campo da internet, somos uma criança que nunca nem esteve em forma. Há muito trabalho para chegar lá. A VTEX é um dos equipamentos que o varejista tem para alcançar a forma e para isso, também precisamos nos mexer para atender aos desejos e ambições de todos vocês.

É aí que entra o grande compromisso entre evolução e estabilidade.

A instabilidade causada pela evolução no sistema que fizemos ultimamente não é aceitável, nós sabemos disso, e é importante que nós digamos o óbvio: não antevemos a instabilidade que a mudança descrita abaixo fosse causar.

Deveríamos ter tomado outras precauções e ações, que só agora sabemos que elas existem (porque aprendemos). Mas também é importante lembrar de outro aspecto: Todos nós, varejistas e VTEX, não temos a opção de não evoluir.

A VTEX tem certeza disso: no último ano, fizemos 8000 releases em produção, resultado de 100000 releases em beta. São em média 30 releases por dia, a maioria deles trazendo inovação ao mercado, sem comprometer a estabilidade tão importante nesse mercado.

Entre janeiro e junho de 2015 atingimos um nível de SLA de 99,7%, foram 6 meses com pouquíssimas interrupções.

Quem participou conosco no último Black Friday pôde comemorar o grande resultado que conseguimos. Realmente foi um sucesso mas ficamos com um ponto que poderia ter sido melhor, o tempo de atualização de um produto na loja.

Durante um curto período, a loja apresentava na vitrine uma informação ainda desatualizada. Qualquer atributo atualizado no produto (estoque, regra de parcelamento, preços e promoções) passa por algumas etapas até ser atualizado na loja.

Os nossos clientes mais antigos devem lembrar do tempo em que esta atualização poderia durar até 2 horas. Depois reduzimos para uma hora e hoje fica em torno de 30mins.

Além destas oportunidades acima, temos também um grande desafio pela frente, o Black Friday. Este evento acaba sendo um grande combustível para evoluirmos nossa plataforma e tem sido assim nos últimos anos onde terminamos sempre com uma plataforma melhor.

Diante deste cenário, tivemos que rever alguns conceitos básicos da nossa arquitetura.

Trabalhamos em uma arquitetura orientada a serviços (SOA) onde possuímos serviços distribuídos como (Checkout, Portal, Logistics, Pricing e etc) conectados através de interfaces.

Antigamente, a comunicação entre os serviços na loja virtual funcionava de forma distinta entre:

  • Portal (Home,Departamento, Busca, Página de produtoo, Landing pages)
  • Checkout (Carrinho, Identificação e Checkout)

Para montar a vitrine, o portal solicitava informação basicamente de três outros serviços:

  • Princing (preço, parcelamento e promoções)
  • Logistics (SLA de entrega)
  • Availability (Disponibilidade do produto)

O checkout acessava os três módulos acima e também o próprio Portal para montar o carrinho.

 

Embora a fonte de informação seja a mesma para Portal e Checkout, existiam algumas regras de negócio implementadas, em cada um destes serviços, que provocavam inconsistência da informação.

Casos como:

  • Regras de parcelamento aplicadas de forma diferente na vitrine e checkout
  • Alguns cenários de promoções com comportamentos distintos na vitrine e checkout
  • Nos Marketplaces, não era possível apresentar o parcelamento do seller na página do produto
  • Performance do indexador de produto

Além disso, algo que já incomodava bastante era a presença do módulo do parcelamento dentro do portal. Conceitualmente não faz sentido. Parcelamento deve estar junto com os meios de pagamento.

Diante deste cenário, passamos a trabalhar no primeiro semestre na mudança de arquitetura chegando ao seguinte modelo:

 

Centralizamos no Checkout todas as requisições necessárias pelo portal.

Portal passa agora acessar somente o Checkout para montar a vitrine tornando as regras de negócio mais consistentes além de torna mais simples a manutenção e correção de bugs.

Depois de 1 mês de testes, publicamos no mês passado esta nova versão.

Um comportamento esperado por nós era um aumento significativo de chamadas para o Checkout. Anteriormente, suas requisições ficavam restritas ao tráfego destinado ao carrinho de compras e o próprio processo de checkout.

Depois desta mudança, o Checkout passou a receber requisições de todo o portal ou seja, de todo o tráfego da loja. Isto resultou em um aumento de requisições de aproximadamente 10X.

A partir dai tivemos que aprender a lidar com uma novo comportamento da nossa arquitetura. Nos deparamos com novos cenários, novos limites na forma de comunicação entre os serviços.

Entrando um pouco mais no nível técnico, para cada serviço existe um limite (timeout) para aguardar a resposta do outro serviço, caso contrário, o acúmulo de requisições em espera faz o serviço se degradar até não responder mais.

Nos deparamos inicialmente com este cenário onde a falta de resposta de um serviço causava o “efeito dominó” e “derrubava” outros serviços. O processo de recuperação de todo ambiente demorava muito mais do que o esperado tornando o período de indisponibilidade mais longo. Passamos a ajustar estes limites entre os módulos, mudamos o modelo de escalonamento e também as configurações dos servidores.

Muito já foi feito mas ainda não chegamos ao fim. Nosso downtime está bem menor que o último mês conforme o gráfico abaixo.

 

Faremos ainda alguns ajustes nesta próxima semana e acreditamos ter bem menos instabilidade daqui para frente. Esta próxima semana será muito importante para acompanharmos nossa evolução e encerrarmos este cenário de instabilidade.

Passamos a ter uma solução mais elástica, mais robusta e principalmente mais preparada para recuperação do ambiente em caso de “queda”. Além disso, abriu a possibilidade para viabilizar novos recursos que até então estavam impedidos de uso. Ex: Novo PCI Gateway.

Os últimos incidentes provocados por estas publicações levantaram diversos questionamentos sobre nossa política de atualização.

Por que a VTEX não publica nova versão na madrugada, final de semana, horário de pouco tráfego?

Este modelo era adotado pela VTEX em 2011 onde tínhamos na nossa página institucional uma contagem regressiva para próxima atualização de versão. Naquela época era um grande diferencial comparado a outras soluções do mercado

“A cada 60 dias uma plataforma com novas funcionalidades”.

A versão errada não falha na madrugada ou na hora de pouco acesso. Na grande maioria das vezes, uma nova versão apresenta problema ou porque se comporta de forma intermitente ou errada por conta do tráfego, por conta dos cenários mais variáveis e complexos apresentados pelas lojas.

Em horário de baixo tráfego, tudo fica “adormecido”.

Acumular pacote de atualização com muitos ajustes torna os testes menos ágeis e aumenta bastante a chance de um incidente. Torna também mais difícil a investigação e correção. Como identificar rápido, no meio de tanta atualização, a raiz do problema?

O cenário fica ainda mais complexo quando notamos uma queda na conversão de vendas sem nenhum problema aparente na publicação. Como saber de forma rápida e precisa o real motivo?

Nosso modelo exige ações rápidas, sabemos o quanto representa um minuto fora do ar.

A partir destas lições adotamos o modelo de “publicação contínua”. Modelo que consiste em atualizações com pequenos pacotes, rápidos para testar. Não tem data e hora para subir versão. Modelo deve oferecer  segurança para o time publicar quando tiver que publicar e voltar atrás rapidamente quando tiver uma falha.

Para finalizar, gostaríamos de agradecer todos os membros desta comunidade pela grande contribuição. Acreditamos bastante neste espaço colaborativo para discutir idéias, esclarecer dúvidas entre o nosso ecossistema (lojas, parceiros e VTEX).

A comunidade é uma das ações que estamos realizando para tornar cada vez mais públicas nossas ações. Hoje registramos na nossa página de status (http://status.vtex.com/) toda interrupção que tenha impacto no fechamento de um pedido e que impacte na maioria das lojas.

Recentemente disponibilizamos nosso “Release Notes” com todas as últimas publicações. Nos últimos 12 meses foram mais de 3000 upgrades no ambiente em produção.

Seguindo a linha da transparência, gostaríamos de compartilhar um dos nossos termômetros, o Healthcheck.

O Healthcheck é um monitoramento que realizamos em cima de cada módulo da nossa arquitetura.

Compra(VTEX) e (Amazon) são os módulos que realizam a análise mais completa, simulando o processo completo de compra (navegação, busca, carrinho, checkout e etc).

Compra (VTEX) roda no Brasil enquanto Compra(Amazon) roda no nosso Datacenter fora do Brasil. Usamos isso como um “double check”. A comprovação do incidente é quando ambos apontam falha nos testes.

Os demais módulos são testes unitários específicos e podem ou não interferir no funcionamento da loja.

Em cada módulo apresentamos o status e a hora da última execução

Trabalhamos com 3 status:

  • Verde = Execução com sucesso
  • Amarelo = Atenção. A tarefa foi concluída porém demorou mais que o normal
  • Vermelho = Erro na execução do teste

3 alertas vermelhos ou amarelos em sequência é disparado o alerta na empresa. Neste caso, o módulo começará a piscar até a normalização, após três sinais verdes em sequência.

Esperamos ter conseguido esclarecer as últimas instabilidades e um pouco mais sobre a nossa visão.

Todo time continuará trabalhando incansavelmente para manter a confiança depositada na VTEX com objetivo de oferecer a melhor plataforma de comercio eletrônico para vocês.

Muito obrigado pela compreensão

  • http://www.xpagencia.com.br Fabio Santos

    Acredito que esse tenha sido um texto esclarecedor para muitos que vinham com dúvidas quanto a ferramenta.
    Todos sabemos que a VTEX é uma das (se não a principal) melhores ferramentas de e-commerce do mercado brasileiro. Mas, esses 2 últimos meses, junto com a queda brasileira em vendas como um todo, só veio a atrapalhar o que já estava ruim. E aí deixa todos de cabelo em pé.
    Temos certeza que a equipe do RJ está sempre pronta para melhorar o ambiente e corrigir quando necessário.
    Eu só gostaria de chamar a atenção para o suporte da plataforma. Esse a VTEX/agências (Eu sou agência) ainda precisam melhorar muito como resposta para os clientes pois muitas vezes vemos lojistas reclamando do atendimento. Seja suporte técnico ou financeiro, as maiores reclamações estão sempre envolvidas com atendimento.
    Acredito que desses problemas já estamos nos recuperando e que venham os próximos.

    • Livia Soares

      Oi Fabio,

      Vamos garantir sempre a evolução de nosso atendimento para vocês. O Help hoje tem sido o melhor canal para que as duvidas técnicas e financeiras sejam sanadas rapidamente, utilizando a velocidade de acesso a informação para deixar todos nossos lojistas e parceiros com respaldo. Sempre procuraremos evoluir em todos os sentidos, e o atendimento tem sido um dos nossos maiores focos também este ano. Nos adequarmos para melhor atende-los exige um tempo de adaptação no acesso das novas ferramentas e novas forma de contato. Ja fizemos a troca da ferramenta do suporte técnico, e estamos evoluindo também para a mesma ferramenta no atendimento as duvidas financeiras.

      Obrigada pelo feedback.

      Abraços.

      • Geraldo Fonseca

        Ainda estou com problemas no placeholders para inserção de banners e coleções.
        lojas Netpolos, Mabruk Presentes (implantação), Eletromassa (implantação)

        • Livia Soares

          Estimado Geraldo,

          Peço que abra uma nova discussão na comunidade para este assunto. Assim a melhor pessoa poderá lhe auxiliar. Também poderá ser consultar suas duvidas no help na vtex acessando: http://www.vtex.com.br/help.

          Obrigada,

  • Ramirez Sales

    Bom dia @Gustavo Rios Obrigado pelo esclarecimento, desde sexta-feira não notei quedas no sistema, além disso notei que a velocidade do cache melhorou demais, sendo que para minha loja eu notei que está quase instantânea, acredito que se manterem a qualidade e diminuir as quedas o sistema vai atender todas as necessidades dos lojistas.
    Att;
    Ramirez Emerick
    Calpen Auto Peças
    http://www.calpen.com.br