Documentação e padronização são prioridades em projetos de médio/longo prazo.
Minha abordagem para lidar com meus projetos freelancers, onde tenho tempo limitado para tudo, é a seguinte:
-
Crio um fluxograma de utilização dos sistemas na versão 1.0, que inclui apenas o MVP (Produto Mínimo Viável), não abrangendo o cenário ideal do software, o qual fica reservado para futuras versões, uma vez que precisamos validar o projeto de forma realista. Se você estiver com dificuldade para identificar o que é realmente necessário, comece criando a versão ideal e, em seguida, analise o que é essencial para a produção.
-
Com o fluxograma em mãos, divido-o em "features" para facilitar a divisão do trabalho e definir prazos para entregas parciais, se aplicável. Como exemplo, em um sistema de biblioteca, as features podem incluir:
- Login
- Gerenciamento de Usuários
- Catálogo de Livros
- Processo de Locação
- Geração de Relatórios
-
Para cada feature, elaboro uma "User Story", que é uma descrição detalhada de como a funcionalidade deve funcionar. Em seguida, desenvolvo uma série de testes que visam cumprir essa história. Ao final desse processo, posso programar as classes antes de orquestrar as interações (TDD).
-
Agora que temos uma compreensão sólida do que precisa ser feito, podemos abordar a parte arquitetural do projeto. Começo com uma análise das estimativas de tráfego inicial e potencial crescimento, a fim de determinar como o sistema se comportará quando atingir determinados números. Aqui está um exemplo simplificado (os números são apenas ilustrativos e não têm cálculos precisos):
- Arquitetura v1: 5 requisições/s - Docker com acesso direto à aplicação através do Nginx, cache em arquivo.
- Arquitetura v2: 100 requisições/s - Docker com acesso direto à aplicação através do Nginx, cache no Redis.
- Arquitetura v3: 1000 requisições/s - Docker com balanceamento de carga no Nginx e escalabilidade na aplicação, cache no Redis.
- Arquitetura v4: 10000 requisições/s - Docker com balanceamento de carga no Nginx, aplicação seguindo a arquitetura hexagonal, cache no Redis.
Para todas as mudanças na arquitetura, recomendo que você documente as razões por trás de cada alteração. Quanto mais detalhada for essa documentação, melhor.
Lembre-se de que essa é a abordagem que melhor se adapta à minha realidade. Espero que ela possa ser útil de alguma forma para você.