Bloqueio de features
A técnica Feature flags pode ser usada para implementar lançamentos direcionados de uma funcionalidade específica para um subconjunto de usuários. Essa funcionalidade pode ser ótima para testes A/B, mas também pode ser usada para liberar funcionalidades apenas para um subconjunto de clientes.
Testes AB
Experimentos são necessários para criar software inovador. Receber feedback e dados do público real ajuda a entender as prioridades e necessidades. Usando o teste A/B, as equipes podem gerar esses dados. O teste A/B pode ser implementado usando sinalizadores de recursos, conforme mencionado acima, bem como outras formas, como o uso de gateways de API que direcionam condicionalmente o tráfego para diferentes implantações. Ao habilitar um recurso para metade de um segmento de usuários e desabilitar o recurso para a outra metade, a empresa pode entender como os dois se comportam em relação a uma determinada métrica.
Os testes A/B podem ser implementados para segmentos específicos de público, por exemplo, usuários que moram em um determinado país ou se encaixam em um perfil de usuário específico.
Infraestrutura como código
"Infraestrutura como código (IaC) é o gerenciamento e o provisionamento de infraestrutura por meio de código, em vez de processos manuais."
O gerenciamento da infraestrutura de TI é um processo manual. Isso inclui altos custos indiretos e complexidade de comunicação, criando barreiras à inovação sem investimento significativo devido ao comprometimento, como construção e manutenção de data centers. Isso também afeta a escalabilidade; com configuração manual necessária, isso cria problemas durante os horários de pico.
Como a infraestrutura como código resolve esses problemas, criando um espaço para inovação? O uso da computação em nuvem libera a empresa da construção e manutenção de data centers (e dos altos custos associados). Antes do IaC, as equipes de TI precisavam alterar manualmente as configurações para gerenciar a infraestrutura. Considerando que o IaC permite que a configuração da sua infraestrutura assuma a forma do arquivo de código. Isso gera benefícios como
- Velocidade
- Consistência
- Responsabilidade
- Eficiência
- Custos mais baixos
Benefícios que podem se traduzir em ser mais flexível e adaptável às mudanças nas demandas dos consumidores e mudanças no mercado.
Dimensionamento elástico
O dimensionamento elástico é a capacidade de ajustar a capacidade para manter um desempenho estável e previsível com o menor custo possível. Conforme mencionado acima, este é um processo manual com infraestrutura local que envolve comprometimento e investimentos significativos de tempo. Com a nuvem, você pode automatizar esse processo para ajustar a capacidade conforme sua necessidade. Por exemplo, isso envolveria grandes picos durante as temporadas de férias, como Black Friday ou Natal para o setor de comércio eletrônico.
Ele permite que as empresas mantenham automaticamente o desempenho conforme projetado, criando disponibilidade em momentos imprevisíveis. Além disso, há eficiência de custo ao pagar apenas pelos recursos de que você precisa. À medida que a demanda diminui, também diminui o excesso de capacidade de recursos para evitar gastos excessivos.
A visibilidade é um benefício adicional, pois uma empresa pode usar os dados para entender suas necessidades de desempenho. Ajudar a entender em que estágio a inovação é possível e fornecer a eles os dados para se destacar em um espaço de mercado lotado.
Desenho/Implementação
Arquitetura modular – experimentos localizados
A arquitetura modular é uma forma de gerenciar a complexidade de um problema, dividindo-o em módulos gerenciáveis menores. A arquitetura modular é um estilo que ajuda a visualizar o sistema, não apenas em camadas ou serviços, mas um nível abaixo, à medida que as partes são divididas em módulos físicos menores. Esses módulos estão confinados no contexto em que são fornecidos.
Este estilo é para criar um ambiente propício para testes e experimentos. As equipes podem trabalhar em módulos fechados para garantir que os experimentos sejam limitados a um ambiente e não afetem os negócios, ou alterem o código que outra equipe pode precisar para seu sistema.
A recolha de informações está inserida na arquitetura e no design.
A observabilidade capacita os desenvolvedores a usar uma abordagem orientada por dados em todo o ciclo de vida do software. Isso permite que os desenvolvedores planejem, criem e implantem softwares que sustentam ótimas experiências do usuário.
O que isso significa na prática e como isso ajuda na inovação? A observabilidade ajuda a melhorar os tempos de ciclo de planejamento, diminui as taxas de falha de mudança e aumenta a frequência de lançamento. Para que uma empresa seja bem-sucedida em inovação e tenha um bom desempenho em relação aos concorrentes, é essencial colocar os lançamentos nas mãos dos consumidores primeiro.
Com uma abordagem baseada em dados, desenvolvedores e empresas são capazes de superar o quê e descobrir o porquê. Isso significa que eles podem se concentrar no código de maior prioridade e impacto nos negócios para chegar à solução mais rapidamente.
Usar dados e ferramentas para observar o comportamento de um sistema, antes, durante e depois do desenvolvimento para aprender sobre seus padrões ajuda a entender como ele se comportará diante de seu usuário. Isso pode melhorar e impactar a maneira como o software se comporta com os usuários. Tomemos, por exemplo, arquitetura orientada a eventos - é quando uma mudança no estado aciona a criação de um evento. Esses eventos são detectados por um ou mais consumidores de eventos que reagem de acordo. Por exemplo, quando um item é adicionado ao carrinho de um cliente em uma plataforma de comércio eletrônico, um produtor de evento pode acionar um evento detalhando essa ação. Um consumidor de evento, por sua vez, pode se inscrever nesse produtor e atualizar o inventário para refletir a alteração na disponibilidade do produto.
Produtores e consumidores são gerenciados independentemente um do outro, o que significa que essa natureza desacoplada permite que o desenvolvimento alcance benefícios de resiliência, escalabilidade e manutenção.
A capacidade de reunir essa informação a partir de uma série de experimentos rápidos permite a tomada de decisão baseada em dados, reduzindo ineficiências e especulações e, conforme mencionado acima, sendo mais eficiente.