Como Migrei uma Infraestrutura Completa para Digital Ocean com Zero Downtime
Case real de migracao de servidor: da Hostinger para Digital Ocean com Laravel, MariaDB e Nginx. Passo a passo tecnico com zero tempo de inatividade.
Migrar um sistema em producao e como trocar o pneu com o carro andando. Uma decisao errada e voce para tudo.
Recentemente fiz exatamente isso: migrei um ERP completo da Hostinger para Digital Ocean, com banco de dados de 91MB, sem derrubar o sistema. Aqui esta como fiz.
O Cenario Antes da Migracao
O sistema rodava em shared hosting na Hostinger:
- PHP limitado, sem controle de versao
- MySQL com restricoes de conexao
- Sem SSH root (apenas acesso limitado)
- Performance inconsistente em horarios de pico
O cliente precisava de mais: deploy automatizado, controle total, e performance previsivel.
A Decisao: Por Que Digital Ocean
Avaliamos tres opcoes:
| Criterio | AWS | Digital Ocean | Hostinger VPS |
|---|---|---|---|
| Custo mensal | ~$40-80 | ~$24 | ~$15 |
| Complexidade | Alta | Media | Baixa |
| Controle | Total | Total | Parcial |
| Suporte | Documentacao | Comunidade forte | Limitado |
| Performance | Excelente | Excelente | Variavel |
Digital Ocean ganhou pelo equilibrio entre custo, controle e simplicidade. Para um ERP com ~50 usuarios simultaneos, nao precisavamos da complexidade da AWS.
Stack Final
Ubuntu 24.04 LTS
├── Nginx 1.24 (reverse proxy + SSL)
├── PHP 8.3 FPM (20 workers)
├── MariaDB 10.11 (banco principal)
├── Node.js 20 (build assets)
└── Certbot (SSL automatico)
Droplet: 2 vCPUs, 4GB RAM, 80GB SSD - R$ 120/mes.
O Processo de Migracao
Fase 1: Preparacao do Servidor (2 horas)
Provisionei o Droplet e instalei toda a stack:
# Atualizacao base
apt update && apt upgrade -y
# Nginx + PHP 8.3
apt install nginx php8.3-fpm php8.3-mysql php8.3-xml php8.3-curl -y
# MariaDB
apt install mariadb-server -y
mysql_secure_installation
# Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install nodejs -y
Fase 2: Banco de Dados (30 minutos)
O banco tinha 91MB - nao e gigante, mas qualquer erro aqui e fatal:
# Dump no servidor antigo
mysqldump -u user -p database > backup.sql
# Restauracao no novo servidor
mysql -u appuser -p production_db < backup.sql
Validei tabela por tabela. Contagem de registros, checksums, tudo batendo.
Fase 3: Codigo e Configuracao (1 hora)
# Clone do repositorio
cd /var/www
git clone repo app_system
# Dependencias
composer install --no-dev
npm install && npm run build
# Permissoes
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage
Fase 4: DNS e SSL (15 minutos)
O truque para zero downtime: configurei tudo no novo servidor ANTES de apontar o DNS.
# SSL com Certbot
certbot --nginx -d app.meucliente.com.br
# Teste local (editando /etc/hosts)
curl -k https://app.meucliente.com.br
So depois que tudo estava funcionando no novo servidor, mudei o DNS. Propagacao levou ~10 minutos. Durante esse tempo, ambos os servidores respondiam.
Resultado
| Metrica | Antes (Hostinger) | Depois (DO) |
|---|---|---|
| TTFB | ~800ms | ~120ms |
| Tempo de deploy | Manual, 15min | Git push, 2min |
| Uptime | ~99.2% | 99.9%+ |
| Custo | R$ 80/mes | R$ 120/mes |
O custo subiu R$ 40, mas o ganho de performance e controle compensou em menos de uma semana. O cliente parou de reclamar de lentidao - isso nao tem preco.
Licoes Aprendidas
- Sempre teste antes de migrar o DNS - parece obvio, mas muita gente migra no escuro
- Backup do backup - fiz 3 copias do banco antes de comecar
- PHP FPM faz diferenca absurda - shared hosting nao chega perto
- Automatize desde o dia 1 - deploy via git push economiza horas por semana
Precisa Migrar Sua Infraestrutura?
Se seu sistema esta lento, instavel ou voce nao tem controle do servidor, uma migracao bem planejada resolve. Faco esse tipo de trabalho regularmente para empresas que precisam de infraestrutura confiavel.
Entre em contato: sakaguchi.ia.br ou WhatsApp (11) 99659-1308.
Sakaguchi IA - Inteligencia Artificial e Infraestrutura para Empresas Brasileiras