Aquarela

Engenharia de Plataforma O Poder dos Building Blocks com ArgoCD

Engenharia de Plataforma O Poder dos Building Blocks com ArgoCD

Na arquitetura de software moderna, a eficiência de entrega não é mais medida apenas por linhas de código, mas pela capacidade de abstração e composição. O conceito de Building Blocks (Blocos de Construção) surge como o alicerce dessa nova era, transformando a forma como organizamos, construímos e operamos sistemas em escala.

O que é um Building Block? (Conceito e Modelo)

Um Building Block é uma abstração arquitetural que encapsula uma capacidade técnica ou funcionalidade de negócio em uma unidade independente, reutilizável e versionada.

Diferente de uma simples biblioteca de código, o modelo de um bloco de construção é definido por sua interface: ele oculta a complexidade interna (o “como”) e expõe apenas os parâmetros necessários para sua operação (o “quê”). Na prática, um bloco pode ser um módulo de infraestrutura (IaC), um Helm Chart padronizado ou uma esteira de CI/CD pré-configurada.

Para melhor compreensão, vamos criar uma simulação e entender como estes blocos se encaixam e como podemos, ou melhor, devemos tirar proveito deles.

Vamos trazer estes blocos para o mundo real.

Imagine que precisamos subir uma aplicação moderna no Kubernetes. Nossa arquitetura requer:

 O Nosso Exemplo Prático (Fio Condutor):

  • Um Frontend Webapp (que o usuário acessa).
  • Uma API Web (o backend).
  • Um Redis para cache (rodando dentro do cluster).
  • Uma conexão a um AWS RDS (MySQL) que já existe fora do cluster.
  • Cluster AWS EKS (Elastic Kubernetes Service) pronto para uso.
Fig-1: Topologia simplificada de uma aplicação composta por Building Blocks consumindo segredos centralizados.

Neste cenário realista, tanto o Redis, quanto o RDS e até o Frontend exigem chaves ou senhas. Isso nos obriga a usar o Gerenciamento de Segredos para injetar credenciais de forma segura em toda a cadeia.

Sem os Building Blocks, o engenheiro precisaria não apenas gerar o manifesto do SealedSecret com as credenciais, mas também escrever do zero todo o Deployment da API, mapeando manualmente como esses segredos seriam lidos e injetados de forma segura nos contêineres.

Com os Building Blocks (empacotados via Helm, por exemplo), nós tratamos tudo como “bloquinhos de montar”. O engenheiro gera o seu segredo encriptado e simplesmente informa aos blocos (“Bloco Frontend”, “Bloco API”) o nome dele. Ele foca em fornecer as regras de negócio e credenciais (o “quê”), sem precisar escrever dezenas de arquivos YAML e mapeamentos para fazer os recursos se conectarem (o “como”).

E se não houvesse infraestrutura? 

O conceito de Building Blocks vai muito além! Se estivéssemos começando do zero absoluto, poderíamos ter um “Bloco de Infra” (usando OpenTofu, por exemplo) apenas para provisionar o cluster EKS/GKE ou criar o próprio RDS dinamicamente. A filosofia do “bloquinho de montar” se aplica desde o metal até a aplicação final.

Arquitetura e Organização

Sob a ótica de arquitetura, os Building Blocks permitem o desacoplamento real entre a infraestrutura e a lógica de negócio. Isso estabelece o que chamamos de Caminhos Pavimentados (Paved Paths ou Paved Roads): trilhas padronizadas onde a segurança, a observabilidade e a performance já estão embutidas no bloco.

Nota Histórica: O conceito de “Paved Road” foi popularizado pela engenharia da Netflix. O objetivo deles não era engessar a inovação ou proibir os desenvolvedores de usar tecnologias novas, mas sim oferecer um ecossistema interno tão excelente, fácil e seguro que as equipes o escolhiam voluntariamente, acelerando muito a entrega. É o caminho de menor resistência. (Um conceito muito similar é o “Golden Paths”, adotado pelo Spotify).

Para a organização, este modelo redefine papéis:

  • Times de Plataforma: Atuam como “curadores” e fornecedores de blocos, garantindo que as peças da “caixa de ferramentas” corporativa sejam robustas e atualizadas.
  • Times de Produto (Stream-aligned): Atuam como os principais consumidores. Em vez de “reinventar a roda” da infraestrutura a cada novo deploy, o desenvolvedor foca na composição. Se uma aplicação necessita de um conjunto específico de recursos para funcionar — como definições de CPU, Memória, Storages ou GPUs — o engenheiro deve buscar nos repositórios de Building Blocks as peças prontas para uso.Isso garante autonomia e velocidade, permitindo que o time foque exclusivamente na lógica de negócio.

Aplicação Prática: Injetando o Exemplo no ArgoCD

A verdadeira mágica acontece quando pegamos a nossa aplicação de exemplo (Frontend, API, Redis e acessos ao RDS) e a injetamos no ArgoCD. Em vez de aplicarmos dezenas de arquivos YAML manualmente no cluster via kubectl, nós consolidamos esses Building Blocks em um único repositório Git e delegamos a orquestração. Os repositórios definem, neste modelo, a única fonte da verdade (Single Source of Truth), introduzindo o coração do conceito de GitOps: a sua infraestrutura e aplicação passam a ser declarativas, versionadas, auditáveis e restauráveis a partir de simples commits.

O ArgoCD atua como uma ponte declarativa para Kubernetes e um verdadeiro “guardião” do estado das nossas aplicações. Através de um contínuo Loop de Reconciliação, ele compara incessantemente dois estados:

  1. Estado Desejado: O que está escrito no seu repositório Git (o “manual” dos nossos blocos).
  1. Estado Atual: O que realmente está rodando no cluster Kubernetes (a infraestrutura real).

Se um engenheiro alterar uma versão no repositório — ou se ocorrer um desvio manual no cluster (drift) —, o ArgoCD detecta a divergência e rapidamente sincroniza os recursos.Nota sobre o mercado: Embora o ArgoCD seja a nossa escolha principal, ferramentas como o FluxCD e o GitLab Agent for Kubernetes também operam com grande sucesso sob essa mesma finalidade (GitOps).

Fig-2: ArgoCD orquestrando nossa arquitetura real: conectando o Frontend, API, Redis e Segredos em uma interface unificada.

A Sinergia: ArgoCD como Exemplo Vivo de Building Blocks

Entender o ArgoCD apenas como o “entregador” dos nossos pacotes seria subestimá-lo. A verdade é que o ArgoCD e o conceito de Building Blocks compartilham o mesmo DNA: ambos buscam a padronização via declaração.

Ele não é apenas uma ferramenta que “instala” blocos; em sua própria arquitetura, ele é uma implementação exemplar desse conceito por três motivos fundamentais:

  • Abstração de Recursos (CRDs): Assim como um bloco de construção oculta a complexidade do negócio, o ArgoCD usa Custom Resource Definitions(como o objeto genérico Application) para encapsular toda a lógica de um deploy em um único objeto declarativo no Kubernetes.
  • Modularidade Nativa: O ArgoCD aceita diferentes “motores”(Helm, Kustomize, Jsonnet), permitindo que cada Building Block que sua equipe crie use a tecnologia que for mais adequada internamente, sem quebrar o fluxo de entrega.
  • Composição de Ecossistemas: Através do padrão App-of-Apps, o ArgoCD permite que você declare um “Bloco Pai” que instala dezenas de “Blocos Filhos”. É assim que podemos tratar conjuntos inteiros de aplicações (como o nosso pacote de Frontend + API + Banco + Monitoramento) como um único e gigantesco bloco lógico.

Mergulhando no Código: O Padrão Multi-Source

Tecnicamente, como o ArgoCD entende o que é um Building Block e como injetar dados específicos dentro dele? A resposta mais moderna e elegante para isso está no uso do recurso de Multiple Sources (Múltiplas Fontes) dentro do manifesto Application.

Em cenários avançados de Plataforma, não queremos copiar e colar o mesmo Helm Chart para todo projeto. Nós queremos um único repositório “Pai” contendo o Bloco Genérico e repositórios “Filhos” contendo apenas as configurações (o que dá vida ao bloco).
Veja o deploy-application.yaml do nosso ecossistema na prática:

Fig-3: modelo de arquivo deployment-application.yaml

Implementação Técnica: Múltiplas Fontes (Multiple Sources)

A implementação prática desses blocos no ArgoCD é feita através da funcionalidade de Multiple Sources. Este padrão permite separar a lógica da infraestrutura dos dados da aplicação:

  1. Repositório de Template (The Block): Um repositório central contendo Helm Charts genéricos que definem o comportamento padrão das aplicações.
  1. Repositório de Configuração (The Data): Repositórios específicos por projeto que contêm apenas os arquivos de valores (values.yaml) e segredos.

O ArgoCD realiza o merge dessas fontes em tempo de execução, injetando as configurações específicas no template padronizado. Isso permite atualizar o comportamento de centenas de aplicações simultaneamente apenas modificando o repositório central do “bloco”.

Conclusão: Maturidade Operacional

O uso de Building Blocks com ArgoCD transforma a gestão de infraestrutura em uma linha de montagem previsível e escalável. Ao focar na composição de blocos validados em vez da criação de manifestos artesanais, as equipes de tecnologia alcançam maior estabilidade operacional e aceleram o ciclo de vida de desenvolvimento de software.

Quem é a Aquarela Analytics?

A Aquarela Analytics é vencedora do Prêmio CNI de Inovação e referência nacional na aplicação de Inteligência Artificial Corporativa na indústria e em grandes empresas. Por meio da plataforma Vorteris, da metodologia DCM e o Canvas Analítico (Download e-book gratuito), atende clientes importantes, como: Embraer (aeroespacial), Scania, Mercedes-Benz, Grupo Randon (automotivo), SolarBR Coca-Cola (varejo alimentício), Hospital das Clínicas (saúde), NTS-Brasil (óleo e gás), Auren, SPIC Brasil (energia), Telefônica Vivo (telecomunicações), dentre outros.

Acompanhe os novos conteúdos da Aquarela Analytics no Linkedin e assinando a nossa Newsletter mensal!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Send this to a friend