Arquitetura para startups

Construir uma startup é um desafio único. A tarefa central é encontrar um lugar para uma inovação como produto ou serviço no mercado. Este processo requer o teste de vários pressupostos que são incorporados na inovação. Uma startup bem-sucedida deve iterar através dessas suposições, e crescer e escalar à medida que seu produto ganha produto e adequação ao mercado. Depois de encontrar esse ajuste, a startup deve escalar para atender às demandas do mercado.

Nos diferentes estágios da vida da startup, desenvolvedores, arquitetos e diretores técnicos (CTOs) lidam com fases distintas de desenvolvimento. Estas fases exigem abordagens fundamentalmente diferentes e escolhas tecnológicas diferentes. Parte da tarefa é estabelecer em qual fase sua startup está. Escolha as tecnologias e arquiteturas que correspondem a essa fase.

Etapas de inovação

Kent Beck descreve um processo de três estágios de inovação de produtos de software. Essas etapas são exploradas, expandidas e extraídas. Você pode pensar sobre as diferentes partes deste processo como um gráfico:

Um gráfico que mostra as fases Explorar, Expandir e Extrair do desenvolvimento do produto.

Um gráfico mostrando uma curva sigmoide plotada contra um eixo y "Certeza/Investimento/Risco de Mudança" e um eixo x "Tempo". O gráfico tem três áreas destacadas: a porção inicial antes da inflexão ascendente rotulada "Explorar", a parte de alto crescimento da curva sigmoide rotulada "Expandir" e o platô rotulado "Extrato".

  • A etapa Explorar começa com uma inclinação baixa, onde você está tentando encontrar o que funciona. A certeza é baixa, você investe apenas pequenas quantias, e o risco de quaisquer mudanças que você faz também é baixo.

  • Em algum momento, o gráfico sobe mais rapidamente. Este rápido crescimento é a etapa de expansão . Sua certeza aumenta muito, você investe muito mais e está muito mais consciente dos riscos.

  • Finalmente, à medida que o gráfico se nivela, você alcança o estágio Extrato . A certeza, o investimento e o risco da mudança são elevados, mas a taxa de crescimento atingiu um patamar.

Explorar

Quando a sua startup está na fase de exploração, o seu imperativo é investir pequenas quantidades de tempo e esforço em muitas ideias de produtos diferentes. O fato de que a maioria das ideias não estará certa impulsiona a exploração. Somente iterando e aprendendo você pode encontrar o produto e o mercado adequados. Ao fazer muitas pequenas apostas, você pretende encontrar uma ideia de produto que valha a pena.

Esta etapa exige disciplina. É fácil investir demais em uma ideia que você poderia testar com menos tempo e energia. Um tecnólogo acha especialmente fácil cair nesta armadilha. Para fazer escolhas arquitetônicas que facilitem a exploração, lembre-se de que você está explorando. Você ainda não sabe se a ideia atual do produto é uma que vai escalar.

Do ponto de vista da arquitetura, escolha serviços que otimizem velocidade, custo e opções. Use serviços gerenciados e plataformas como um serviço (PaaS), como o Serviço de Aplicativo do Azure, para começar rapidamente sem se preocupar com infraestruturas complexas. Gerencie os custos escolhendo níveis gratuitos e tamanhos de instância menores enquanto explora. Os contêineres suportam o desenvolvimento com quaisquer ferramentas que façam sentido para você e oferecem opções flexíveis de implantação para o futuro.

Construa sua primeira pilha

Tal como acontece com a sua primeira versão do produto, a sua primeira pilha de tecnologia deve estar firmemente enraizada na exploração. Isso significa que a pilha de tecnologia deve facilitar a iteração rápida do produto sem desperdiçar esforço. Você não quer gastar tempo ou esforço em infraestrutura ou arquitetura que não sejam necessárias para responder às perguntas atuais.

Durante a fase de exploração, você precisa otimizar para velocidade, custo e opcionalidade. Velocidade é sobre o quão rápido você pode construir e avançar com uma ideia, ou passar para a próxima ideia. Custo é quanto você está gastando para executar sua infraestrutura. Opcionalidade descreve a rapidez com que você pode alterar as direções de acordo com a arquitetura atual.

É importante equilibrar custo, velocidade e opcionalidade. O foco excessivo nos limites de custo, velocidade e opcionalidade. Um foco excessivo na velocidade pode levar a um aumento dos custos e a menos opções. Projetar para muitas opções gera complexidade, o que aumenta os custos e reduz a velocidade.

Considere usar nossa primeira pilha de tecnologia sugerida. Essa arquitetura usa serviços PaaS para facilitar a implementação, pode ser iniciada com uma escala mínima e usa tecnologias de contêiner e de código aberto que podem ser facilmente implantadas em diferentes pilhas de tecnologia à medida que você amadurece.

Expandir

Uma vez que sua startup encontra crescimento através da exploração, você muda as engrenagens para a expansão. Você se concentra em remover quaisquer bloqueios ao crescimento contínuo do seu produto e da sua empresa. De uma perspetiva técnica, você resolve desafios de escala de infraestrutura e aumenta a velocidade de desenvolvimento. Os objetivos são atender às necessidades de seus novos clientes e avançar seu roteiro de produtos.

Amplie sua arquitetura

À medida que você itera em seu produto, você inevitavelmente encontrará áreas onde sua arquitetura precisa ser estendida. Talvez seja necessário concluir tarefas de longa execução em segundo plano ou lidar com atualizações frequentes de dispositivos de Internet das Coisas (IoT). Pode ser necessário adicionar pesquisa de texto completo ou inteligência artificial ao seu produto.

Você pode precisar de alterações arquitetônicas para acomodar itens em seu roteiro. Resista à tentação de fazer essas mudanças com muita antecedência. As extensões correm o risco de adicionar complexidade à sua arquitetura e custos de infraestrutura ao seu balanço.

Nos estágios iniciais de inicialização, qualquer extensão de arquitetura deve ser just-in-time. A extensão deve levar apenas o tempo e a energia necessários para testar a próxima hipótese. Esteja pronto para remover extensões para reduzir a complexidade. Procure recursos de produtos que seus clientes não estão usando como oportunidades para simplificar sua arquitetura e reduzir seus gastos com infraestrutura.

Sua arquitetura pode ser expandida de várias maneiras, como:

Extrair

Na fase de extração, o ritmo de crescimento diminui à medida que você atinge os limites da oportunidade de mercado. Como você expandiu a fase anterior, agora há muito a perder, então você adota uma abordagem mais cautelosa. Expansão de margem, redução de custos e melhorias de eficiência caracterizam a fase de extração. Durante a fase de extração, tenha cuidado para não comprometer o produto para os clientes que você ganhou na fase de expansão.

Lide com o crescimento e amadureça sua pilha

Uma vez que um produto atinge o produto e o mercado adequado, muitas demandas impulsionam sua arquitetura. O aumento do uso pode exigir o dimensionamento da infraestrutura para lidar com a carga. Novos requisitos de conformidade corporativa podem exigir maior isolamento. Essas alterações são etapas comuns no amadurecimento de um aplicativo bem-sucedido.

As alterações feitas para lidar com o crescimento e adicionar maturidade são diferentes da arquitetura de extensão. Essas alterações não são requisitos funcionais, mas estão relacionadas à escala de desbloqueio. O aumento da escala pode vir de novos clientes líquidos, maior uso de clientes existentes e clientes com requisitos regulatórios mais altos.

Resista à tentação de otimizar prematuramente. Certifique-se de tomar medidas de crescimento e amadurecimento que podem ajudá-lo a continuar iterando e melhorando seu produto.

Próximos passos

  • Veja e implante um exemplo de arquitetura de pilha de inicialização principal.