Criando aplicação web para vários clientes em bancos separados com Laravel

É muito comum ao criar uma aplicação web que tenhamos a intenção de liberá-la como um serviço, ou seja, o cliente irá pagar um valor periódico (mensal, semestral, etc.) pelos serviços que o software disponibiliza e não pelo software em si, isso é comumente conhecido como SaaS (Software as a service). Porém, com isso vem o desafio de gerenciar e distribuir a aplicação para esses clientes.

Um conceito muito conhecido nessa situação é o Multi Tenancy (ou Multi Tenant), ou seja, a aplicação é alugada por vários clientes e cada cliente é um inquilino (tenant). Basicamente, há duas formas de aplicar o Multi Tenancy, com banco de dados compartilhado (Single Database) e com banco de dados separado (Multi Database), cada uma possui suas vantagens e desvantagens.

Neste artigo veremos como implementar a forma com banco de dados separado. Para isso, iremos criar uma aplicação com Laravel em que cada inquilino irá acessar a aplicação através de um subdomínio próprio e através desse subdomínio iremos fazer a conexão no banco de dados específico dele. Além disso, iremos criar comandos para facilitar a criação de um novo inquilino e também para atualizar a estrutura do banco de dados.

Animação 1 – Resultado final

Código fonte disponível em: https://github.com/rafaelcouto/criando-aplicacao-web-para-varios-clientes-em-bancos-separados-com-laravel