Como documentar a arquitetura do seu servidor de MU Online
Um guia prático para mapear os componentes do seu servidor de MU Online, documentar portas e dependências, criar um runbook operacional e desenhar um diagrama de arquitetura claro.
Um servidor de MU Online não é um programa só — é um pequeno ecossistema de processos que conversam entre si. O ConnectServer recebe os jogadores e os direciona; o GameServer roda o mundo do jogo; o DataServer é a ponte com o banco de dados; o SQL Server guarda contas, personagens e itens; e o site
Um servidor de MU Online não é um programa só — é um pequeno ecossistema de processos que conversam entre si. O ConnectServer recebe os jogadores e os direciona; o GameServer roda o mundo do jogo; o DataServer é a ponte com o banco de dados; o SQL Server guarda contas, personagens e itens; e o site publica rankings e a área do jogador. Cada peça escuta em portas específicas, depende de outras para funcionar e tem sua própria forma de iniciar, parar e falhar. Enquanto está tudo funcionando, essa complexidade fica invisível. O problema aparece no dia do incidente: o GameServer não sobe, e você não lembra em qual porta o DataServer escuta, nem qual componente depende de qual, nem a ordem certa de reinicialização. Documentar a arquitetura é justamente construir o mapa que você vai precisar exatamente nesse momento — e que qualquer pessoa que assuma o servidor no futuro também vai precisar. Este tutorial mostra como mapear cada componente, registrar portas e dependências em tabelas claras, escrever um runbook operacional que qualquer administrador consegue seguir e desenhar um diagrama de arquitetura legível. Os números de porta e nomes de componente citados são exemplos e variam por emulador/versão; o método de documentar, não.
Por que documentar vale o esforço
Documentação de arquitetura parece burocracia até a primeira vez que salva você. Os ganhos concretos:
- Resposta a incidentes mais rápida: com portas e dependências à mão, o diagnóstico deixa de ser adivinhação.
- Onboarding: um novo administrador entende o servidor em horas, não em semanas.
- Continuidade: se você precisar se afastar, o servidor não morre junto com o seu conhecimento.
- Prevenção de erros: ao mapear dependências, você enxerga pontos frágeis antes que virem incidentes.
- Base para automação: scripts de deploy e monitoramento nascem naturalmente de uma arquitetura bem documentada.
A documentação é, no fundo, a memória externa do servidor. E memória externa não esquece detalhes às três da manhã.
Pré-requisitos
- Acesso completo ao servidor para inspecionar processos, portas e arquivos de configuração.
- Conhecimento dos componentes que compõem o seu servidor (ou disposição para descobri-los).
- Um local versionado para guardar a documentação, de preferência um repositório Git privado separado da máquina do servidor.
- Uma ferramenta de diagrama: pode ser Mermaid (texto), draw.io, Excalidraw ou similar — todas gratuitas.
- Editor de texto ou Markdown para escrever as tabelas e o runbook.
Se você está montando o servidor agora, vale documentar em paralelo à construção, seguindo um guia de como criar servidor de MU Online. Documentar durante a montagem é muito mais fácil do que reconstruir o mapa depois, de memória.
Passo 1 — Inventariar os componentes
Comece listando tudo que compõe o servidor. Para cada componente, registre: o nome, a função, o executável ou serviço correspondente, a pasta onde vive e como ele é iniciado. Um servidor de MU típico tem esta espinha dorsal:
| Componente | Função | Executável (exemplo) | Depende de |
|---|---|---|---|
| SQL Server | Armazena contas, personagens e itens | serviço MSSQLSERVER | — |
| DataServer | Ponte entre GameServer e banco | DataServer.exe | SQL Server |
| GameServer | Roda a lógica do mundo do jogo | GameServer.exe | DataServer |
| ConnectServer | Recebe logins e lista servidores | ConnectServer.exe | GameServer registrado |
| JoinServer / eventos | Serviços auxiliares (guild, eventos) | varia | DataServer / GameServer |
| Site / painel | Rankings, cadastro, área do jogador | IIS / Apache | SQL Server |
Preencha a coluna de executável com os nomes reais do seu emulador — eles variam por emulador/versão. Alguns emuladores fundem componentes, outros dividem ainda mais (por exemplo, separando um servidor de chat ou de ranking). O objetivo aqui é não deixar nenhuma peça de fora: tudo que precisa estar de pé para o jogador entrar deve constar na lista.
Passo 2 — Mapear as portas
Portas são o ponto onde a documentação mais paga na prática. Cada componente escuta em uma ou mais portas, e conflitos ou bloqueios de porta estão entre as causas mais comuns de servidor fora do ar. Monte uma tabela dedicada.
| Componente | Porta (exemplo) | Protocolo | Exposta à internet? | Observação |
|---|---|---|---|---|
| ConnectServer | 44405 | TCP | Sim | Porta que o cliente usa para listar servidores |
| GameServer | 55901 | TCP | Sim | Porta de entrada no mundo do jogo |
| DataServer | 55960 / 55970 | TCP | Não | Apenas interna; jamais expor |
| SQL Server | 1433 | TCP | Não | Apenas localhost/rede interna |
| Site | 80 / 443 | TCP | Sim | HTTP/HTTPS público |
Duas regras de ouro aqui. Primeira: componentes internos como DataServer e SQL Server nunca devem ser expostos à internet. Se estiverem, é uma falha de segurança grave — o firewall deve bloqueá-los de fora. Segunda: documente as portas reais do seu servidor, verificando-as em vez de copiar valores de tutoriais. Para descobrir o que está escutando, no Windows use:
netstat -ano | findstr LISTENING
Cruze os PIDs retornados com o Gerenciador de Tarefas para saber qual processo abriu cada porta. Os valores da tabela acima são apenas exemplos comuns e variam por emulador/versão e por configuração.
Passo 3 — Documentar as dependências e a ordem de inicialização
Depois de saber o que existe e onde escuta, registre como as peças dependem umas das outras. Isso define a ordem de subida e de parada, que é crítica: subir na ordem errada faz componentes falharem porque aquilo de que precisam ainda não está pronto.
A cadeia de dependência típica é:
SQL Server → DataServer → GameServer → ConnectServer
↓
JoinServer / eventos
Traduzido em regras operacionais:
- Ordem de subida: SQL Server primeiro, depois DataServer, depois GameServer, por último ConnectServer. As fundações antes do que os jogadores tocam.
- Ordem de parada: exatamente o inverso — ConnectServer primeiro (fecha a porta de entrada), depois GameServer, depois DataServer.
- Pontos de falha: se o SQL Server cai, tudo cai atrás dele. Se o DataServer cai, o GameServer perde o banco. Documente esses efeitos em cascata para não perder tempo diagnosticando o sintoma quando a causa está na base.
Registre também dependências externas: o site depende do SQL Server; algum serviço de eventos pode depender de horário sincronizado; o registro de novas contas pode passar pelo mesmo banco. Cada seta no diagrama de dependências é uma pista de diagnóstico futura.
Passo 4 — Escrever o runbook operacional
O runbook é o manual de operação — o "como fazer" que complementa o "o que é" do inventário e do diagrama. Ele deve ser tão claro que alguém sob pressão consiga seguir sem improvisar. Estruture-o por procedimento.
Procedimento: iniciar o servidor do zero
- Confirme que o serviço do SQL Server está em execução.
- Inicie o DataServer e aguarde a mensagem de conexão com o banco.
- Inicie o GameServer e confirme que ele se registrou no DataServer.
- Inicie o ConnectServer e verifique que ele lista o GameServer.
- Inicie os serviços auxiliares (eventos, join).
- Suba o site.
- Faça um login de teste com uma conta reservada.
Procedimento: parar o servidor com segurança
- Anuncie a manutenção aos jogadores.
- Pare o ConnectServer para bloquear novos logins.
- Aguarde alguns minutos para os jogadores online saírem.
- Pare o GameServer.
- Pare o DataServer.
- Só então, se necessário, pare o SQL Server.
Procedimento: diagnóstico rápido quando "o servidor caiu"
- Verifique quais processos estão de pé (
Get-Process). - Confira se as portas esperadas estão escutando (
netstat). - Leia os logs de cada componente, começando pela base (SQL → DataServer → GameServer).
- Identifique o componente mais "abaixo" na cadeia que falhou — a causa costuma estar ali.
Inclua no runbook os caminhos exatos de logs, as contas de teste, os comandos de verificação e os contatos de quem acionar em emergência. Um bom runbook responde perguntas antes que você precise pensar nelas.
Passo 5 — Desenhar o diagrama de arquitetura
O diagrama transforma tabelas em uma imagem que se entende num relance. Você não precisa de ferramenta cara; um diagrama em texto com Mermaid funciona muito bem e ainda pode ser versionado junto com o resto da documentação.
flowchart TD
Jogador([Cliente do jogador]) -->|44405| CS[ConnectServer]
Jogador -->|55901| GS[GameServer]
CS -->|registro| GS
GS -->|55960| DS[DataServer]
DS -->|1433| SQL[(SQL Server)]
Site[Site / Painel] -->|1433| SQL
Jogador -->|80/443| Site
O que um bom diagrama de arquitetura mostra:
- Os componentes como caixas nomeadas.
- As conexões entre eles, idealmente anotadas com a porta usada.
- A direção do fluxo (quem inicia a conexão com quem).
- A fronteira de exposição: deixe visualmente claro o que é público (cliente, site) e o que é interno (DataServer, SQL). Um retângulo tracejado em volta dos componentes internos comunica isso bem.
Mantenha o diagrama simples. O objetivo é orientação rápida, não capturar cada detalhe. Detalhes vivem nas tabelas; o diagrama dá a visão de conjunto. E, crucialmente, atualize o diagrama sempre que a arquitetura mudar — um diagrama errado é pior que nenhum, porque induz a decisões equivocadas.
Passo 6 — Guardar e manter a documentação viva
Documentação não é um projeto que termina; é um organismo que precisa acompanhar o servidor.
- Guarde em local versionado e externo à máquina do servidor, como um repositório Git privado. Se a documentação vive só dentro do servidor e ele cai, você perde o mapa justamente quando mais precisa dele.
- Trate a atualização como parte da mudança: abriu uma porta nova? Documente no mesmo momento. Adicionou um componente? Atualize inventário, tabela de portas e diagrama antes de considerar a tarefa concluída.
- Revise periodicamente: marque uma revisão trimestral para pegar desvios que escaparam.
- Dê à equipe acesso de leitura: documentação que ninguém encontra não serve para nada.
Uma documentação viva vale por dez documentações perfeitas que congelaram no tempo. O critério de qualidade é simples: alguém que nunca viu o servidor consegue, só com esses documentos, entender a estrutura e operá-la com segurança?
Erros comuns e soluções
| Sintoma | Causa provável | Solução |
|---|---|---|
| Documentação induz a erro | Ficou desatualizada após mudanças | Atualize junto com cada alteração; revise trimestralmente |
| Ninguém acha a documentação | Guardada só na máquina do servidor | Mova para repositório Git privado acessível |
| Portas na doc não batem com a realidade | Copiadas de tutorial, não verificadas | Verifique com netstat e documente os valores reais |
| DataServer exposto à internet | Firewall mal configurado | Bloqueie portas internas de acesso externo imediatamente |
| Servidor não sobe após reinício | Ordem de inicialização desconhecida | Siga o runbook: SQL → DataServer → GameServer → ConnectServer |
| Diagnóstico lento em incidentes | Falta de runbook e mapa de dependências | Documente a cadeia de dependência e efeitos em cascata |
| Diagrama confuso e pesado | Excesso de detalhe no diagrama | Simplifique o diagrama; detalhes ficam nas tabelas |
Checklist de lançamento
- Inventário completo de componentes com função e executável
- Tabela de portas com protocolo e exposição (público x interno)
- Portas verificadas com
netstat, não copiadas de tutoriais - Componentes internos (DataServer, SQL) confirmados como não expostos
- Cadeia de dependências documentada
- Ordem de subida e de parada registrada no runbook
- Procedimentos de iniciar, parar e diagnosticar escritos passo a passo
- Caminhos de logs e contas de teste incluídos no runbook
- Diagrama de arquitetura desenhado com portas anotadas
- Fronteira público/interno visível no diagrama
- Documentação guardada em repositório versionado e externo
- Processo definido para atualizar a doc a cada mudança
Documentar a arquitetura do servidor é um investimento cujo retorno chega no pior momento possível — e por isso é tão valioso. Quando o GameServer não sobe às três da manhã, a diferença entre resolver em cinco minutos e passar a madrugada tateando no escuro é justamente ter, à mão, o inventário de componentes, o mapa de portas, a cadeia de dependências e um runbook que diz o que fazer. Comece pelo inventário, verifique as portas de verdade, desenhe um diagrama simples e mantenha tudo vivo e versionado. Adapte cada porta e nome de componente à realidade do seu emulador, porque esses detalhes sempre variam por emulador/versão.
Perguntas frequentes
Por que documentar a arquitetura se só eu administro o servidor?
Porque a documentação é sua memória externa. Meses depois você esquece detalhes de portas e dependências, e um incidente às três da manhã não é hora de tentar lembrar. Documentar também facilita passar o servidor para outra pessoa.
Qual a diferença entre diagrama e runbook?
O diagrama mostra a estrutura estática: quais componentes existem e como se ligam. O runbook descreve os procedimentos: como iniciar, parar, diagnosticar e recuperar. Um responde 'o que é' e o outro 'como operar'.
Onde devo guardar a documentação?
Em um lugar versionado e acessível mesmo com o servidor fora do ar, como um repositório Git privado. Documentar em um arquivo dentro da própria máquina do servidor é arriscado: se ela cair, a documentação cai junto.
Preciso de ferramentas caras para o diagrama?
Não. Um diagrama em texto com Mermaid, ou uma ferramenta gratuita de desenho, resolve. O importante é que o diagrama esteja correto e atualizado, não que seja bonito.
Com que frequência atualizo a documentação?
Sempre que a arquitetura mudar: nova porta, novo componente, mudança de dependência. Documentação desatualizada é pior que nenhuma, porque induz a erro. Trate a atualização como parte da própria mudança.