Como pensar em escalabilidade, segurança e perfomance usando Laravel?
Estou desenvolvendo um sistema para uma empresa em que trabalho pouco mais de 4 meses. Comecei a estudar Laravel justamente para desenvolvedor esse projeto, já atuei antes de conseguir esse emprego porém como estagiário utilziando Codeigniter 3 (Daí começou meu flerte com PHP). Agora atuo como Analista de Sistemas na empresa em que estou desenvolvendo o projeto. Porém eu sou o único desenvolvedor nela, mas já consegui coloca uma pequena parte do que desenvolvi para produção e está funcionando.
Minha dúvida geral seria para quem tem mais XP trabalhando com Laravel, gostaria de algumas dicas de como posso melhorar minha aplicação, visando deixar ela mais segura, performática e escalável, não quero que no futuro meu desenvolvimento vire um "sistema legado" que dê dor de cabeça para futuros desenvolvedores e até mesmo o meu futuro eu.
Minha aplicação está em uma VPS, estou usando docker tanto para rodar a aplicação quanto para o banco de dados, o sistema trabalha muito com filas e essas filas estão usando o driver database.
Enfim, apenas gostaria de dicas de devs que tem mais experiência no Laravel de como me dar melhor com essa tech que está sim ganhando o meu coração.
Eu não me preocuparia com a escalabilidade neste momento. O foco agora deve ser colocar o sistema para funcionar, e depois você pode começar a monitorar o desempenho.
Claro, é importante seguir boas práticas desde o início. Uma sugestão é instalar o pacote Debugbar, que vai te ajudar a identificar consultas mal otimizadas ou repetitivas.
E no futuro, você pode migrar o sistema para o Google Cloud Run e aproveitar a escalabilidade automática. Aí é só ser feliz!
escalabilidade, segurança e perfomance usando Laravel?
vou começar pelo meio
Segurança
Laravel conta com uma série de medidas de segurança. Se seguir todas as boas práticas não tem como errar.
Está com um desafio? Leia a documentação e entenda como é feito, não tenta inventar soluções anormais.
Escalabilidade e Performance
Aqui é um tópico complicado. Toda abstração tem um custo. O Laravel é facil de usar, rápido de desenvolver, o básico está pronto.
Ele cobra seu preço na performance.
Laravel é EXTREMAMENTE pesado. E caso não esteja acreditando quanto coloca um breakpoint no index.php e conta quantos métodos ele chama até chegar no seu controller.
Você precisa de um sistema performático?
Ou fazendo outra pergunta, seu sistema tem milhares de usuários diferentes usando-o todos os dias?
Minha aplicação está em uma VPS
Se você prealmente precisasse de algo 'escalável e performático' não teria escolhido laravel. Prova que você não precisa se preocupar com isso é que sua aplicação está rodando em um servidor só.
Meu conselho é apenas se preocupar com escalabilidade quando 10 servidores grandes não tiverem mais dando conta para servir sua aplicação.
Mas pilati, devo ignorar qualquer problema de desempenho só porque a aplicação é pequena?
Com certeza não.
-
Desenvolver pensando em usar o DB o menos possível. Verificar quais querys executam todos os requests (se tiver algum middleware que faz consulta no banco) e sempre usar o
->with()
em consultas que retornam coleções -
Otimizar as telas mais acessadas. (Sim, apenas as acessadas diariamente. se uma tela é acessada uma vez por mês não precisa de otimização)
-
Cachear consultas e trabalhos pesados
-
Usar postgres em vez de Mysql, se possível -> Quando troquei minha aplicação de mysql para postgres nem acreditei no ganho de performance que tive sem fazer nenhuma alteração no código