
Introdução
Vendas de parceiros self‑hosted exigem operações fiáveis: rastreio consistente, armazenamento seguro de dados e atualizações planeadas sem interrupções. Affilentra fornece a base de software como aplicação PHP/MySQL. Este guia prático mostra como executar o Affilentra como aplicação conteinerizada — com Docker‑Compose para configurações simples e Kubernetes para ambientes de produção escaláveis e tolerantes a falhas. Foco: persistência para MySQL, backups, gestão de secrets e atualizações sem downtime para as edições PRO & NETWORK.
Visão geral da arquitetura
Componentes típicos de uma instalação Affilentra:
- Aplicação PHP (Affilentra): front‑end web, API, Scheduler/Jobs
- Servidor web (Nginx/Apache) ou reverse‑proxy (Traefik/Ingress)
- Base de dados MySQL (armazenamento persistente)
- Opcional: Redis para sessão/cache, SMTP para envio de e‑mail, object‑storage para assets
- Monitorização, logging, jobs de backup
Roles permanecem logicamente separadas entre operadores, revendedores e parceiros – a plataforma fornece as condições técnicas necessárias.
Docker‑Compose: configuração pragmática para produção
Para instalações pequenas a médias, Docker‑Compose é frequentemente suficiente. Componentes importantes:
- Service "app": PHP‑FPM ou PHP + servidor web embutido. Monte o código da aplicação read‑only, configure uma pasta de uploads persistente.
- Service "db": MySQL 8, com um volume persistente para /var/lib/mysql.
- Reverse‑Proxy: Traefik ou um container Nginx, certificados TLS externos.
- Opcional: redis, mailer, container de backup.
Variáveis de ambiente (DB_HOST, DB_NAME, DB_USER, DB_PASSWORD) não devem ficar visíveis no ficheiro Compose. Use um ficheiro .env com permissões restritas ou Docker Secrets em setups Swarm. Persistência: utilize Named Volumes ou Host‑Mounts em discos dedicados.
Backup & Restore: planeie um container de backup separado ou um Cron‑Job que gere regularmente um mysqldump consistente e grave os dumps encriptados num destino externo (compatível com S3). Teste os processos de restore regularmente.
Kubernetes: manifestos prontos para produção
Kubernetes oferece melhor escalabilidade, tolerância a falhas e integrações. Recursos recomendados:
- Deployment para a aplicação Affilentra com Readiness/Liveness‑Probes (por exemplo, endpoint de health da aplicação).
- StatefulSet para MySQL com PersistentVolumeClaims (PV/PVC) e uma StorageClass adequada (CSI‑plugin para Cloud/On‑Prem).
- Service (ClusterIP) para comunicação interna; Ingress (ou Ingress Controller) para acesso externo com TLS.
- ConfigMap para configuração não sensível; Secrets para credenciais de base de dados, API‑Keys, passwords SMTP.
- Job/CronJob para migrações de base de dados, backups e tarefas regulares de manutenção.
StatefulSet garante que os pods MySQL permaneçam ligados de forma estável a volumes persistentes. Utilize VolumeSnapshots (se o seu provedor de armazenamento suportar) além do mysqldump para uma recuperação mais rápida.
Persistência para MySQL & Estratégias de backup
Regras básicas para integridade dos dados:
- Use PersistentVolumes dedicados com uma StorageClass confiável. Evite armazenamento efêmero para bases de dados.
- Realize backups lógicos regulares (mysqldump ou mydumper) para atender a requisitos de auditoria e migração.
- Complete, se necessário, com backups físicos (por exemplo, Percona XtraBackup) ou snapshots do storage para grandes volumes de dados.
- Armazene backups criptografados e redundantes (pelo menos offsite). Teste restaurações em um ambiente isolado.
- Planeje retenção de backups e políticas de conservação adequadas aos requisitos de conformidade.
Na prática: um CronJob cria dumps diários, um snapshot semanal fornece pontos de restauração rápidos; jobs automatizados de verificação garantem que os dumps sejam legíveis.
Gestão de Secrets
Secrets são críticos para segurança e estabilidade operacional:
- Docker‑Compose: utilize Docker Secrets ou um .env criptografado; restrinja permissões de ficheiro.
- Kubernetes: armazene valores sensíveis em Secrets e use ferramentas como Sealed‑Secrets ou External‑Secrets para permitir fluxos GitOps seguros.
- Para gestão centralizada em ambientes maiores, recomenda‑se um Secret‑Store como HashiCorp Vault ou um Cloud‑KMS.
Renove os secrets ciclicamente e documente os controlos de acesso por função (operador vs. comerciante vs. parceiro).
Atualizações sem downtime
Atualizações sem interrupção são decisivas em redes de parceiros. Procedimento:
- Configure Rolling‑Updates para deployments da aplicação e use Readiness‑Probes, de modo que apenas pods saudáveis recebam tráfego.
- Para esquemas de base de dados: opte por passos de migração retrocompatíveis. Execute migrações em duas fases (compatível com escrita, compatível com leitura) ou utilize feature‑flags.
- Execute passos críticos de migração como Kubernetes Jobs fora dos caminhos de produção, ou use padrões Blue‑Green/Canary ao nível do Ingress para redistribuir tráfego gradualmente.
- Sessões e caches: externalize o estado de sessão (por exemplo, Redis), para que pods possam ser substituídos livremente.
- Prepare um cenário de fallback curto (imagem de rollback, snapshot da base de dados) em vez de longas janelas de manutenção.
Assim você reduz os riscos de indisponibilidade durante atualizações para as edições PRO & NETWORK, mesmo com um grande número de utilizadores.
Monitorização, Logging, Operação
Um deployment estável baseia‑se em monitorização e métricas visíveis:
- Reúna logs de forma centralizada (ELK/EFK, Loki) e instrumente métricas da aplicação (Prometheus, Grafana).
- Configure alertas para taxas de erro, latências, utilização de disco e falhas de backup.
- Documente runbooks para incidentes comuns: restauração de DB, falha de rede, renovação de TLS.
Lista de verificação prática para entrar em produção
Passos curtos e manejáveis:
- 1) Preparar o ambiente: host, cluster Kubernetes ou Docker‑Host com armazenamento suficiente.
- 2) Criar storage e secrets: configurar PV/PVC, StorageClass e Secret‑Store.
- 3) Deployment base: iniciar App + MySQL, executar job de migrations, realizar smoke‑tests.
- 4) Ativar backup e monitorização e testar o restore.
- 5) Definir estratégia de atualização: Rolling/Blue‑Green, planear jobs de migração e feature‑flags.
- 6) Publicar manual de operação com papéis e responsabilidades.
Conclusão e próximo passo
Affilentra pode ser conteinerizada de forma flexível — desde setups simples com Docker‑Compose até deployments escaláveis em Kubernetes. O essencial é persistência duradoura para MySQL, processos de backup e restore testados, gestão segura de secrets e uma estratégia de atualizações que minimize downtime. Aposte em Readiness‑Probes, stores de sessão externos e alterações seguras para migrações, para operar estável as PRO & NETWORK Editionen.
Próximo passo
Experimentar o Affilentra
Plataforma unificada que reúne de forma transparente a disponibilização de produtos, tracking, validação de conversões, cálculo de comissões e pagamentos ao longo de papéis claramente separados; opção de instalação self‑hosted com licença perpétua sem participação na receita; os comerciantes mantêm o controlo sobre produtos, condições e materiais promocionais; os parceiros recebem links de tracking pessoais e histórico de pagamentos rastreável.
