Consultoria Processos, requisitos e arquitetura, antes de desenvolver ou adquirir. Desenvolvimento à medida Plataformas web e backoffices pensados para a forma como as suas equipas trabalham. Implementação e integração Sistemas que funcionam em conjunto, com os dados registados uma só vez. Manutenção e suporte Sistemas seguros e atualizados, com manutenção corretiva e evolutiva.
Sistemas de informação para entidades públicas e privadas. Todos os serviços
Serviços de IA Diagnóstico, assistentes, automação documental, formação e operação. Integração MCP Como a IA se liga aos seus sistemas, com permissões e registo de auditoria. IA na Europa Onde os seus dados são processados e que modelos utilizamos. Programa de fundadores Diagnóstico gratuito e uma prova de conceito paga no fim.
Casos de uso com demonstrações guiadas, por sector. Todos os casos de uso
Auditoria de código-fonte Falhas de segurança encontradas no código, cada uma confirmada por uma pessoa. Testes de penetração Aplicações web, APIs, infraestruturas e apps móveis, testadas como um atacante faria. Correções e reteste Corrigimos as falhas ou apoiamos a sua equipa, e retestamos até ficarem fechadas. NIS2 e resposta a incidentes Apoio no Regime Jurídico da Cibersegurança, e 24/7 por contrato.
Ver um relatório de exemplo Todos os serviços de cibersegurança
Fale connosco hello@datapoint.software

Projetos

Apiary: a porta de entrada dos seus sistemas, sem um ponto único de falha

A Datapoint lançou o Apiary, um proxy inverso gratuito e de código aberto para Docker Swarm. Encaminha o tráfego para o serviço certo, renova sozinho os certificados HTTPS e continua a funcionar quando um servidor falha, sem mais uma base de dados para manter.

Ilustração abstrata de pontos azuis que convergem num favo de três hexágonos ciano, um deles aceso; deste partem linhas para três serviços, a mais fina para um serviço em laranja.

Todos os sites e aplicações na Internet têm uma porta de entrada: um componente que recebe o pedido de cada visitante, decide que serviço lhe deve responder e trata da ligação segura (HTTPS). Quase ninguém repara nela, até ao dia em que falha. Quando a porta de entrada vai abaixo, vão abaixo com ela todos os sites que estão por trás.

Para que essa porta nunca seja o ponto fraco, a Datapoint lançou o Apiary, um proxy inverso gratuito e de código aberto para Docker Swarm. Encaminha o tráfego para o serviço certo, obtém e renova sozinho os certificados HTTPS e continua a funcionar quando um servidor falha, sem precisar de mais uma base de dados para manter. O Apiary está em versão beta (1.0.0-beta.1), e qualquer pessoa pode ler, usar e melhorar o código no repositório em github.com/datapoint-software/apiary.

O rececionista do edifício

Imagine um edifício de escritórios com várias empresas. Os visitantes não sobem diretamente aos andares: passam pela receção, que confirma a identidade de cada um, verifica a que empresa vai e lhe indica o elevador certo. Se uma empresa muda de andar, só a receção precisa de saber. Os visitantes continuam a entrar pela mesma porta.

Um proxy inverso faz o mesmo trabalho para os sistemas de informação. Recebe todos os pedidos que chegam a loja.exemplo.pt, loja.exemplo.pt/api ou pagamentos.exemplo.pt e entrega cada um ao serviço que lhe deve responder. É também ali que se tratam os certificados que garantem que a ligação é segura, se limitam os abusos e se mostra uma página de manutenção quando é preciso.

Página inicial do Apiary: dois avisos, um porque legacy.example.com está em baixo e outro porque o seu certificado precisa de atenção; gráficos de pedidos por minuto, latência e respostas com erro; e três projetos com o respetivo estado.
A visão geral diz o que precisa de atenção e porquê, antes dos números. Imagens do protótipo de design, com nomes e valores fictícios.

Porque é que a porta de entrada não pode falhar

Muitas organizações já instalam as suas aplicações em contentores, com o Docker Swarm a distribuí-las por vários servidores. Se um servidor falha, o Swarm volta a arrancar as aplicações noutro. Mas de pouco serve ter as aplicações repartidas por vários servidores se todo o tráfego passar por uma única porta que pode cair.

Uma porta de entrada que depende de um único servidor transforma esse servidor no ponto único de falha de todos os sites.

A resposta habitual junta várias peças: um proxy, um armazenamento à parte para a sua configuração, uma ferramenta para os certificados e scripts que mantêm tudo sincronizado entre servidores. Cada peça é mais uma coisa para instalar, atualizar, copiar e manter disponível. O Apiary junta tudo isto numa única imagem, feita para o Swarm.

O que o Apiary faz

  • Encaminhamento. Uma rota liga um nome e um caminho, como loja.exemplo.pt/api, a um serviço. O Apiary chega aos serviços pelo nome que têm na rede do Swarm, por isso não há endereços IP para manter atualizados. Suporta HTTP/1.1, HTTP/2, HTTP/3 e WebSockets, e encaminha também tráfego TCP e UDP para o que não é um site, como bases de dados, mensagens MQTT ou registos de sistema.

  • HTTPS automático. Obtém os certificados na Let's Encrypt e renova-os antes de expirarem, sem passos manuais. Todos os servidores partilham os mesmos certificados. Também é possível carregar certificados próprios, por exemplo para nomes genéricos (wildcard) ou de uma autoridade de certificação interna.

  • Operação do dia a dia. Redirecionamentos, desativação de rotas, listas de endereços IP autorizados, limites de pedidos, pré-visualizações protegidas por palavra-passe, janelas de manutenção agendadas com uma mensagem própria e páginas para visitantes com o logótipo e as cores de cada projeto.

  • Observação. A visão geral mostra os pedidos por minuto, a latência, as taxas de erro, o estado de cada destino e os certificados prestes a expirar. As métricas e os rastreios ficam disponíveis para as ferramentas de monitorização.

  • Acesso e responsabilização. Os utilizadores entram com uma aplicação de autenticação ou com o início de sessão único da organização (OpenID Connect). Os perfis limitam quem pode alterar o quê, e o registo de auditoria guarda cada alteração, quem a fez e de onde.

  • Assistentes de IA. O Apiary pode ser gerido por assistentes de inteligência artificial através do MCP (Model Context Protocol), com início de sessão próprio, para que um assistente só faça o que o seu utilizador pode fazer.

  • Em português e em inglês. A interface está disponível em português europeu e em inglês.

Novas versões sem sobressaltos

Publicar uma nova versão de uma aplicação para todos os visitantes ao mesmo tempo é arriscado: se algo correr mal, corre mal para toda a gente. Com o Apiary, uma rota pode dividir o tráfego por pesos, por exemplo 90% para a versão atual e 10% para a nova. É o que se chama uma publicação canário. Se a nova versão se portar bem, aumenta-se a sua parte. Se não, volta-se atrás e só uma pequena parte dos visitantes foi afetada.

Destinos de uma rota: shop-v1 na porta 8080 com peso 90% e shop-v2 na porta 8080 com peso 10%; um cabeçalho X-Canary com o valor true que leva sempre à shop-v2; e sessões persistentes ativas. Cada campo tem um cadeado com a indicação Definido na stack shop.
Uma publicação canário: 90% do tráfego para a versão atual e 10% para a nova. Os cadeados indicam valores que vêm do ficheiro de stack da equipa.

Quem está a testar pode chegar à nova versão de propósito, com um cabeçalho ou um cookie, e as sessões persistentes mantêm cada visitante na mesma versão durante uma hora, para que não salte de uma para a outra a meio de uma compra.

Uma colmeia de réplicas

O Apiary funciona como várias cópias (réplicas) em servidores diferentes, que se mantêm a par umas das outras com o Raft, um algoritmo de acordo bem conhecido. Uma das réplicas é a líder e as outras votam. Se um servidor falha, as restantes continuam a servir o tráfego e nenhum certificado se perde. Quando o Swarm arranca uma nova réplica, ela junta-se às outras sozinha.

Painel de réplicas com quatro hexágonos, edge-1, edge-2, edge-3 e edge-5, sendo edge-2 a líder e as restantes votantes, todas contactáveis. Ao lado, os certificados de quatro domínios com os dias que faltam: um a falhar a renovação, com 9 dias, e três renovados automaticamente.
O cluster de relance: quatro réplicas, uma líder, e os certificados com os dias que faltam para a renovação.

A alta disponibilidade exige pelo menos três réplicas. Duas não são suportadas, porque não toleram mais falhas do que uma só. E se se perderem réplicas a mais para chegarem a acordo, o Apiary suspende as alterações, di-lo claramente na interface e continua a servir os visitantes com a última configuração conhecida. Num único servidor, ou num portátil com Docker Compose, o Apiary também funciona, mas sem alta disponibilidade. É uma boa forma de o experimentar.

Cada situação, uma resposta

SituaçãoO que o Apiary faz
Um servidor falhaAs outras réplicas continuam a servir o tráfego, com os mesmos certificados.
Perdem-se réplicas a maisSuspende as alterações, avisa na interface e continua a servir com a última configuração conhecida.
Um certificado está perto do fimRenova-o sozinho e, se a renovação falhar, avisa e mostra o registo do que correu mal.
Chega uma nova versão de uma aplicaçãoDivide o tráfego por pesos e deixa quem testa chegar à nova versão de propósito.
A equipa publica uma alteraçãoAplica as rotas declaradas no ficheiro de stack e regista o que foi adicionado, alterado e removido.
É preciso atualizar o próprio ApiarySubstitui uma réplica de cada vez e volta atrás sozinho se algo falhar.

A configuração ao lado do código

As equipas podem descrever as suas rotas como etiquetas no mesmo ficheiro de stack que instala os seus serviços. Depois de cada publicação, o processo de integração e entrega contínuas (CI/CD) envia esse ficheiro ao Apiary, e as rotas mudam no mesmo commit que o código. Os campos que vêm do ficheiro ficam bloqueados na interface, para que ninguém os altere por engano, mas desativar uma rota e agendar uma manutenção continuam disponíveis.

Última aplicação de uma stack: um redirecionamento adicionado, um limite de pedidos de 300 por minuto substituído por 600 por minuto, um destino alterado da porta 8000 para a 8080 e uma rota removida. Por baixo, a lista de rotas e redirecionamentos que o ficheiro declara, com o serviço de cada uma.
O que a última execução do processo de publicação adicionou, alterou e removeu, e o que o ficheiro de stack declara.

Há aqui uma escolha de segurança importante: o Apiary nunca mexe no Docker. Muitos proxies para Swarm precisam de acesso ao socket do Docker, o que, na prática, dá controlo sobre todo o servidor. No Apiary é o processo de publicação que lê o ficheiro de stack e envia ao Apiary apenas o que este declara.

Escolhas deliberadas

  • Sem base de dados externa. O Apiary guarda a configuração e os certificados ele próprio, replicados entre as suas réplicas. Não há mais nada para instalar, copiar ou manter disponível.

  • Instalado como qualquer outra aplicação do Swarm. Depois de criar uma chave secreta, instalar, atualizar e escalar o Apiary é um único docker stack deploy.

  • Predefinições seguras. A compressão está desligada por omissão, porque em algumas páginas pode revelar segredos; palavras-passe e certificados não podem ser colocados em ficheiros de stack, onde qualquer pessoa que consiga inspecionar um serviço os leria; e são recusadas as rotas que apontariam para a própria interface de administração do Apiary.

  • Uma interface escrita para pessoas. As mensagens de erro dizem o que fazer a seguir, as ações perigosas indicam exatamente o que afetam, e todas as horas são mostradas em UTC, para que equipas em fusos horários diferentes leiam o mesmo.

Para equipas técnicas

Esta secção é mais técnica. O servidor do Apiary é escrito em .NET 10 e usa o YARP, a biblioteca de proxy inverso da Microsoft; a replicação usa o Raft e a interface é feita em Angular. A imagem é datapointsoftware/apiary, no Docker Hub. Para usar certificados automáticos é preciso aceitar o acordo de subscritor da Let's Encrypt, um serviço de terceiros.

O Apiary está em beta: tem todas as funcionalidades previstas e pode ser atualizado no lugar a partir da 1.0.0-beta.1, mas alguns comportamentos ainda podem mudar antes da 1.0.0. É software livre, sob a GNU AGPL versão 3 com termos adicionais: qualquer pessoa o pode usar, alterar e partilhar, e as versões modificadas que sejam partilhadas ou disponibilizadas em rede têm de oferecer o seu código-fonte. A documentação, as instruções de instalação e o código estão no repositório, onde agradecemos sugestões e relatos de erros.

Como trabalhamos

Na Datapoint, desenvolvemos, implementamos e mantemos sistemas de informação, e sabemos que um sistema só está disponível se a sua porta de entrada também estiver. Publicámos o Apiary como código aberto para que qualquer equipa o possa usar, estudar e melhorar. Se quiser preparar a infraestrutura dos seus sistemas para não depender de um único servidor, fale connosco.

Para saber mais

Acessibilidade

Leitura em voz alta

Tamanho do texto

100%

Visualização

Movimento e navegação

Declaração de acessibilidade
Fale connosco