Lançamentos em etapas para desenvolvedores de plugins e temas do WordPress: evitando um “lançamento de clusterbug”
Publicados: 2020-12-23Você se lembra da última vez que lançou uma nova versão do seu plugin ou tema do WordPress para descobrir rapidamente que adicionou por engano um novo grande bug que escapou de suas falhas na sequência de testes?
O Yoast SEO 3.0 quebrou muitos sites em 2015. O Elementor 3.0 fez o mesmo este ano. E esses são apenas dois exemplos na minha cabeça de empresas fantásticas em nosso espaço com mais de 100 funcionários e pessoal de controle de qualidade dedicado (e não, não está relacionado à versão 3.0, mas talvez seja um sinal para pular essa versão em seu software; )).
Seja você um codificador autodidata ou engenheiro de software, desenvolvedor independente ou parte de uma grande loja de plugins/temas, todos nós temos que lidar com bugs. É uma parte inevitável do desenvolvimento de software.
Não importa quais automações sofisticadas de CI/CD/teste você implemente – você nunca poderá testar tudo. O número de configurações de servidor (PHP, MySql, caching, servidor web), versões WP, combinações de plugins e temas… é tudo infinito.
E é contra-intuitivo. Quanto mais populares e estáveis forem seus produtos, maiores serão as chances de um temido lançamento “Clusterbug”, que drenará seu suporte, poderá impactar significativamente a confiança e fidelidade de seus clientes e potencialmente prejudicar a reputação geral da marca.
Embora você não possa evitar bugs, você pode, e definitivamente deve, mitigar o risco o máximo que puder.
Se você tem um smartphone, provavelmente notou que alguns de seus amigos recebem atualizações do Android/iOS dias, semanas, às vezes até meses antes de você obtê-las. Isso não é coincidência, e não, não é nada pessoal contra você. É um processo de implantação progressiva intencional chamado Rollouts em etapas que ajuda empresas como a Apple a enviar grandes atualizações de software para mais de um bilhão de dispositivos.
Sim, um bilhão!
Você consegue entender a quantidade de responsabilidade que um líder de versão da Apple teria sobre seus ombros se tivesse que enviar uma atualização ao vivo para 1,5 bilhão de dispositivos móveis simultaneamente? Eu não posso. Aposto que nenhum homem são concordaria em assumir tal responsabilidade.
Então, como funciona o mecanismo de lançamentos graduais? Como você pode implementá-lo? E o que o WordPress.org está esperando? Estes são os tópicos que vou abordar abaixo.
O que são lançamentos graduais para plugins e temas do WordPress?
Os lançamentos graduais permitem que você especifique o número (ou porcentagem) de sites para os quais deseja lançar uma nova versão. Um mecanismo de lançamentos em etapas permite que você inicie seu ciclo de lançamento com exposição limitada e, em seguida, aumente-o de forma incremental enquanto monitora o suporte e o feedback, aumentando assim a confiança em seu lançamento para você e seus usuários.
Quais são os benefícios dos lançamentos graduais?
Em vez de arriscar toda a sua base de instalação com o lançamento de possíveis bugs, conflitos com plugins/temas de terceiros ou até mesmo problemas de UI/UX, você pode liberar versões progressivamente, minimizando o número de pessoas e sites que ficarão expostos a problemas inesperados. Depois de resolver todos os problemas e bugs descobertos durante o processo de implantação, a grande maioria de seus usuários será exposta a uma versão “madura” e muito mais estável.
Usamos atualizações contínuas para garantir a qualidade de nossos novos lançamentos. Se houver um problema com uma nova versão, podemos identificá-lo rapidamente e apenas um pequeno subconjunto de usuários seria afetado.
John Turner, fundador da SeedProd
O uso de lançamentos em etapas é a melhor prática para liberar software com responsabilidade – um processo que muitas empresas (independentemente do tamanho) seguem fora da bolha do WP.
Há uma grande oportunidade para a comunidade WordPress aproveitar os lançamentos em etapas, que falarei em breve.
Os programas beta são semelhantes aos lançamentos graduais?
Configurar um programa Beta para o seu produto WordPress é um ótimo começo, mas está longe de ser tão eficaz quanto os lançamentos graduais e tem um propósito e uma dinâmica fundamentalmente diferentes.
A menos que seu plugin ou tema seja extremamente popular e tenha uma grande comunidade, é bastante desafiador recrutar um grupo beta estatisticamente suficiente, pois apenas uma pequena fração dos usuários estará interessada em participar. Mesmo que você se destaque no recrutamento de um grupo decente de testadores beta, você precisa confiar na disponibilidade e boa vontade deles para testar o produto e esperar que eles façam um esforço extra para relatar os problemas encontrados.
Quantas pessoas você acha que vão ver todo esse processo? Nao muitos.
O teste beta é um processo de pré-produção no qual seus esforços de suporte são totalmente controlados e os testadores esperam ter problemas com as versões beta. Portanto, as expectativas dos testadores sobre a qualidade não representam o sentimento geral de sua base de usuários.
Além disso, um programa Beta responsável alertará seus testadores para evitar o uso de versões beta em ambientes de produção, portanto, o teste beta não simula realmente sites de produção ao vivo.
Como gerenciar uma versão de lançamento gradual para seu plugin ou tema do WordPress?
Como parte de minha pesquisa sobre lançamentos em etapas, tive a chance de conhecer Amir Helzer e aprender com seus mais de 2 anos de experiência usando lançamentos em etapas com WPML e Toolset, plugins executados em mais de 1.000.000 sites WordPress.
Veja o que Amir compartilhou sobre a implementação de lançamentos graduais:
Quando um site instala qualquer um de nossos plugins, sorteamos um número aleatório entre 1 e 100 e o armazenamos no banco de dados do site para lembrar. Esse método basicamente divide os sites em 100 caixas de maneira aleatória.
Quando uma versão estiver pronta para ser lançada, ela só ficará disponível de forma incremental para um único compartimento selecionado. Todos os dias aumentamos a exposição do lançamento para mais 5% de sites na lixeira designada. E corrija e corrija os próximos problemas à medida que avançamos.
Para diversificar os ambientes usando a versão atualizada e evitar ter as mesmas “vítimas” de lançamento antecipado repetidamente, Amir confirmou que cada novo lançamento vai para uma caixa diferente de usuários primeiro.
Essa abordagem também significa que um ciclo médio de lançamento leva cerca de um mês para estar disponível para todos os usuários.
Leva tempo até que as pessoas vejam uma nova versão disponível no WP Admin e atualizem sua versão. E mesmo depois disso, pode levar dias até que descubram um problema.
Com o tamanho do nosso público, inevitavelmente, todo lançamento tem alguns problemas. Nosso principal objetivo é garantir que evitemos a introdução de novos problemas e, se o fizermos, temos um processo confiável para resolvê-los.
O ciclo de lançamento é realmente longo, mas mesmo que, na pior das hipóteses, haja algum bug maluco que perdemos nos testes, 95% de nossos usuários nem estão cientes de todo o drama, pois não estão expostos ao lançamento até ficar estável.
Amir também enfatizou a importância de sincronizar com toda a equipe antes dos lançamentos, especialmente suporte ao cliente e desenvolvimento. Dessa forma, os membros da equipe podem fornecer foco extra nos tickets acionados devido a problemas relacionados à versão em andamento, com o objetivo de verificar, confirmar e corrigir problemas válidos e liberar patches o mais rápido possível.
Temos três níveis de suporte em nossa equipe. A camada 1 analisará o problema, validará que é realmente um problema relacionado ao lançamento do plug-in, reproduzindo-o. Quando um caso parece relacionado ao novo lançamento, ele vai para a camada 2, que depurará o problema para validar que ele está realmente relacionado ao lançamento e localizar as partes relevantes no código que aciona o problema. Se validado, o desenvolvedor responsável por esse código será notificado imediatamente para priorizar uma correção.
A OnTheGoSystems é uma grande empresa com quase 100 funcionários, então faz sentido que eles tenham aperfeiçoado o processo de Rollouts em etapas. Mas, mesmo sendo um desenvolvedor de produto único com uma camada de suporte (você e você mesmo), a visão de Amir pode nos ensinar que é fundamental alocar recursos dedicados para lançamentos. É uma boa prática priorizar os tíquetes de suporte que “cheiram” a estar relacionados ao seu novo lançamento e reduzir ao máximo a exposição de novos problemas.
Por que não há (quase) plugins ou temas que suportem lançamentos graduais?
Em preparação para escrever este artigo, tentei pedir à comunidade para ver quem está utilizando lançamentos graduais para obter feedback sobre sua experiência, o que aprenderam etc.
Sem surpresa, encontrei apenas duas empresas WordPress na minha rede que configuraram lançamentos em etapas como parte de seu ciclo de lançamento. Muitos desenvolvedores nem conheciam o conceito, e o resto não o usa, pois sua solução de distribuição não o suporta (ou eles podem ter pensado em desenvolvê-lo e não têm tempo).
A maioria dos desenvolvedores de plugins e temas que não estão vendendo através do Freemius vendem em seu site via EDD ou WooCommerce, que não suportam lançamentos em etapas. Aqueles que estão vendendo através de mercados como CodeCanyon e ThemeForest também não têm uma solução pronta para uso e provavelmente nunca terão.
Mesmo os desenvolvedores que estão cientes do conceito não têm escolha a não ser desenvolver seu próprio mecanismo para oferecer suporte a lançamentos graduais. Esse desenvolvimento de infraestrutura normalmente é muito difícil de priorizar dentro de uma empresa de produtos.
Inscreva-se e obtenha uma cópia gratuita do nosso
Livro de negócios de plug-in do WordPress
Exatamente como criar um próspero negócio de plugins WordPress na economia de assinaturas.
Compartilhe com um amigo
Digite o endereço de e-mail do seu amigo. Só enviaremos este livro por e-mail, honra do escoteiro.
Obrigado por compartilhar
Impressionante - uma cópia do 'The WordPress Plugin Business Book' acabou de ser enviada para . Quer nos ajudar a divulgar ainda mais? Vá em frente, compartilhe o livro com seus amigos e colegas.
Grato pela assinatura!
- acabamos de enviar sua cópia do 'The WordPress Plugin Business Book' para .
Tem um erro de digitação no seu e-mail? clique aqui para editar o endereço de e-mail e enviar novamente.
Como os lançamentos graduais oferecem uma vantagem comercial?
Como quase ninguém aproveita os lançamentos graduais no momento, se você começar a utilizar os lançamentos graduais e comercializá-los adequadamente em seu site para que os visitantes saibam que você tem ciclos de lançamento responsáveis, isso definitivamente lhe dará uma vantagem competitiva e aumentará a confiança em seu produto /marca!
Se você analisar o mercado da perspectiva de um desenvolvedor, notará que muitos desenvolvedores seguem de perto seus concorrentes e geralmente definem seus preços dentro da faixa de preço do mercado em sua vertical, o que leva a produtos concorrentes do WordPress que oferecem recursos semelhantes na mesma faixa de preço.
Do ponto de vista do comprador, isso significa que muitas vezes é uma dúvida sobre qual produto comprar, porque todos têm recursos e preços comparáveis. Mas, quando você avalia vários plugins que custam o mesmo e, mais ou menos, têm os mesmos recursos, você não estaria inclinado a optar pelo produto que oferece lançamentos graduais sabendo que seus lançamentos de produção devem ser mais estáveis do que os concorrentes?
Rollouts em etapas aumentam a confiança em seu produto e negócios. É uma vantagem que você pode aproveitar antes que os lançamentos graduais se tornem uma prática padrão (o que eu realmente espero que eles façam).
Freemius agora suporta lançamentos graduais para plugins e temas pagos
Estamos empolgados em ser pioneiros em lançamentos em etapas no ecossistema premium de plugins e temas do WordPress. Nossos parceiros de vendas agora podem lançar atualizações com segurança, confiança e confiabilidade, com o mínimo de retorno para seus usuários ou recursos de suporte/desenvolvimento.
Sabemos como os principais lançamentos podem ser desafiadores e estressantes, especialmente porque sempre existe o risco potencial de impactar negativamente sua marca após um lançamento “Clusterbug”.
Com os lançamentos em etapas, há uma rede de segurança para a sustentabilidade e defesa da marca de nossos parceiros, além de aliviar o estresse desnecessário associado aos lançamentos para uma grande base de usuários.
Isso caminha lado a lado como um benefício para os clientes de nossos parceiros. Quando os usuários compram produtos vendidos através do Freemius, agora eles podem ter certeza de que estão optando por uma solução desenvolvida por Rollouts em etapas e podem esperar lançamentos muito mais estáveis de plugins e temas premium que utilizam o mecanismo.
Se você está vendendo com o Freemius, veja como usar corretamente nosso mecanismo de lançamentos graduais.
Como Freemius implementou lançamentos graduais?
Todo site que ativa uma licença para desbloquear um plugin ou tema premium obtém um registro em nosso banco de dados. A primeira coisa que fizemos foi introduzir uma nova propriedade last_served_update_version
para armazenar a versão mais recente do produto que foi disponibilizada em um site.
Em seguida, enriquecemos a tabela responsável por armazenar os dados da versão com duas novas propriedades: limit
, uniques
.
Quando um desenvolvedor sinaliza uma versão como lançada, ele será solicitado com a seguinte caixa de diálogo, permitindo que eles configurem a porcentagem (ou número) de sites que têm uma licença ativa para os quais desejam lançar a versão paga:
Se eles definirem uma distribuição de versão limitada, o sistema contará o total de sites ativos com uma licença ativa e, em seguida, definirá a nova propriedade de limit
da versão de acordo.
Por fim, atualizamos o endpoint da API chamado pelos sites para verificar se há uma nova versão e introduzimos a seguinte lógica (em pseudocódigo):
latest_version = load latest version of product X If (website is on latest_version) return “no new version” If (last_served_update_version of website same as latest_version) return “no new version” If (latest_version is limited) If (latest_version is limited AND uniques >= limit) return “no new version” previous_version = load the previous version of product X If (previous_version is limited too AND uniques <= previous_version.uniques) If (website not using previous_version AND last_served_update_version different from previous_version) return “no new version” else If (random({true, false}) ) return “no new version” Set last_served_update_version of website to latest_version Increment uniques by 1 return latest_version
Este algoritmo garante que:
- A exposição do lançamento é limitada de acordo com a porcentagem definida do lançamento.
- Se a versão anterior ainda estiver em teste, ou seja, nunca foi exposta a toda a base de instalação, os sites que receberam a versão em teste anterior serão expostos primeiro à versão em teste mais recente.
Ao contrário da arquitetura Staged Rollouts do WPML, que garante que cada versão vá para um subconjunto diferente de sua base de instalação usando compartimentos lógicos, nossa implementação depende da aleatoriedade. Assim, um site pode receber dois lançamentos em estágio inicial em dois ciclos de lançamento consecutivos. No entanto, o benefício dessa abordagem é que conseguimos enviar lançamentos graduais para todos os clientes de nossos parceiros sem a necessidade de enviar uma atualização do SDK, que pode levar muitos meses, até anos, para ser propagada para todos os clientes.
Por que os lançamentos em etapas são essenciais para o futuro do WordPress?
Quando perguntei a Amir qual foi o gatilho para desenvolver lançamentos em etapas para os ciclos de lançamento do WPML, ele me disse:
3 anos atrás, no WordCamp Europe, passei um tempo conversando com clientes do WPML para coletar todos os tipos de feedback sobre sua experiência geral. A frustração nº 1 que encontrei foi que nossos clientes estavam com medo de atualizar o plug-in, pois ele pode quebrar inesperadamente o site.
Emir Helzer,
Fundador da OnTheGoSystems (WPML, Toolset)
Eu absolutamente me relaciono com isso.
Nossa política interna no Freemius quando se trata de atualizar plugins e temas é… simplesmente não! Com duas exceções: se houver um problema de segurança conhecido ou um recurso disponível em uma versão mais recente que precisamos para nosso site.
Nossa política de atualizações foi “escrita a sangue” após vários incidentes de atualizações que deram errado e causaram dores de cabeça inesperadas e perda de tempo, interrompendo nossa operação e cronogramas. E sim, poderíamos ter evitado um pouco do estresse com um ambiente de teste, mas isso não nos pouparia tempo e problemas se ainda quiséssemos prosseguir com a atualização para produção.
O WordPress evoluiu um pouco desde então, e agora temos a desativação automática em caso de falhas de plugins. No entanto, isso não se aplica a temas e a desativação de um plugin de missão crítica para nosso site ainda é um grande problema.
A conclusão é que se eu, como desenvolvedor de plugins e CEO de uma empresa que ajuda milhares de desenvolvedores de plugins e temas a expandir seus negócios, estou preocupado em quebrar nosso site toda vez que atualizamos plugins ou temas em nosso site, isso certamente significa a maioria dos usuários não tem confiança na atualização de software em nosso espaço.
A falta de lançamentos em etapas impede a nós e a todo o ecossistema WP e oferece uma vantagem considerável às soluções concorrentes baseadas em SaaS. Os usuários do WiX e Shopify não precisam pensar em atualizações! As atualizações acontecem para eles em segundo plano, e seu software está sempre atualizado, em termos de segurança e recursos.
A falta de lançamentos em etapas retém todo o ecossistema WP e oferece às soluções baseadas em SaaS uma vantagem considerável. Os usuários de WiX e Shopify não precisam pensar em atualizações de software – elas acontecem em segundo plano.Tweet
Se você assistiu ao State of the Word da semana passada, o cofundador do WordPress, Matt Mullenweg, claramente entende a importância do software atualizado. Aqui está a visão de Matt para atualizações do WP:
… permitindo que você opte por atualizações automáticas para o Core. Este é o primeiro passo para o nosso objetivo, permitindo que seu WordPress essencialmente se mantenha, quando você pode configurá-lo e esquecê-lo, e ele ficará automático, em segundo plano e atualizações sem complicações para todos os seus plugins, temas e core.Tweet
A única maneira de imaginar o WordPress se tornando um “definir e esquecer” é se as atualizações de software puderem ser mais confiáveis e confiáveis, e isso só pode acontecer com lançamentos em etapas.
WordPress.org: Veja como você pode introduzir lançamentos graduais para o repositório de plugins e temas
Semelhante à nossa implementação, duas novas opções meta precisam ser adicionadas a cada versão de plugin e tema no banco de dados do WordPress.org: limit
e uniques
.
A edição da meta opção de limit
pode ser exposta na Visualização Avançada para o proprietário logado (e talvez para outros committers):
Um desenvolvedor terá uma maneira de controlar a exposição de cada lançamento, bem como a capacidade de definir um limite para o próximo lançamento.
Como o WordPress.org não armazena dados estruturados para cada site que recebe atualizações do WordPress.org, em vez de armazenar a versão mais recente “vista” por um site no banco de dados do WordPress.org, o armazenamento dos dados pode ser delegado aos sites . Isso significa que o transiente 'update_plugins'
e os dados enviados para a API do WordPress.org ao verificar atualizações precisarão ser enriquecidos com um last_served_update_version
.
Por fim, os endpoints da API de atualizações do WordPress.org podem ser enriquecidos com a mesma lógica que usamos para a implementação do Freemius Staged Rollouts. Apenas em vez de depender do last_served_update_version
do banco de dados wp.org, o mecanismo dependerá do valor enviado do site por núcleo.
Fácil-peasy, não?
Vamos trazer de volta a confiança dos usuários para apertar o botão de atualização
Todos nós queremos ver o WordPress ter sucesso e crescer constantemente mais e melhor!
Com tantos recursos entrando em Gutenberg, fica claro que a liderança do WordPress reconhece que temos que tornar a plataforma muito mais acessível para o Joe não técnico médio. O problema é que, enquanto as atualizações de software não forem confiáveis, mesmo com Gutenberg e todos os incríveis construtores de páginas que temos disponíveis, uma pessoa não técnica fugirá para o Wix em sua primeira atualização quebrada, e eu não posso culpar eles.
Estou chamando o fundador do EDD, Pippin Williamson, o CEO do WooCommerce, Paul Maiorana, e a equipe do WordPress.org: Temos a oportunidade de tornar o ecossistema de plugins e temas muito mais estável para a comunidade WordPress. Vamos permitir que os usuários mantenham seus softwares seguros e atualizados com menos medo e frustração. Embora possa não parecer uma alta prioridade a curto prazo, tenho certeza de que todos nos beneficiaremos disso a longo prazo.