Saltar para o conteúdo
megapromotingVamos falar

Especialização · Infraestrutura e operação

Colocamos a aplicação num servidor que controlamos, com publicação reversível, cópias de segurança verificadas e um local onde se vê quando algo caiu.

Alojamento, colocação em funcionamento, monitorização e continuidade para aplicações web e plataformas com base de dados. Trabalhamos numa infraestrutura que o cliente pode reivindicar: máquinas virtuais em fornecedores europeus, nginx, processos sob supervisão, contentores, base de dados autoalojada. Inclui a resposta à pergunta «onde ficam efetivamente os meus dados».

Já construídoOperăm în acest fel mai multe sisteme proprii, iar configurațiile sunt în depozite, nu doar pe servere. Site-ul acesta rulează pe nginx cu Next.js 16 sub PM2, la OVHcloud București. Platforma de asistenți rulează pe Microsoft Azure, Poland Central, cu MySQL, Redis și RabbitMQ în containere legate la interfața locală. O platformă civică proprie folosește unități systemd cu publicare prin comutare atomică de legătură simbolică, copie de siguranță zilnică verificată și o sarcină separată de retenție care rulează numai dacă acea copie a reușit. Un board intern se publică prin runner propriu, cu acțiuni GitHub fixate pe amprentă completă și cu revenire automată la versiunea anterioară dacă verificarea de sănătate cade după publicare. Rezerva care trebuie spusă: gradul de automatizare diferă de la sistem la sistem. Publicarea acestui site se face încă manual, iar migrările de bază de date sunt aplicate cu mâna, deliberat. Nu vindem un lanț automat pe care nu îl avem peste tot.

Uma aplicação que funciona no portátil e uma que funciona em produção distinguem-se por coisas que não se veem na interface: o que acontece quando o processo morre às três da manhã, o que acontece quando uma publicação corre mal, para onde vão os registos, quem fica a saber primeiro que algo caiu e de onde se recupera a base de dados se o disco desaparecer. Este serviço trata exatamente dessa parte.

A escolha de base que propomos é a infraestrutura que o cliente pode reivindicar: uma máquina virtual num fornecedor europeu, nginx à frente, processos sob um supervisor, contentores onde faz sentido, base de dados autogerida onde a independência conta mais do que a comodidade. Não porque as plataformas geridas sejam más — mas porque um dia vai querer poder levar tudo e ir-se embora, e se isso não foi pensado no início, já não se faz barato.

A pergunta sobre a soberania dos dados tem uma única resposta honesta: uma verificada. A localização confirma-se interrogando o serviço de metadados da máquina virtual e o registo do endereço, não lendo a página de marketing do fornecedor. A diferença não é teórica — para uma transferência dentro do Espaço Económico Europeu, o capítulo das transferências da Lei 195/2024 simplesmente não se aplica. Uma migração feita por nós moveu uma plataforma de uma base de dados alojada nos Estados Unidos para uma stack autogerida na União Europeia, precisamente por esse motivo.

O que não prometemos: que tudo é automático. As migrações de esquema são aplicadas à mão, deliberadamente, porque uma migração aplicada automaticamente em produção por uma cadeia que não sabe o que há na tabela é a forma habitual de perder dados. A publicação do código é automatizada; a alteração da estrutura da base continua a ser uma decisão humana, com uma cópia de segurança fresca atrás.

Qué incluye

El trabajo, por componentes

Publicação reversível, com verificação depois, não apenas antes

A publicação não termina quando os ficheiros chegam ao servidor, mas quando um pedido real prova que a nova versão é a que está a ser servida. Numa das implementações, o script sincroniza o diretório, mantém a versão anterior ao lado e depois extrai o nome do pacote da página entregue e verifica no endereço público se é exatamente esse ficheiro que está a ser servido; se não, reverte sozinho para a versão anterior. Não é teórico: o mecanismo apanhou um pacote que ficou desatualizado no diretório do runner e cancelou uma publicação que, de outro modo, teria parecido bem-sucedida.

Comutação atómica de versão, com o processo sob systemd

A alternativa a «paramos, copiamos por cima, arrancamos» é o diretório de versões mais um link simbólico comutado numa única operação. A unidade systemd aponta sempre para o caminho estável, e a reversão significa comutar o link para trás. A unidade tem política de reinício em caso de falha com uma pausa curta, tempo máximo de paragem e restrições de sistema: sem escalada de privilégios, sistema de ficheiros protegido, diretórios pessoais inacessíveis, com uma lista explícita de caminhos onde lhe é permitido escrever.

nginx à frente, com limites definidos para o caso real

Terminação TLS com renovação automática do certificado, HSTS com duração de um ano e inclusão de subdomínios, compressão com limiar mínimo de tamanho, recursos estáticos com expiração longa e marcação imutável, e a aplicação ligada à interface local para não poder ser acedida diretamente da internet. Os limites de taxa são definidos por tipo de tráfego, não globalmente. Uma lição paga merece ser dita: sob HTTP/2, o limite de ligações conta os fluxos, não as ligações — num valor baixo, um único carregamento de página rejeita por si próprio os seus tipos de letra e scripts com 429.

Cópia de segurança que é verificada, não apenas executada

Tarefa diária agendada, com arranque no próximo boot se a máquina estava desligada à hora respetiva e com atraso aleatório para não arrancar tudo no mesmo segundo. A exportação da base é comprimida e, se o ficheiro resultante estiver vazio, a execução é tratada como falha — uma exportação que termina «com sucesso» e produz zero bytes é a forma habitual de descobrir, seis meses depois, que não existe cópia. Os ficheiros do repositório de objetos são sincronizados separadamente. Uma cópia 100% local não sobrevive à perda do disco, por isso a cópia vai também para fora da máquina, para uma conta de armazenamento na União Europeia com replicação geográfica, versionamento, eliminação reversível e expiração automática — com acesso por identidade gerida, para não existir nenhuma chave de armazenamento no disco.

A eliminação agendada corre apenas depois de uma cópia bem-sucedida

A tarefa de retenção depende explicitamente da de cópia e começa depois dela. Uma limpeza sem cópia recente é a única forma de eliminação da qual não há retorno. Ao contrário da cópia, a eliminação não recupera as execuções perdidas: se a máquina estava desligada, não se elimina duas vezes no dia seguinte. Cada execução escreve uma linha numa tabela de execuções e, antes da primeira ativação real, a tarefa corre em vazio durante pelo menos uma semana e o registo é lido.

Alarmes que não mentem e não fazem spam

Uma tarefa agendada que devolve 200 não significa uma tarefa que funcionou. O nosso invólucro de execução lê o corpo da resposta e procura aí falhas parciais, depois envia um alerta com limitação de frequência, para que um serviço em baixo durante todo o dia não produza noventa e seis mensagens idênticas. O motivo de existir: um relatório diário esteve morto onze dias seguidos e o único vestígio era um vazio numa tabela que ninguém vigiava. A tarefa agendada tinha disparado as onze vezes.

Cadeia de publicação que não pode ser desviada a montante

As ações do fluxo de integração são fixadas no fingerprint completo do commit, não na etiqueta. Em março de 2026, uma ação popular foi redirecionada das etiquetas `v1`…`v45` para código malicioso e atingiu mais de 23.000 repositórios em 24 horas; um fingerprint não se move. O fluxo não guarda credenciais na cópia de trabalho, e a publicação não passa por um token: segue por um runner próprio, na máquina-alvo, com direitos concedidos de forma pontual. Assim, nenhuma chave de acesso ao servidor fica na plataforma de código.

Contentores com limites, verificações de saúde e registos que não enchem o disco

Cada serviço tem política de reinício, verificação de saúde própria (preparação da base de dados, um ponto de estado da aplicação), limites de processador e memória onde a carga o exige, e rotação de registos ao nível do motor de contentores, com tamanho máximo e número de ficheiros. As portas das bases de dados ligam-se à interface local, nunca públicas. As variáveis obrigatórias são declaradas de forma a que o contentor recuse arrancar se faltarem, em vez de arrancar com um valor predefinido perigoso.

Base de dados autoalojada, quando a independência conta

Pilha completa em contentores — base de dados, autenticação, interface REST, canal em tempo real, armazenamento de ficheiros, gateway — com as extensões ativadas explicitamente e com os parâmetros de memória e de ligações adequados à máquina, não deixados nos valores predefinidos. As migrações são ficheiros versionados no repositório e aplicam-se manualmente, com o reinício do componente que mantém o esquema na memória. O motivo desta escolha é simples: uma plataforma gerida de fora da União Europeia pode ser excelente do ponto de vista técnico e ainda assim inadequada do ponto de vista jurídico.

Qué aspecto tiene

El recorrido, paso a paso.

01

Inventariamos o que existe e o que se pode perder

O que corre efetivamente na máquina, sob que supervisor, com que versões, com que portas expostas; que cópias de segurança existem e se alguma foi alguma vez restaurada; que segredos chegaram aos repositórios; qual é a diferença entre a configuração no repositório e o ficheiro no servidor. O último ponto produz quase sempre surpresas — nós próprios temos documentado um caso em que o ficheiro no servidor tinha sido editado diretamente, fora do repositório, e deixou ao lado uma cópia de segurança com carimbo temporal. Entregamos o inventário e a lista de pontos únicos de falha.

02

Estabelecemos a base: servidor, nginx, processos, hardening

Firewall que recusa por defeito as entradas e abre apenas o que é necessário, proteção contra tentativas repetidas de autenticação, espaço de swap dimensionado, nginx com TLS e renovação automática, aplicação ligada à interface local, supervisor de processos configurado para arrancar no boot. Entregamos as configurações no repositório, não apenas na máquina, para que a próxima pessoa não tenha de as reconstruir da memória.

03

Tornamos a publicação repetível e reversível

Script de publicação com a versão anterior preservada, verificação de saúde após a publicação e reversão automática em caso de falha. Onde existe equipa e integração contínua, adiciona-se runner próprio na máquina de destino, com ações fixadas por fingerprint e sem credenciais na cópia de trabalho. Entregamos o procedimento escrito e uma reversão executada à frente do cliente — uma reversão não testada não é uma reversão.

04

Colocamos as cópias, a retenção e os alertas

Cópia diária com verificação de que o ficheiro não está vazio, cópia fora da máquina numa região da União Europeia, tarefa de retenção que corre apenas após uma cópia bem-sucedida e deixa rasto, mais alertas com limitação de frequência que leem o conteúdo da resposta, e não apenas o código de estado. Entregamos uma restauração de teste feita de facto e o respetivo registo.

05

Entregamos as chaves e escrevemos o que fica por fazer

Acesso na própria conta, documentação de operação, lista de tarefas agendadas e — obrigatório — a lista honesta das coisas que não foram automatizadas e porquê. Para nós, duas ficam quase sempre na lista: as migrações de esquema, aplicadas manualmente de propósito, e a publicação deste site, que ainda é manual.

Ce vede utilizatorulAplicațiaRețea și securitateGăzduire și dateFIECARE STRAT, ALES ȘI EXPLICAT
Straturile unei instalări, de jos în sus: mașina virtuală într-o regiune europeană confirmată, motorul de containere cu rotația jurnalelor, baza de date cu copia zilnică verificată și copia din afara mașinii, procesele sub supraveghetor cu repornire la eșec, nginx cu TLS și limite de rată — iar lateral, lanțul de publicare cu versiunea anterioară păstrată și revenirea automată.

Os dados

Qué tocamos, dónde están y cuánto se quedan

Las preguntas que hace cualquiera que tenga un delegado de protección de datos — hechas aquí antes de que las haga él.

Onde os dados ficam efetivamente e como se verifica
A localização confirma-se a partir da máquina, não da documentação: o serviço de metadados do fornecedor indica a região real, e o registo de endereço indica o país. Os nossos sistemas estão na OVHcloud, Bucareste, Roménia e na Microsoft Azure, Poland Central — ambos no Espaço Económico Europeu. As cópias de segurança da plataforma cívica ficam numa região nórdica da União, com replicação para uma segunda região também da União. Estas linhas substituíram uma lista mais longa de localizações que não pudemos confirmar.
O que vemos nós durante o trabalho
Configuração, registos, esquema da base e estado dos processos. O conteúdo dos dados pessoais não faz parte do trabalho; quando a depuração exige mesmo assim um exemplo, usa-se um caso criado para isso. O acesso administrativo é concedido durante a intervenção, nominalmente, e é retirado no fim — e a retirada é verificada, não presumida.
Os registos e quanto duram
Os registos web deste site rodam diariamente, com catorze exemplares guardados, com direitos de leitura restritos ao grupo de administração. Ao nível dos contentores, a rotação é feita pelo motor de contentores, com tamanho e número de ficheiros fixados, para que um serviço tagarela não encha o disco e pare a base de dados — a forma mais banal de fazer cair uma produção.
Os segredos não ficam no repositório
Os valores sensíveis entram a partir de ficheiros de ambiente com direitos restritos, lidos pela unidade de sistema, não escritos na unidade — porque a definição de uma unidade e o registo do sistema são legíveis por mais pessoas do que se pensa. Na cadeia de publicação, o ficheiro de ambiente da produção não passa pela plataforma de código: é copiado localmente para a máquina e apagado imediatamente após a construção. Quando assumimos uma infraestrutura existente, a primeira passagem é sempre um inventário dos segredos que chegaram aos repositórios, com plano de rotação.
Continuidade: o que acontece quando saímos
A entrega significa acesso na sua própria conta ao fornecedor de infraestrutura, ao repositório com todas as configurações de servidor, ao procedimento de publicação e de reversão, ao de restauração da cópia de segurança — testado, não apenas escrito — e à lista das tarefas agendadas com o que cada uma faz. O bloqueio contra eliminação acidental é colocado desde o início no grupo de recursos da produção.

Un caso

Um relatório diário que já não corria há onze dias, num sistema em que tudo respondia 200

A situação

Numa plataforma interna própria, várias rotinas automáticas produzem relatórios e limpam dados diariamente. As tarefas eram iniciadas de dentro da aplicação, com contadores em processo. Nada indicava qualquer problema: o serviço estava iniciado, o endereço respondia, os registos não continham erros.

Qué construimos

O relatório diário faltava há onze dias, e o único vestígio era um vazio numa tabela que ninguém via. Vieram a público dois defeitos distintos. O primeiro: um contador iniciado dentro da aplicação reinicia a cada reinício do serviço, logo uma rotina com intervalo maior do que o intervalo entre publicações nunca é acionada. O segundo, mais insidioso: a rotina tinha sido acionada corretamente nas onze vezes e devolveu sempre o código 200 — mas o corpo da resposta continha falhas parciais que ninguém lia.

Qué salió

A programação foi movida para fora da aplicação, para um agendador de sistema que não se importa com reinícios. A execução foi envolvida num script que escreve uma linha de registo por execução, percorre o corpo da resposta por chaves de falha e envia um alerta para um canal de mensagens — com limitação de frequência, para que uma dependência caída durante todo o dia não produza noventa e seis mensagens idênticas. Uma resposta 200 com falhas internas tem agora estado próprio, distinto de sucesso.

Qué no dice el caso

Nada disto foi um problema de infraestrutura no sentido clássico: o servidor funcionava, o disco tinha espaço, o processo estava vivo. Foi exatamente por isso que durou onze dias. Os defeitos operacionais mais caros não são as falhas — essas vêem-se — mas as coisas que reportam sucesso sem fazer nada. A verificação de saúde que importa não pergunta "está iniciado?", mas "fez o que devia, o número de vezes que devia?".

Perguntas

Lo que nos pregunta la gente antes de llamar

Onde é que os nossos dados vão ficar efetivamente?

Onde você escolher, e verificamos que é mesmo aí. Os nossos sistemas estão na OVHcloud, Bucareste, e na Microsoft Azure, Poland Central, ambas no Espaço Económico Europeu, e a localização foi confirmada consultando o serviço de metadados da máquina virtual e o registo do endereço — não lendo a documentação do fornecedor. A verificação importa: para uma transferência no interior do Espaço Económico Europeu, o capítulo sobre transferências da Lei 195/2024 não se aplica e não são necessárias autorizações especiais. Fora dele, surge um dossier de garantias.

Por que servidor próprio e não uma plataforma gerida?

Nem sempre. Uma plataforma gerida é a escolha correta quando a equipa é pequena, o tráfego é irregular e nada da stack tem requisitos de residência. O servidor próprio torna-se o melhor argumento em três situações: quando os dados têm de permanecer numa jurisdição específica, quando o custo se torna imprevisível à escala, e quando vocês querem poder levar tudo e ir embora. Também fizemos a migração inversa para um sistema próprio: de uma base de dados alojada nos Estados Unidos para uma stack autoalojada na União Europeia, com oito contentores — base de dados, autenticação, interface REST, tempo real, armazenamento, metadados, painel e gate de acesso.

O que acontece se uma publicação correr mal?

Reverte-se, e de preferência automaticamente. A versão anterior permanece no disco ao lado da nova, e após a publicação uma verificação solicita a página real e confirma que o ficheiro servido é o acabado de construir; se não for, o script reverte automaticamente. Onde usamos a comutação atómica de ligação simbólica, a reversão é uma única operação. Não é uma descrição de folheto — o mecanismo já apanhou uma publicação com um pacote antigo deixado no diretório de trabalho do runner e anulou-a.

Fazem cópias de segurança? Com que frequência e testam-nas?

Diariamente onde a construímos — e sublinhamos isto, porque uma cópia automática não aparece sozinha quando você muda uma aplicação para um servidor. A cópia corre à hora certa, é recuperada no boot seguinte se a máquina estava desligada, e se a exportação sair vazia a execução é tratada como falha. A cópia também sai da máquina, para uma região da União Europeia, com replicação, versionamento, eliminação reversível e expiração automática. O teste de restauro faz parte da entrega: uma cópia nunca restaurada é uma suposição, não uma cópia.

Quem fica a saber primeiro quando algo falha?

Depende do que construímos, e vale a pena dizê-lo sem floreios. As verificações de saúde ao nível do contentor e os pontos de estado das aplicações existem; o alerta para um canal de mensagens, com limitação de frequência, existe onde o construímos. Um ponto de verificação de estado que ninguém consulta não é monitorização — é uma página. Se você quer monitorização verdadeira, é uma etapa separada, com um observador externo que consulta periodicamente e com um destinatário do alerta que pode ser acordado.

Aplicam automat as migrações da base de dados a cada publicação?

Não, e é uma decisão tomada de forma consciente, não uma falha. A cadeia de publicação constrói e copia o código; só isso. As alterações de esquema são ficheiros versionados no repositório, aplicados manualmente, com uma cópia de segurança recente em back-up, e os componentes que mantêm o esquema em memória reiniciam depois. Uma migração aplicada automaticamente em produção por um processo que não sabe o que está na tabela é a forma habitual de perder dados de forma irreversível.

Como evitam que a vossa cadeia de publicação se torne uma via de ataque?

Através de três regras. As ações externas são fixadas na impressão digital completa do commit, e não na etiqueta — em março de 2026, uma ação usada em larga escala foi redirecionada das suas etiquetas para código malicioso e atingiu mais de 23.000 repositórios em 24 horas. A cópia de trabalho não mantém credenciais. A publicação não é feita com uma chave de acesso armazenada na plataforma de código, mas sim por um executante próprio que corre na máquina-alvo, com direitos concedidos pontualmente. Reconhecemos que nem todos os nossos projetos mais antigos ainda cumprem as três; a migração deles é um trabalho em si.

Assumem uma infraestrutura feita por outra pessoa?

Sim, e a primeira passagem é sempre um inventário, não uma alteração. O que corre efetivamente, sob que supervisor, com que versões, que portas estão expostas, que cópias de segurança existem, se alguma foi alguma vez restaurada, que segredos chegaram aos repositórios e em que medida a configuração no repositório ainda se assemelha ao ficheiro no servidor. A última verificação quase sempre produz algo: temos documentado, num projeto próprio, um ficheiro de configuração editado diretamente em produção, que deixou uma cópia de segurança com marca temporal ao lado.

O que acontece se quisermos trabalhar com outra pessoa?

Vocês saem com tudo. A infraestrutura fica desde o início nas vossas contas junto do fornecedor, e a entrega inclui o repositório com todas as configurações de servidor, o procedimento de publicação e de reversão, o procedimento de restauro testado e a lista de tarefas programadas com o que cada uma faz. O bloqueio contra a eliminação acidental do grupo de recursos de produção é ativado desde a instalação. Se um fornecedor condiciona a vossa saída à reescrita da infraestrutura, esse era o problema, não a tecnologia.

Em que se baseiam as afirmações acima (30 fontes)
  1. https://www.megapromoting.com răspunde 200 pe nginx + Next.jshttps://www.megapromoting.com/servicii · 2026-09-06

29 delas são código e ficheiros dos nossos repositórios. Não publicamos o nome nem a linha: juntos, numa única página, descreveriam com demasiada precisão como estão construídos sistemas que não são só nossos. Percorremo-los consigo, no repositório, a pedido — a verificação continua possível, só que se faz numa conversa.

O que gostaria que funcionasse melhor?

Conte-nos o seu processo. Em conjunto decidimos o que vale a pena construir, o que podemos ligar e como verificamos o resultado.

Vamos falar