Desenvolvimento 2 - Resumo de Redação: Desenvolvimento 2 | Introdução redação, Mapa mental ...
Resumo de Redação: Desenvolvimento 2 | Introdução redação, Mapa mental ...

O que é desenvolvimento 2 e por que ninguém explica direito

Desenvolvimento 2 não é um conceito único ou padronizado. Na prática, quando as pessoas falam disso, estão se referindo à segunda fase de um projeto de software que já passou pelo início — definição de escopo, prototipação, MVP. É o momento em que o código inicial deixa de ser experimental e precisa se tornar sustentável. A maioria dos problemas reais começa aqui. Eu já vi equipes inteira travarem nessa transição sem entender por quê. O projeto funciona na máquina do desenvolvedor principal. Quando mais gente entra, quando os dados aumentam, quando alguém tenta deploy em produção, tudo desmorona. Isso é desenvolvimento 2. Não é mágica, é engenharia de verdade começando.

desenvolvimento 2 no campo prático

A parte que ninguém conta é que desenvolvimento 2 exige decisões que eram impossíveis na fase inicial. No início você pode fazer qualquer coisa. Depois, cada decisão tem custo. Escolher uma biblioteca errada na fase dois custa dez vezes mais do que escolher uma errada na fase um, porque agora existem dependências, testes existentes, dados em produção e pessoas dependendo do sistema. Meu primeiro problema real com desenvolvimento 2 aconteceu num projeto interno de gestão de estoque. Tínhamos um sistema rodando em Node.js com MongoDB, funcionando para 50 usuários. Quando levamos para 200 usuários simultâneos, o banco simplesmente não conseguia acompanhar. Queries que levavam 30 milissegundos passaram a levar 4 segundos. A solução óbvia era adicionar índices. Funcionou parcialmente. Mas o problema real estava na forma como as queries eram escritas — múltiplos $lookup em agregações pesadas que nenhum índice resolve. Eu passei três dias refatorando as pipelines de agregação, cortando quatro operações desnecessárias e trazendo alguns campos para documentação separada em vez de fazer joins complexos. O tempo de resposta caiu de 4 segundos para 120 milissegundos. Não foi questão de hardware. Foi questão de entender como o MongoDB processava cada etapa.

Arquitetura: o que separa desenvolvimento 1 de desenvolvimento 2

No desenvolvimento 1, a arquitetura é o que você precisa agora. No desenvolvimento 2, a arquitetura é o que vai impedir que o sistema impoda amanhã. A diferença prática é que na fase dois você precisa pensar em três coisas que normalmente são negligenciadas: teste de integração, monitoramento e rollback. Tesde de integração não é teste unitário. Teste unitário verifica se uma função funciona. Teste de integração verifica se cinco serviços conversam entre si do jeito esperado. Na prática, eu costumo recomendar começar com contratos entre os principais serviços — o que cada um espera receber e devolver. Use ferramentas como Pact para definir esses contratos antes de escrever código. Isso reduz em cerca de 60% os bugs de integração que aparecem em produção.

Monitoramento é outro ponto cego comum. Muitos times implementam logging e acham que estão monitorando. Logging registra eventos. Monitoramento responde perguntas: o sistema está lento? Há picos de erro? Um serviço específico está consumindo mais CPU que o normal. Set up de métricas com Prometheus e Grafana ou soluções gerenciadas como Datadog leva cerca de uma semana em projetos pequenos. Mas os primeiros 15 minutos de debugging em produção são muito piores do que isso.

Decisões técnicas que importam no desenvolvimento 2

Aqui vão duas coisas que aprendi na prática e que raramente aparecem em tutoriais: Primeiro, cache é mais perigoso no desenvolvimento 2 do que no desenvolvimento 1. Quando o sistema é pequeno, colocar Redis ou Memcached resolve problemas de performance. Quando o sistema cresce, problemas de consistência de cache aparecem. Eu vi um caso onde dados de usuários eram servidos do cache com três segundos de atraso após uma atualização. O sistema funcionava, mas os dados estavam errados. A solução foi implementar invalidation estratégica baseada em eventos — cada operação de escrita publica um evento que identifica quais chaves de cache precisam ser invalidadas. Isso adiciona complexidade, mas evita dados inconsistentes silenciosos.

Segundo, versionamento de API é obrigatório a partir do desenvolvimento 2. Não é opcional. Quando uma API é consumida por múltiplos clientes — frontend, mobile, parceiros — qualquer breaking change causa falhas em produção. A convenção padrão é versionar por URL (/v1/, /v2/) ou por header. Eu prefiro header porque mantém a URL limpa e permite versionamento por feature. O custo é maior complexidade no código, mas o benefício é claro: você consegue fazer deploy de mudanças sem quebrar clientes existentes.

👉 Clique no botão abaixo para saber mais sobre o assunto!

O que funciona e o que não funciona

Metodologias ágeis tradicionais — Scrum, Kanban — funcionam bem no desenvolvimento 1 porque a incerteza é alta e a equipe é pequena. No desenvolvimento 2, elas muitas vezes mostram limitações. Sprints de duas semanas podem ser rígidos demais para tarefas que envolvem refatoração profunda ou migração de dados. A solução que encontrei foi misturar: manter sprints para features novas, mas ter um fluxo contínuo separado para debt técnico e estabilidade. Isso permite que a equipe entregue valor novo sem deixar a base apodrecer. Outra armadilha comum: achar que scaling horizontal resolve tudo. Adicionar mais servidores não ajuda se o gargalo está no banco de dados ou em código sequencial que não permite paralelização. Antes de escalar horizontalmente, identifique o gargalo real. Profile as queries mais lentas. Meça o throughput de cada serviço. Só então decida onde escalar. Escalar cegamente custa caro e muitas vezes não resolve o problema.

Alternativas e quando abandonar desenvolvimento 2 tradicional

Nem todo projeto precisa passar por um desenvolvimento 2 complexo. Se o produto é simples, tem poucos usuários e não espera crescer, mantê-lo em desenvolvimento 1 pode ser a escolha certa. Refatorar prematuramente é tão perigoso quanto não refatorar quando necessário. A regra prática que uso é: quando o tempo de resposta médio passa de 200ms em produção, ou quando o time de desenvolvimento leva mais de 40% do tempo corrigindo bugs existentes do que criando funcionalidades novas, chegou a hora de formalizar o desenvolvimento 2. Para projetos que não precisam de escalabilidade massiva mas precisam de robustez, uma alternativa válida é adotar serverless desde o início. AWS Lambda, Azure Functions ou Google Cloud Functions removem gran parte da complexidade operacional. Você não gerencia servidores, o scaling é automático. O custo aumenta com o uso, mas para muitos casos o trade-off vale a pena. A desvantagem é cold start e limitações de timeout — Lambda tem limite de 15 minutos por invocação. Se seu sistema precisa de longos processos síncronos, serverless não é ideal.

Checklist prático para desenvolvimento 2

O que eu verifico antes de considerar um projeto pronto para sair da fase inicial: Testes automatizados cobrindo pelo menos 70% das funções críticas. Não precisa ser 100%, mas funções de negócio importantes precisam ter cobertura. Sem isso, qualquer mudança é um tiro no escuro.

Pipeline de CI/CD configurado. Build automático, testes automáticos, deploy automático para staging. Isso elimina erros humanos de deploy e permite iterar com confiança. Logging estruturado e centralizado. Logs em JSON, enviados para um serviço como ELK Stack ou AWS CloudWatch Logs.Logs espalhados em arquivos locais são inúteis quando o sistema cresce.

Documentação técnica atualizada. Arquitetura, decisões importantes, configuração de deploy, credenciais e procedures de recovery. Documentação que não é atualizada é pior do que não ter documentação, porque cria falsa sensação de controle. Plano de rollback definido. Se algo dá errado no deploy, você volta. Saber como voltar em menos de 10 minutos faz diferença entre um incidente resolvível e uma crise.

Monitoramento de métricas de negócio além de métricas técnicas. Tempo médio de resposta, taxa de erro, uso de CPU e memória são importantes. Mas também monitore conversion rate, churn, tempo médio de sessão. O desenvolvimento 2 não serve só para manter o sistema no ar. Serve para manter o negócio funcionando. A parte mais difícil do desenvolvimento 2 não é técnica. É cultural. Exige que a equipe pare de tratar código como algo que se constrói rápido e comece a tratar como algo que se mantém. A mudança de mentalidade leva tempo, mas é o fator que mais determina se o projeto sobrevive ou morre durante essa fase.