Desenvolvimento

Gerenciando Infraestrutura de Produção do Firebase: Implantação Multi-Ambiente para um PWA em React

Gerenciando Infraestrutura de Produção do Firebase: Implantação Multi-Ambiente para um PWA em React

Olá, você já ouviu falar sobre a importância de gerenciar a infraestrutura de produção do Firebase? Eu estou aqui para compartilhar minhas experiências e dicas sobre como configurar e manter uma infraestrutura de produção robusta e escalável para um aplicativo PWA em React.

Recentemente, eu trabalhei em um projeto de gerenciamento de restaurantes que exigia uma arquitetura multi-tenant, controle de acesso baseado em funções, implantação em múltiplos ambientes e capacidade offline. Neste artigo, vou compartilhar o que aprendi sobre como configurar e manter uma infraestrutura de produção do Firebase para atender às necessidades desse tipo de aplicativo.

**Desafios**

O aplicativo precisava atender aos seguintes requisitos:

* Arquitetura multi-tenant: vários restaurantes usando uma única plataforma
* Controle de acesso baseado em funções: administrador, proprietário, gerente, operador e cliente
* Implantação em múltiplos ambientes: desenvolvimento, estágio e produção
* Capacidade offline: funciona sem conexão com a internet
* Atualizações em tempo real: pedidos sincronizados instantaneamente em todos os dispositivos
* Backup automatizado: proteção de dados de produção

**Tecnologias utilizadas**

* Frontend: React 18 + TypeScript + MUI
* Backend: Firebase (Autenticação, Firestore, Armazenamento, Hospedagem)
* Sistema de construção: pnpm workspaces (monorepo)
* CI/CD: GitHub Actions + Firebase CLI
* Backup: Console do Google Cloud (exportações agendadas)

**Configuração do projeto do Firebase**

Eu criei três projetos do Firebase separados para isolamento de ambiente adequado:

* Desenvolvimento: project-dev
* Estágio: project-staging
* Produção: project-production

Cada projeto tem seus próprios:

* Usuários de autenticação do Firebase
* Banco de dados do Firestore
* Bucket de armazenamento em nuvem
* Implantação de hospedagem

**Configuração de ambiente**

A parte complicada foi gerenciar as variáveis de ambiente corretamente. Aqui está a minha estrutura:

client/
├── .env # Desenvolvimento (usa emulador)
├── .env.staging # Implantação em estágio
├── .env.production # Implantação em produção
└── src/
└── constants/
└── config.ts # Configuração do Firebase

**Regras de segurança do Firestore com declarações personalizadas**

As regras de segurança impõem isolamento multi-tenant usando declarações personalizadas:

rules_version = ‘2’;
service cloud.firestore {
match /databases/{database}/documents {
// Função de ajuda para verificar acesso ao comerciante
function hasAccess(merchantId, allowedRoles) {
return request.auth != null &&
request.auth.token.merchants[merchantId] in allowedRoles;
}

// Dados do comerciante – apenas acessível por usuários atribuídos
match /merchants/{merchantId} {
allow read: if hasAccess(merchantId, [‘Admin’, ‘Owner’, ‘Manager’, ‘Operator’]);
allow write: if hasAccess(merchantId, [‘Admin’, ‘Owner’]);
}

// Pedidos – diferentes níveis de acesso
match /merchants/{merchantId}/orders/{orderId} {
allow read: if hasAccess(merchantId, [‘Admin’, ‘Owner’, ‘Manager’, ‘Operator’])
|| request.auth.token.isCustomer == true;
allow create: if hasAccess(merchantId, [‘Admin’, ‘Owner’, ‘Manager’, ‘Operator’])
|| request.auth.token.isCustomer == true;
allow update, delete: if hasAccess(merchantId, [‘Admin’, ‘Owner’, ‘Manager’]);
}
}
}

**Conclusão**

Gerenciar a infraestrutura de produção do Firebase é crucial para o sucesso de um aplicativo. Com a configuração correta, você pode garantir a escalabilidade, segurança e confiabilidade do seu aplicativo. Lembre-se de:

* Separar projetos do Firebase por ambiente
* Usar declarações personalizadas para controle de acesso multi-tenant
* Implementar múltiplas camadas de backup
* Testar as regras de segurançaoroughly
* Documentar tudo
* Usar o emulador do Firebase para desenvolvimento
* Criar scripts de ajuda do SDK do administrador

Espero que essas dicas sejam úteis para você! Se tiver alguma dúvida ou precisar de ajuda com a implantação do Firebase, sinta-se à vontade para entrar em contato.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *