01 / O QUE É
A camada de observação por trás da frota. Email, mensagens, agenda, clima, telefone e um wearable chegam todos a um único log de eventos append-only, e tudo o que vem depois lê dali.
A maioria dos assistentes é construída ao contrário: cada integração é dona da própria cópia do mundo, então cada agente novo significa mais uma sincronização, mais uma credencial, mais uma coisa para quebrar. O Argos inverte isso. Existe um único log, e plugar um agente novo numa vida é questão de apontá-lo para um cursor.
Dezessete serviços pequenos, cerca de vinte e seis mil linhas de TypeScript. Nenhum deles é interessante sozinho. O que é interessante é o contrato entre eles.
02 / COMO FUNCIONA
Um só escritor. Cada fonte passa por um único escritor que valida o formato de um evento pelo seu kind antes de ele entrar no log. Um só escritor significa que o log nunca pode se contradizer, e um contrato na borda significa que um evento ruim é rejeitado onde é barato rejeitá-lo.
Append-only. Nada é atualizado e nada é apagado. O que aconteceu permanece exatamente como foi registrado, o que transforma o log em uma história, não em uma foto. O estado derivado não é guardado em lugar nenhum sagrado: é calculado a partir do log, então pode ser descartado e reconstruído sempre que a forma como os eventos são interpretados mudar.
Um cursor por consumidor. Cada leitor mantém sua própria posição. Esse é todo o design em uma frase, e ele compra três coisas: um consumidor que ficou quebrado por três dias se atualiza sozinho, um consumidor novo pode ler histórico anterior à sua existência, e nenhum leitor consegue atrasar outro. Plugar um agente novo não é um projeto de integração, é um cursor.
Camadas, não um pipeline. Os observadores escrevem eventos crus. As camadas derivadas os leem e escrevem suas próprias conclusões de volta no mesmo log, como eventos. Assim o raciocínio também é auditável: não só o que chegou, mas o que o sistema fez com isso e quando.
Polling em vez de push, de propósito. Push era mais rápido e dependia de infraestrutura que estava prestes a sumir. Polling custou cerca de dez minutos de latência e comprou independência total. Quando essa infraestrutura finalmente foi destruída, o log nem percebeu.
03 / DECISÕES
Um só escritor, muitos leitores. A propriedade mais valiosa do sistema, e a mais barata de perder por acidente. Dois escritores são duas verdades.
Um log, não uma fila. Uma fila esquece o que entregou. Um log permite fazer amanhã uma pergunta sobre dados que chegaram hoje, com código que ainda não existia quando chegaram.
Validar na borda, por kind. Barato onde o evento entra, impossível depois que já passou por quatro consumidores.
Os olhos são próprios. A camada que vê a sua vida não deveria viver em infraestrutura que você não controla. O Argos foi migrado de uma plataforma moribunda, serviço por serviço, com a contagem de eventos e o checksum verificados nas duas pontas, e continuou rodando o tempo todo.
04 / STATUS
Rodando na máquina no canto do quarto, alimentando a frota.