Cliente e contexto
Uma plataforma de marketplace de alojamento ligava proprietários de imóveis e hóspedes, com uma combinação de:
- Uma framework de gestão de conteúdos personalizada e desenvolvida internamente.
- Aplicações Laravel 8 e Nuxt 2.
- Infraestrutura a correr na AWS com Traefik e múltiplos serviços.
O sistema tinha crescido de forma orgânica e era frágil em produção e complicado de utilizar em desenvolvimento.
Desafios
- As configurações de desenvolvimento local eram inconsistentes e frágeis, por vezes exigindo dias para colocar um novo ambiente a funcionar.
- Após reinícios do servidor em produção, as aplicações por vezes não arrancavam corretamente.
- Backups e deployments eram parcialmente manuais e pouco documentados.
- O conhecimento de infraestrutura (por exemplo, configuração do Traefik) estava por documentar e apenas no servidor.
- A base de código continha configuração mal colocada, bibliotecas desatualizadas e preocupações de segurança.
O que fiz
1. Corrigi e documentei o desenvolvimento local
- Depurei, otimizei e melhorei procedimentos e configurações para:
- Desenvolvimento com e sem Docker.
- Arranque da aplicação e variáveis de ambiente.
- Melhorei e ampliei a documentação de desenvolvimento, tornando o onboarding mais simples.
2. Estabilizei o comportamento em produção
- Identifiquei e corrigi problemas que impediam as aplicações de arrancar corretamente após reinícios do servidor.
- Configurei backups automáticos na AWS para bases de dados críticas.
- Descobri uma configuração do Traefik não documentada no servidor de produção, movi-a para controlo de versões e fiz a sua limpeza.
3. Melhorei deployments e staging
- Criei um ambiente de staging para testar alterações em segurança antes de produção.
- Implementei um script de anonimização para dados de staging, para proteger a privacidade dos utilizadores.
- Configurei pipelines de Bitbucket CI/CD para simplificar o deployment e reduzir trabalho manual.
4. Corrigi problemas ao nível da aplicação
- Investiguei e aprendi como funcionava a framework de CMS personalizada e, depois:
- Corrigi bugs e concluí tarefas de funcionalidades (por exemplo, «iniciar sessão como utilizador» para administradores, melhorias de integração).
- Corrigi bugs e concluí tarefas nas aplicações Laravel 8 e Nuxt 2, incluindo:
- Mover constantes de configuração hard-coded para ficheiros
.env.
- Substituir uma biblioteca desatualizada de Google sign-in por um SDK suportado.
Resultados
- A equipa passou a ter um ambiente de desenvolvimento fiável e documentado, reduzindo o tempo de onboarding e a fricção diária.
- Reinícios e deployments em produção tornaram-se mais previsíveis e seguros.
- A plataforma passou a ter um ambiente de staging adequado, com dados anonimizados.
- A segurança e a manutenibilidade melhoraram graças a uma melhor gestão de configuração e a atualizações de bibliotecas.
Tecnologias e responsabilidades
- Função: Programador full-stack PHP/Vue com responsabilidades de DevOps
- Tecnologias: Laravel 8, Nuxt 2, framework PHP personalizada, Docker, Traefik, AWS (RDS, backups), Bitbucket CI/CD, OAuth/Google sign-in
- Âmbito: Estabilização de infraestrutura, ambiente de desenvolvimento, CI/CD, correção de bugs e implementação de funcionalidades
Se a sua plataforma de alojamento ou marketplace é frágil em produção e difícil de manter, posso ajudá-lo a estabilizar a infraestrutura, introduzir um ambiente de staging adequado e desembaraçar configuração legacy.
Voltar a todos os estudos de caso