Arquitetura para inicializações

Criar uma startup é um desafio único, e o principal é encontrar um lugar para uma inovação como produto ou serviço no mercado. Esse processo exige o teste de várias premissas integradas à inovação. Uma startup de sucesso precisa iterar essas premissas, crescer e escalar conforme o produto se ajusta e ganha o mercado. Depois de encontrar esse lugar, a startup precisa expandir para atender às demandas do mercado.

Nos diferentes estágios de uma startup, desenvolvedores, arquitetos e diretores técnicos (CTOs) cuidam de fases distintas de desenvolvimento. Esses estágios requerem abordagens fundamentalmente diferentes e escolhas de tecnologia distintas. Parte da tarefa é identificar em qual fase sua startup está. Escolha as tecnologias e arquiteturas que correspondem a essa fase.

Estágios de inovação

Kent Beck descreve um processo de três estágios de inovação em produtos de software. Esses estágios são explorar, expandir e extrair. Pense nas diferentes partes desse processo como um grafo:

Grafo mostra as fases Explorar, Expandir e Extrair do desenvolvimento de produtos.

Um grafo mostrando uma curva sigmoide plotada em um eixo y "Certeza/Investimento/Risco de mudança" e um eixo x "Tempo". O grafo tem três áreas realçadas: a parte inicial antes da inflexão ascendente rotulada como "Explorar", a parte de alto crescimento da curva sigmoide rotulada como "Expandir" e o platô rotulado como "Extrair".

  • O estágio Explorar começa com uma curva baixa, pois você está tentando encontrar o que funciona. A certeza é baixa, você só investe pequenos valores e o risco de qualquer alteração feita também é baixo.

  • Em algum momento, o grafo sobe mais rapidamente. Esse crescimento rápido é o estágio Expandir. Sua certeza aumenta muito, você investe muito mais e está muito mais ciente dos riscos.

  • Por fim, à medida que o grafo se nivela, você chega ao estágio Extrair. A certeza, o investimento e o risco de mudança são todos altos, mas a taxa de crescimento atingiu um platô.

Explorar

Em startups no estágio de exploração, a ordem é investir pouco tempo e esforço em várias ideias de produto diferentes. A exploração é caracterizada pelo fato de que a maioria das ideias não são adequadas. Somente com iteração e aprendizado você encontra o produto e o ajuste no mercado. Ao fazer várias pequenas apostas, você pretende encontrar uma ideia de produto que valha a pena.

Esse estágio requer disciplina. É fácil investir demais em uma ideia que você poderia testar com menos tempo e energia. Tecnólogos caem muito fácil nessa armadilha. Para fazer escolhas de arquitetura que facilitam a exploração, lembre-se de que você está explorando. Você ainda não sabe se a ideia atual do produto é aquela que será escalonada.

Do ponto de vista da arquitetura, escolha os serviços que otimizam a velocidade, o custo e as opções. Use serviços gerenciados e PaaS (plataformas como serviço), como o Serviço de Aplicativo do Azure, para começar rapidamente sem se preocupar com a infraestrutura complexa. Gerencie custos escolhendo camadas gratuitas e tamanhos de instância menores enquanto você está explorando. Os contêineres oferecem suporte ao desenvolvimento com quaisquer ferramentas que façam sentido para você e oferecem opções de implantação flexíveis para o futuro.

Criar a primeira pilha

Assim como acontece com a primeira versão do produto, a 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ços. 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. A velocidade é sobre a rapidez com que você pode criar e seguir em frente com uma ideia ou passar para a próxima. O custo é o quanto você está gastando para gerenciar sua infraestrutura. Opcionalidade descreve a rapidez com que você pode alterar as instruções dada a arquitetura atual.

É importante equilibrar custo, velocidade e opcionalidade. Foco demais em custo limita a velocidade e a opcionalidade. Foco demais em velocidade pode gerar a custos elevados e menos opções. Projetar para muitas opções amplia a complexidade, o que aumenta os custos e reduz a velocidade.

Considere usar nossa primeira pilha de tecnologia sugerida. Essa arquitetura usa serviços de 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.

Expanda

Depois que a startup encontrar crescimento por meio da exploração, prossiga para a fase de expansão. Concentre-se em remover todas as barreiras para o crescimento contínuo do produto e da empresa. Do ponto de vista técnico, você resolve desafios de escala de infraestrutura e aumenta a velocidade de desenvolvimento. As metas são atender às necessidades dos novos clientes e avançar o roteiro do produto.

Ampliar a arquitetura

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

Talvez você precise de alterações na arquitetura para acomodar itens no roteiro. Resista à tentação de fazer essas mudanças com muita antecedência. Ampliações podem aumentar a complexidade dos custos de arquitetura e infraestrutura no balanço.

Nos estágios iniciais da startup, qualquer ampliação da arquitetura deve ser just-in-time. Portanto, essa ampliação deve levar apenas o tempo e a energia necessários para testar a próxima hipótese. Esteja pronto para remover ampliações para reduzir a complexidade. Veja os recursos de produto que os clientes não estão usando como oportunidades para simplificar a arquitetura e reduzir gastos com infraestrutura.

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

Extração

Na fase de extração, o ritmo de crescimento desacelera à medida que você atinge os limites da oportunidade de mercado. Como você expandiu durante a fase anterior, agora há muito a perder, então você segue uma abordagem mais cautelosa. A expansão da margem, a redução de custos e as 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.

Lidar com o crescimento e amadurecer a pilha

Depois que um produto atinge o produto e o ajuste de mercado, muitas demandas definem a arquitetura. O aumento do uso pode exigir o dimensionamento da infraestrutura para lidar com a carga. Novos requisitos de conformidade empresarial 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 ampliação da arquitetura. Essas alterações não são requisitos funcionais, mas estão relacionadas ao desbloqueio da escala. O aumento da escala pode vir de novos clientes líquidos, do crescimento do uso de clientes existentes e de clientes com requisitos regulatórios mais altos.

Resista à tentação de otimizar prematuramente. Siga as etapas de crescimento e maturação que podem ajudar a continuar iterando e melhorando seu produto.

Próximas etapas