A arquitetura de referência de IA corporativa sobre Bedrock
- ⬜🏗️ Arquiteturas de referência e cases reais(AWS Bedrock — GenAI em Produção)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Até aqui você aprendeu a construir um app com Bedrock. Empresa não tem um app: tem nove squads querendo IA ao mesmo tempo. O que acontece em toda organização que não desenha isso antes é sempre a mesma coisa — seis meses depois existem sete integrações diferentes com o Bedrock, cinco prompts de sistema divergentes, três vector stores pagando OCU ocioso e ninguém consegue responder "quanto o time de crédito gastou de IA mês passado?". Este módulo é o blueprint que evita isso: sete camadas, o que vive em cada uma, e em que ordem construir.
O erro que toda empresa comete primeiro
O erro não é técnico, é organizacional: tratar IA como feature de produto em vez de capacidade de plataforma. Cada squad integra direto no bedrock-runtime com sua própria IAM role e seu próprio jeito. Funciona no primeiro trimestre. Os sintomas aparecem no segundo:
- Ninguém sabe o custo por time. O Cost Explorer mostra uma linha só: "Amazon Bedrock". Chargeback vira rateio político.
- Cada squad escolheu um modelo diferente por gosto, não por medida. Dois deles usam o modelo mais caro do catálogo para classificar texto de 40 tokens.
- Guardrails existem em um app e não existem nos outros seis. A primeira resposta ruim que vaza define a política da empresa inteira — na base do susto.
- Prompt vive hardcoded em sete repositórios. Trocar uma frase de compliance é um projeto de duas semanas com sete deploys.
- Cada RAG subiu seu próprio índice sobre a mesma base de conhecimento. Você paga três vezes pelo mesmo documento e as três respostas divergem.
- Quando o comitê de risco pergunta "onde estão os logs de tudo que o modelo respondeu?", a resposta honesta é: depende do app.
O sintoma que fecha o caixa
O primeiro incidente sério raramente é técnico — é o comitê de risco (ou o cliente enterprise no questionário de segurança) descobrindo que não existe controle uniforme. Aí a decisão vira "congela tudo até termos governança". Reconstruir depois custa muito mais do que desenhar a camada agora.
As 7 camadas da arquitetura de referência
A arquitetura corporativa de IA sobre Bedrock se decompõe em sete camadas. Elas não são opcionais — toda empresa acaba tendo as sete. A escolha real é se elas vão ser projetadas ou acidentais. Leia de cima (perto do usuário) para baixo (perto da operação):
Onde o humano encosta: web, app, WhatsApp, Amazon Connect, Slack/Teams, o IDE do dev.Porta única para o Bedrock: authN/Z, tenant, quota, allowlist de modelos, roteamento, atribuição de custo.Quem decide o passo a passo: Lambda, Step Functions, AgentCore Runtime, Bedrock Flows.bedrock-runtime: Converse/ConverseStream, on-demand, batch, provisioned throughput, prompt routing.S3, Knowledge Bases, vector store, conectores, pipeline de ingestão e permissão por documento.Guardrails, IAM/KMS/PrivateLink, model invocation logging, CloudTrail, evals e human-in-the-loop.CloudWatch, OpenTelemetry, Budgets, application inference profiles, dashboards de custo por squad.O desenho ponta a ponta
Repare no que não está na coluna de canais: nenhum canal fala com o bedrock-runtime diretamente. Essa é a regra estrutural da arquitetura inteira — tudo passa pelo gateway. É o que torna possível trocar de modelo, medir custo por time e aplicar guardrail sem tocar em sete repositórios.
- → gateway resolve tenant, política e quota
- → invoca pelo application inference profile
- → retrieval com filtro de permissão
- → guardrail antes de devolver
- → tokens, latência, cache por app
- Fora da AWS
- Integração de apps
- Rede e entrega
- Segurança e identidade
- Compute
- IA e machine learning
- Armazenamento
- Analytics
- Gestão e governança
Nenhum canal fala com o bedrock-runtime diretamente: tudo passa pelo gateway. É essa regra que permite trocar de modelo, medir custo por time e aplicar guardrail sem tocar em sete repositórios.
- O pedido chega por qualquer canal. Web, WhatsApp, voz ou chat interno — nenhum deles conhece o Bedrock.
- O gateway aplica a política. Identidade, tenant, quota, allowlist de modelo e o inference profile que carimba o custo.
- A orquestração decide o caminho. Turno curto vai direto; fluxo longo vai para Step Functions; agent autônomo vai para o AgentCore.
- A inferência acontece. Converse pelo inference profile do app, com o tier definido pela política — não pelo gosto do squad.
- O conhecimento entra. Retrieval com filtro de metadados aplicando a permissão do usuário. O que ele não pode ler não entra no contexto.
- Confiança e operação, sempre. Guardrail na saída, chave gerenciada no que fica em repouso, métrica por app e trilha de auditoria.
Camada 2: o AI Gateway, a peça que muda tudo
O AI Gateway é um serviço interno fino — normalmente uma Lambda ou um container atrás de API Gateway — por onde passa toda chamada de IA da empresa. Ele não faz inteligência nenhuma: ele resolve identidade, aplica política e atribui custo. Cinco responsabilidades e nada além disso, senão vira monolito.
import os, time, json, boto3
br = boto3.client("bedrock-runtime")
cw = boto3.client("cloudwatch")
# Política central: cada app declara o que pode usar.
# Na prática isto vive no DynamoDB/AppConfig, não no código.
POLICY = {
"credito-copiloto": {
"profile_arn": os.environ["PROFILE_CREDITO"], # application inference profile
"tier": "raciocinio",
"guardrail": {"id": os.environ["GR_PII"], "version": "3"},
"max_output": 1200,
},
"atendimento-triagem": {
"profile_arn": os.environ["PROFILE_ATENDIMENTO"],
"tier": "volume",
"guardrail": {"id": os.environ["GR_ATENDIMENTO"], "version": "7"},
"max_output": 300,
},
}
def handler(event, _ctx):
app = event["requestContext"]["authorizer"]["app_id"] # 1-2. identidade e tenant
pol = POLICY.get(app)
if pol is None:
return {"statusCode": 403, "body": "app sem politica de IA"}
if quota_estourada(app): # 3. quota
return {"statusCode": 429, "body": "quota de IA do periodo esgotada"}
body = json.loads(event["body"])
started = time.monotonic()
resp = br.converse( # 4-5. chamada padronizada
modelId=pol["profile_arn"], # o profile carrega a tag de custo
system=[
{"text": prompt_versionado(app)},
{"cachePoint": {"type": "default"}}, # prefixo estavel = cache barato
],
messages=body["messages"],
inferenceConfig={"maxTokens": pol["max_output"]},
guardrailConfig={
"guardrailIdentifier": pol["guardrail"]["id"],
"guardrailVersion": pol["guardrail"]["version"],
},
)
u = resp["usage"] # 6. observabilidade
cw.put_metric_data(
Namespace="Plataforma/IA",
MetricData=[{
"MetricName": "TokensSaida",
"Value": u["outputTokens"],
"Unit": "Count",
"Dimensions": [{"Name": "app", "Value": app}],
}],
)
audit(app, u, latencia_ms=int((time.monotonic() - started) * 1000))
return {"statusCode": 200, "body": json.dumps(resp["output"])}
Application inference profile é o truque de chargeback
Um application inference profile é um wrapper taggeável em torno de um modelo. Você cria um por app (ou por squad), tagueia com o centro de custo e passa o ARN dele como modelId. A partir daí o Cost Explorer separa "Bedrock do time de crédito" de "Bedrock do atendimento" sem nenhum código de contabilidade. Sem isso, você tem uma linha só na fatura e uma discussão política todo mês.
O gateway não pode virar o gargalo
Duas regras: ele não guarda estado de conversa (isso é do app) e não faz lógica de negócio. Se ele começar a crescer, você trocou N integrações bagunçadas por um monolito de IA — pior, porque agora é single point of failure. Mantenha-o em ~300 linhas e faça streaming passar direto (ConverseStream) em vez de bufferizar.
Camada 3: orquestração — quem decide o quê
Escolher o orquestrador errado é o erro de arquitetura mais caro depois do vector store ocioso. O critério não é "o que é mais moderno" — é duração do fluxo e quanto do caminho precisa ser determinístico.
| Orquestrador | Use quando | Limite prático |
|---|---|---|
| Lambda | Fluxo síncrono e curto: 1 a 3 chamadas ao modelo, resposta em segundos | Timeout de 15 min; sem estado entre invocações |
| Step Functions | Fluxo longo, batch, retry e compensação; cada passo é auditável | Você desenha o caminho — pouca autonomia do modelo |
| AgentCore Runtime | Agent autônomo com sessão longa, memória e ferramentas | Mais peças para operar; custo por sessão a monitorar |
| Bedrock Flows | Fluxo visual, montado por time menos técnico, com prompts versionados | Menos expressivo que código quando a lógica cresce |
| EventBridge + SQS | Assíncrono orientado a evento: documento chegou, ticket abriu | Não é orquestrador — é o encanamento entre eles |
📋 O assistente precisa consultar três sistemas internos, decidir sozinho a ordem das consultas conforme a pergunta, e manter contexto ao longo de uma conversa de 20 minutos com o usuário.
É o único caso em que a autonomia paga o custo: a ordem das ferramentas depende da pergunta e a sessão precisa sobreviver entre turnos, com memória isolada por usuário. Determinismo aqui atrapalharia mais do que ajudaria.
Alt: Step Functions — Você teria que enumerar antecipadamente todos os caminhos possíveis de consulta — vira uma máquina de estados que ninguém mantém.
Alt: Lambda pura — Sem estado entre turnos e com teto de 15 minutos; você reimplementaria memória e sessão do zero.
Alt: Bedrock Flows — Excelente para fluxo declarado, fraco quando o próprio modelo decide o próximo passo.
Camada 4: a política de modelos (não deixe cada squad escolher)
A plataforma não expõe "o catálogo do Bedrock" para os squads. Ela expõe tiers: três a quatro perfis nomeados por tipo de tarefa, cada um apontando para um modelo concreto que o time de plataforma pode trocar sem que ninguém mude código. É a mesma ideia de instance family no EC2 — o squad pede a classe, não o SKU.
| Tarefa típica | Latência alvo | Custo relativo | Guardrail | |
|---|---|---|---|---|
| Tier volume | Classificar, rotear, extrair campo curto | Sub-segundo | Base (1×) | Obrigatório, filtro leve |
| Tier padrão | Chat com RAG, resumo, redação | 1–4 s | Alguns múltiplos do tier volume | Obrigatório + grounding |
| Tier raciocínio | Análise longa, código, decisão com trade-off | 5–30 s | O mais caro por token | Obrigatório + revisão humana |
| Tier batch | Enriquecer catálogo, embeddings em massa | Horas (assíncrono) | ~50% do on-demand | Aplicado no pipeline |
Regra de ouro do tier
Comece toda tarefa nova no tier volume e só suba quando a avaliação provar que precisa. O caminho contrário — começar no modelo mais caro "para garantir" e nunca descer — é como quase toda conta de IA corporativa fica cara. Suba de tier com número de eval na mão, não por sensação.
IDs de modelo: copie do console, não do blog
No Bedrock o identificador varia por caminho: o inference profile regional prefixa a região (us., eu., apac.) e o ID costuma carregar versão. O cliente Messages/Mantle usa a forma com prefixo do provedor (por exemplo anthropic.claude-opus-5). Não digite IDs de memória — copie do console ou liste via API na sua região, porque um ID errado é 400 na hora e 404 silencioso em pipeline.
A diretoria pede o custo de IA separado por squad para fazer chargeback. Hoje todos os apps chamam o Bedrock com o mesmo modelId. Qual é a mudança de arquitetura que resolve isso na raiz?
Camada 5: um índice por domínio, não um por app
A camada de conhecimento é onde o desperdício se esconde. Três squads que respondem perguntas sobre a mesma base de produtos não precisam de três Knowledge Bases — precisam de uma por domínio de conhecimento, com filtro de metadados na consulta. O critério de fronteira não é o app: é quem é dono do dado e quem pode ler.
- Fontes
- Ingestão
- Índices
- Consumo
Permissão é filtro de metadado, não prompt
Nunca resolva confidencialidade pedindo ao modelo que "não responda sobre documentos restritos". Isso é uma sugestão, não um controle. A permissão do usuário precisa virar filtro de metadados na chamada de Retrieve — o documento que ele não pode ler jamais entra no contexto. É a diferença entre um controle auditável e uma promessa.
Camada 6: confiança — as perguntas que o comitê faz
A camada de confiança não se justifica sozinha para o time de engenharia — ela se justifica quando alguém de fora pergunta. Comitê de risco, auditoria interna, DPO, ou o questionário de segurança do seu maior cliente. Cada pergunta tem um artefato que a responde; se o artefato não existe, a resposta é uma opinião.
Camada 7: as métricas que sustentam a segunda onda
A primeira onda de IA em uma empresa é aprovada por entusiasmo. A segunda é aprovada por número. Estas são as métricas que você precisa estar coletando desde o primeiro app — instrumentar depois significa não ter histórico quando o orçamento for discutido.
| Métrica | De onde vem | Por que importa |
|---|---|---|
| Custo por app / squad | Application inference profile + tags no Cost Explorer | Sem isso não há chargeback nem conversa madura sobre orçamento |
| Custo por resultado de negócio | Custo do período ÷ tickets resolvidos (ou documentos processados) | É a única métrica que o financeiro entende e compara com o processo atual |
| Taxa de cache hit | cacheReadInputTokens no usage da resposta | Cache é a alavanca de custo nº 1; se estiver em zero, algo invalida o prefixo |
| Tokens de saída por request | usage.outputTokens, por app | O lado caro da conta e o primeiro a inflar quando alguém mexe no prompt |
| Latência p95 por tier | CloudWatch, dimensionado por app e modelo | Define se dá para usar de forma síncrona ou precisa virar assíncrono |
| Intervenções do guardrail | Métricas do Guardrail + amostragem manual | Zero bloqueio costuma significar guardrail frouxo, não sistema perfeito |
| Adoção real | Usuários ativos semanais / usuários habilitados | Projeto de IA sem adoção medida é piloto eterno com nome de produto |
Instrumente antes de escalar
Colocar as sete métricas no ar custa alguns dias no começo e é impossível de recuperar depois. A pergunta "quanto economizamos?" só tem resposta se você mediu o baseline antes de ligar a IA — anote o número do processo manual no dia zero, mesmo que seja uma estimativa grosseira registrada por escrito.
Implantação em três ondas
Não construa as sete camadas antes do primeiro caso de uso — isso é plataforma sem cliente, e morre na revisão de orçamento. Construa a espinha mínima junto com o primeiro caso real, e engrosse conforme o segundo e o terceiro chegam.
O teste da onda 2
Você sabe que a plataforma está funcionando quando o terceiro caso de uso não precisa conversar com o time de plataforma para nascer — só escolhe um tier, registra um app e sobe. Se cada novo caso ainda exige uma reunião de arquitetura, você tem uma coleção de integrações, não uma plataforma.
Anti-padrões da arquitetura corporativa
- Plataforma sem cliente: seis meses construindo o gateway perfeito antes do primeiro caso de uso. Ninguém aprova a segunda fase.
- Gateway que virou monolito: começou resolvendo identidade e acabou com lógica de negócio de quatro squads dentro. Agora é single point of failure e ninguém quer mexer.
- Um vector store por app: três índices sobre a mesma base, três faturas de OCU e três respostas diferentes para a mesma pergunta.
- Modelo escolhido por gosto: o squad usou o modelo mais caro do catálogo para classificar texto curto porque "é o melhor". Sem eval, ninguém consegue argumentar o contrário.
- Permissão via prompt: pedir ao modelo que ignore documentos confidenciais em vez de filtrar no retrieval. Falha no primeiro teste de intrusão sério.
- Logging ligado depois do incidente: a auditoria pergunta sobre uma resposta de março e o log começa em maio.
- Prompt sem versão: alguém melhora uma frase em produção na sexta, a qualidade cai, e não existe diff para reverter.
- Nenhum baseline: o projeto entrega, todo mundo sente que melhorou, e não há um número anterior para comparar. O ROI vira narrativa.
Três squads precisam responder perguntas sobre a mesma base de documentos de produto, cada um com um público diferente. Qual desenho da camada de conhecimento é o correto?
Sua empresa está começando agora. Qual é a sequência de implantação com maior chance de sobreviver à revisão de orçamento?
Próximo passo
Você tem o blueprint das sete camadas. Falta a peça que ocupa o centro da camada 4 na maioria das arquiteturas corporativas: o Claude. E ele chega na AWS por quatro caminhos diferentes — com features e governança diferentes em cada um. É o próximo módulo.
Perguntas frequentes
❓ O que uma arquitetura corporativa de IA tem além do modelo?
❓ Para que serve um portal de IA interno?
❓ Vale construir tudo isso antes do primeiro caso?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…