Cliente e contexto
Um fornecedor de formação norte-americano operava um portal de aprendizagem multi-tenant utilizado por vários clientes corporativos. A plataforma foi desenvolvida com Laravel e um front-end moderno, mas:
- O desenvolvimento local era pouco claro quanto à forma de configurar e manter em execução.
- As atualizações eram arriscadas devido a inconsistências arquiteturais.
- Existiam numerosos pequenos bugs no código legado, no layout e no comportamento multi-tenant.
Entrei como engenheiro sénior full-stack para estabilizar e evoluir a plataforma.
Desafios
- Configuração multi-tenant complexa com configuração por tenant, domínios personalizados e tarefas em background.
- Dificuldades no ambiente de desenvolvimento: a configuração do Docker, os certificados e a inicialização eram complicados e frágeis.
- Atualizações e segurança: o framework e as bibliotecas precisavam de ser atualizados, mantendo os tenants online.
- Regressões de UI e UX: problemas de carregamento de CSS/JS, layouts adaptativos quebrados e código duplicado em secções legadas.
O que fiz
1. Simplificação do desenvolvimento local e do onboarding
- Limpei e simplifiquei a configuração de Docker Compose e do
Dockerfile.
- Corrigi a geração automática de certificados e as rotinas de inicialização, incluindo cron jobs.
- Atualizei e clarifiquei a documentação de onboarding, tornando muito mais fácil para novos devs começarem a contribuir.
2. Limpeza arquitetural e atualizações
- Corrigi inconsistências arquiteturais que tornavam as atualizações difíceis e propensas a erros.
- Atualizei o backend de Laravel 8 para Laravel 9.
- Atualizei bibliotecas de Node.js e tooling de build até que todas as vulnerabilidades conhecidas fossem resolvidas.
- Atualizei a documentação de arquitetura para que futuras alterações fossem mais fáceis de planear.
3. Melhorias de qualidade e consistência
- Realizei testes manuais em funcionalidades legadas e mais recentes.
- Corrigi bugs em funcionalidade legada, incluindo:
- Lógica condicional e edge cases.
- Problemas de design adaptativo (layouts responsivos).
- Problemas de ordem de carregamento e duplicações de JavaScript e CSS.
- Consolidei migrações de base de dados e atualizei implementações de funcionalidades para alinhar o código antigo com padrões mais recentes.
4. Melhorias de multi-tenancy
- Integrei com a AWS Route 53 API para gerir subdomínios e DNS automaticamente.
- Implementei a criação de sub-tenants a partir da interface de administração do tenant.
- Adicionei processos de inicialização de tenants em background.
- Melhorei opções de configuração para campos, colunas, filtros, validações e legendas multilingues.
Resultados
- Novos developers conseguiam obter um ambiente local funcional muito mais rapidamente, reduzindo o atrito no onboarding.
- A plataforma passou para Laravel 9 com uma stack de front-end atualizada e vulnerabilidades de segurança corrigidas.
- A gestão multi-tenant tornou-se mais fiável e fácil de usar, incluindo o tratamento automatizado de domínios.
- A base de código tornou-se mais coerente e sustentável, permitindo ao cliente focar-se em novas funcionalidades em vez de apagar fogos.
Tecnologias e responsabilidades
- Função: Engenheiro sénior full-stack para uma plataforma SaaS multi-tenant
- Tecnologias: Laravel 8→9, PHP, Node.js, Docker, Docker Compose, AWS Route 53, multi-tenancy, JavaScript, CSS, responsive design
- Âmbito: Ambiente de desenvolvimento e documentação, atualizações de framework e bibliotecas, correção de bugs, melhorias de multi-tenancy e limpeza arquitetural
Se opera um SaaS multi-tenant que é difícil de atualizar e ainda mais difícil de executar localmente, posso ajudá-lo a simplificar a configuração, modernizar a stack e reduzir o atrito para a sua equipa.
Voltar a todos os estudos de caso