Skip to main content

Command Palette

Search for a command to run...

Blueprint para uma Plataforma de Pagamentos Serverless: Escala, Conformidade e Custos na América

Veja como a arquitetura orientada a eventos simplifica os pagamentos serverless.

Updated
Blueprint para uma Plataforma de Pagamentos Serverless: Escala, Conformidade e Custos na América
G

Distinguished Cloud Engineer and Technology Leader. A frequent presenter at national and international technology symposia, I provide leadership within the technological sphere as the director of a Google licensee community in Brazil. My involvement includes active participation and contributions to global IT initiatives such as Google Developer Groups, Innovators Hive, Google Cloud AI Trusted Tester, Microsoft Student Ambassador, Microsoft 365 Insider, Google Cloud Arcade, GitHub Developer, FinOps Foundation, Astronomer Champion, and others. Speaking English and French has enabled me to deliver groundbreaking multi-platform initiatives across the Americas. Research and engineering in the areas of FinOps, Cloud, DevOps and AI are the focus of my professional efforts.

Seção 1: Blueprint da Arquitetura Central para um Sistema de Pagamentos Resiliente

O Paradigma Serverless: Focando na Lógica de Negócio, Não na Infraestrutura

As Azure Functions padrão são stateless, tornando desafiador o processamento de pagamentos complexos. Para superar isso, a arquitetura utiliza Azure Durable Functions, uma extensão que permite fluxos de trabalho stateful e orquestrações de longa duração. O progresso é salvo em checkpoints no Azure Storage, garantindo a resiliência.

O Padrão de Orquestração Saga gerencia a integridade transacional em microsserviços, coordenando transações locais e executando ações de compensação em caso de falha. A Microsoft demonstra essa abordagem com Durable Functions como orquestrador e Activity Functions como participantes, garantindo a consistência dos dados em fluxos de pagamento.

Orquestrando Fluxos de Pagamento Complexos com Durable Functions

As funções padrão do Azure Functions são, por design, sem estado (stateless). Isso significa que cada execução é independente e não retém memória de execuções anteriores. Embora isso seja ideal para tarefas simples e atômicas, representa um desafio significativo para processos de negócios complexos e de várias etapas, como o processamento de pagamentos, que pode envolver autorização, captura, liquidação e potenciais reembolsos.

Para superar essa limitação, a arquitetura utiliza as Azure Durable Functions, uma extensão do Azure Functions que permite a escrita de fluxos de trabalho com estado (stateful) em um ambiente serverless. As Durable Functions possibilitam a definição de orquestrações de longa duração diretamente em código procedural, sem a necessidade de designers visuais ou esquemas declarativos complexos. O progresso da execução é automaticamente registrado em checkpoints em um armazenamento durável (Azure Storage), garantindo que o estado local nunca seja perdido, mesmo que o processo seja reciclado ou a máquina virtual reinicie. Isso permite que as orquestrações durem segundos, dias, meses ou até mesmo sejam intermináveis.

O padrão de design definitivo para gerenciar a integridade transacional em uma arquitetura de microsserviços distribuídos é o Padrão de Orquestração Saga. Este padrão evita a complexidade e os pontos de falha das transações distribuídas (como o two-phase commit), coordenando uma série de transações locais por meio de um orquestrador central. Se qualquer etapa do processo falhar, o orquestrador é responsável por executar ações de compensação para reverter as etapas anteriores, garantindo a consistência dos dados em todo o sistema.

A implementação de referência da Microsoft para um cenário de transferência de dinheiro demonstra precisamente essa abordagem, utilizando uma Durable Function como o orquestrador da Saga e funções padrão (chamadas de Activity Functions) como os participantes da Saga, que executam as operações locais como crédito, débito e geração de recibos. Esta arquitetura comprovada serve como um modelo concreto para modelar as complexas interações de um fluxo de pagamento, garantindo que cada transação seja concluída com sucesso ou revertida de forma limpa e consistente.

Mensageria Assíncrona: A Espinha Dorsal Desacoplada com o Azure Service Bus

Para construir um sistema resiliente e escalável, capaz de lidar com a imprevisibilidade do volume de transações, é imperativo que os componentes sejam fracamente acoplados. O Azure Service Bus é posicionado como a espinha dorsal de mensageria de nível empresarial para esta arquitetura. Ele é um serviço de mensagens totalmente gerenciado, projetado para desacoplar aplicações e serviços, permitindo uma comunicação confiável entre sistemas distribuídos.

O Service Bus suporta dois padrões de comunicação primários:

  1. Filas (Queues): Para comunicação ponto a ponto, garantindo que cada mensagem seja processada por um único consumidor. Isso é ideal para enfileirar solicitações de pagamento para processamento sequencial por um pool de workers.

  2. Tópicos (Topics): Para o padrão de publicação/assinatura (publish/subscribe), onde uma única mensagem publicada em um tópico pode ser recebida por múltiplos assinantes. Isso é útil para notificar vários sistemas downstream sobre um evento de pagamento concluído (por exemplo, sistemas de faturamento, análise de fraude e notificação ao cliente).

A utilização do Service Bus permite operações assíncronas e nivelamento de carga (load-leveling), que são cruciais para absorver picos repentinos no volume de pagamentos sem sobrecarregar os serviços de backend.

O padrão de integração adotado envolve o Azure API Management atuando como um gateway seguro que recebe as requisições de pagamento. Em vez de invocar diretamente os serviços de backend, o APIM publica uma mensagem em uma fila ou tópico do Service Bus. Esse modelo, conhecido como "fire and forget", desacopla completamente a camada de API do processamento de backend. A API pode responder rapidamente ao cliente com uma confirmação de recebimento, enquanto a mensagem aguarda de forma segura no Service Bus para ser processada. Uma Azure Function, configurada com um gatilho do Service Bus, é então ativada pela presença da mensagem para iniciar a orquestração da Durable Function, garantindo que nenhuma transação seja perdida, mesmo que os serviços de processamento estejam temporariamente indisponíveis.

Azure API Management: O Ponto de Entrada Seguro e Governado

Todas as interações externas com o sistema de pagamento serão roteadas através do Azure API Management (APIM). O APIM atua como uma fachada ou um proxy reverso, abstraindo a complexa implementação serverless de backend dos clientes e parceiros que consomem a API.

As funções críticas do APIM nesta arquitetura incluem:

  • Segurança: Aplicação de políticas de segurança robustas, como autenticação (por exemplo, OAuth 2.0), autorização baseada em tokens, limitação de taxa (rate limiting) e cotas para prevenir abuso e garantir o uso justo do serviço.

  • Governança: Fornecimento de um portal do desenvolvedor para que parceiros possam descobrir, entender e se integrar com as APIs de pagamento. O APIM também centraliza o versionamento das APIs, permitindo a introdução de novas funcionalidades sem quebrar as integrações existentes.

  • Observabilidade: Registro e rastreamento de todas as chamadas de API, fornecendo visibilidade crucial sobre o uso, desempenho e erros. Esses logs são essenciais para a solução de problemas e para a análise de negócios.

Um aspecto de segurança particularmente importante é a integração nativa do APIM com o Service Bus usando Identidades Gerenciadas (Managed Identities). Em vez de armazenar a string de conexão do Service Bus como um segredo dentro das políticas do APIM, o próprio APIM recebe uma identidade no Microsoft Entra ID. Essa identidade recebe permissão para enviar mensagens ao Service Bus. Isso elimina completamente a necessidade de gerenciar segredos no nível da API, fortalecendo a postura de segurança da solução.

A resiliência da arquitetura não deriva da confiabilidade infalível de um único componente, mas sim de uma "cadeia de desacoplamento" cuidadosamente projetada que isola falhas e garante a continuidade do negócio. Uma abordagem ingênua poderia se concentrar em tornar cada Azure Function individualmente à prova de falhas. No entanto, o Azure Well-Architected Framework enfatiza o projeto para a falha como um princípio fundamental. Esta arquitetura incorpora esse princípio através de múltiplas camadas de separação. O APIM desacopla os clientes do sistema de mensageria, permitindo que a API responda rapidamente, mesmo que o backend esteja sob carga pesada. O Service Bus, por sua vez, desacopla a ingestão de mensagens da lógica de processamento, garantindo que as solicitações de pagamento sejam armazenadas de forma durável e segura. Finalmente, as Durable Functions orquestram a lógica de negócio, mas delegam as tarefas individuais a Activity Functions sem estado.

O resultado é um sistema onde uma falha em uma parte é contida e não causa uma falha em cascata. Se uma Activity Function que se comunica com um gateway de pagamento externo falhar devido a um problema de rede transitório, a mensagem permanece segura no Service Bus para uma nova tentativa, ou a própria Durable Function pode orquestrar uma política de repetição, evitando a perda de dados. Se a orquestração inteira falhar no meio do processo devido a uma interrupção de um serviço dependente, o checkpointing automático das Durable Functions garante que ela possa ser retomada exatamente do último passo bem-sucedido assim que o problema for resolvido. A resiliência, portanto, é uma propriedade emergente das interações entre esses serviços fracamente acoplados, e não apenas da robustez de um único serviço.


Uma Estratégia de Dados Global para Desempenho e Conformidade

Esta seção detalha a estratégia de armazenamento de dados em múltiplas camadas, projetada para as demandas únicas de uma plataforma financeira multinacional: transações de baixa latência, arquivamento de longo prazo e eficiência de custos.

Armazenamento Transacional: Azure Cosmos DB para Escala Global e Baixa Latência

O Azure Cosmos DB será o banco de dados principal para todos os dados transacionais, incluindo pagamentos e contas de clientes. Sua distribuição global é crucial, permitindo replicação de dados transparente em múltiplas regiões Azure, essencial para operações na América Latina (ex: Brasil, México). Isso garante latências de leitura/escrita de milissegundos e uma experiência de usuário otimizada.

A arquitetura usará escritas multi-região em modelo ativo-ativo, garantindo 99,999% de disponibilidade e continuidade dos negócios sem perda de dados, mesmo com indisponibilidade de uma região. O Cosmos DB suporta múltiplos modelos de dados; para esta arquitetura, a padronização será na SQL API nativa para maximizar recursos.

Decisão Crítica: Selecionando o Nível de Consistência Correto

O Azure Cosmos DB oferece cinco níveis de consistência bem definidos, que representam um trade-off fundamental entre consistência de dados, disponibilidade e latência. A escolha do nível de consistência é uma das decisões arquitetônicas mais importantes para um sistema de pagamento.

  • Forte (Strong): Oferece a garantia mais alta (linearizabilidade), garantindo que todas as leituras sempre retornem a versão mais recente e confirmada de um item. No entanto, essa garantia tem o custo de uma latência de escrita mais alta, pois a escrita deve ser confirmada em um quórum de réplicas distribuídas globalmente, o que pode impactar a experiência do usuário.

  • Eventual (Eventual): Oferece a menor latência e a maior disponibilidade, mas não há garantia sobre a ordem das leituras. Isso é inaceitável para transações financeiras, onde o risco de ler dados obsoletos (por exemplo, um saldo de conta incorreto) é catastrófico.

Para esta arquitetura, o nível de consistência recomendado é a Obsolescência Limitada (Bounded Staleness). Este modelo oferece um equilíbrio pragmático e ideal para sistemas financeiros. Ele garante que as leituras não ficarão atrasadas em relação às escritas por mais do que um intervalo de tempo configurável (T) ou um número de versões (K). Isso permite que o negócio defina uma janela precisa e aceitável de obsolescência de dados, alcançando uma consistência quase forte com um desempenho e disponibilidade muito superiores à consistência Forte pura.

A Sessão (Session) também é uma alternativa viável, especialmente para interações no contexto de um único usuário. Ela garante a consistência de "leia suas próprias escritas" (read-your-writes) dentro de uma sessão de cliente específica, o que é ideal para cenários como um usuário visualizar seu histórico de transações imediatamente após fazer um pagamento.

A tabela a seguir fornece uma análise comparativa clara dos níveis de consistência do Cosmos DB, traduzindo conceitos técnicos complexos em trade-offs de negócios tangíveis.

Nível de Consistência

Garantia de Consistência (em termos simples)

Latência de Leitura

Latência de Escrita

Disponibilidade

Caso de Uso Típico

Forte

Todas as leituras veem a escrita mais recente confirmada, globalmente.

Mais alta

Mais alta

Mais baixa

Sistemas de mercado de ações, onde a linearizabilidade é obrigatória.

Obsolescência Limitada

As leituras podem estar atrasadas em relação às escritas por um tempo/versão máximo definido.

Baixa

Baixa

Alta

Sistemas de pagamento, catálogos de produtos, onde uma consistência quase em tempo real é necessária.

Sessão

Dentro de uma sessão de usuário, as leituras sempre veem as escritas anteriores dessa mesma sessão.

Mais baixa

Mais baixa

Mais alta

Aplicações centradas no usuário (carrinhos de compras, perfis de usuário).

Prefixo Consistente

As leituras nunca veem escritas fora de ordem.

Mais baixa

Mais baixa

Mais alta

Cenários que requerem ordem, mas podem tolerar algum atraso.

Eventual

Nenhuma garantia de ordem; as réplicas eventualmente convergem.

Mais baixa

Mais baixa

Mais alta

Contadores de "curtidas" em redes sociais, dados não críticos.

Armazenamento de Arquivamento e Logs: Azure Blob Storage para Otimização de Custos

Nem todos os dados exigem o alto desempenho e o custo associado ao Cosmos DB. Logs de transações, recibos, documentos de conformidade e trilhas de auditoria devem ser retidos por longos períodos (por exemplo, 10 anos para fins de conformidade), mas são acessados com pouca frequência. Para esses dados não estruturados, o Azure Blob Storage é a solução ideal e mais econômica.

Para otimizar drasticamente os custos de armazenamento ao longo do ciclo de vida dos dados, será implementada uma política de Gerenciamento do Ciclo de Vida (Lifecycle Management). Os dados serão ingeridos na camada Quente (Hot) para acesso imediato, se necessário. Após um período definido (por exemplo, 90 dias), a política moverá automaticamente os dados para a camada Fria (Cool). Finalmente, após um período mais longo (por exemplo, 1 ano), os dados serão movidos para a camada de Arquivamento (Archive), que oferece o menor custo de armazenamento possível.

Para garantir a durabilidade e a recuperação de desastres desses dados críticos, o armazenamento será configurado com armazenamento com redundância geográfica (GRS - Geo-redundant storage). O GRS replica os dados de forma assíncrona para uma região secundária a centenas de quilômetros de distância, garantindo que os dados estejam seguros mesmo no caso de uma interrupção regional completa.

A arquitetura de dados não é monolítica; é um sistema em camadas onde o custo é diretamente proporcional aos requisitos de desempenho e à frequência de acesso aos dados. Um erro comum no design de sistemas é usar um único armazenamento de dados para todos os fins. Isso leva a dois resultados indesejáveis: ou se paga um preço premium por dados de baixo acesso (usando um banco de dados de alto desempenho como o Cosmos DB para tudo) ou se sofre com problemas de desempenho para dados transacionais (usando um armazenamento de baixo custo como o Blob Storage para tudo).

A consulta do usuário implica a necessidade tanto de transações de alto desempenho quanto de retenção de dados a longo prazo para relatórios de negócios. Esses são requisitos conflitantes para um único tipo de armazenamento. Ao analisar os tipos de dados (transacionais vs. arquivamento) e seus padrões de acesso, podemos mapeá-los para o serviço Azure mais apropriado.

O Cosmos DB é projetado para operações globais de alta taxa de transferência e baixa latência. O Blob Storage é projetado para armazenamento de objetos em escala massiva e de baixo custo. A aplicação de políticas de ciclo de vida do Blob Storage é uma implementação direta de um princípio FinOps fundamental: otimizar os custos com base no uso.

Essa abordagem em camadas garante que não estejamos pagando preços premium por dados que são raramente acessados, ao mesmo tempo em que cumprimos os SLAs de desempenho para o caminho transacional crítico. Isso cria uma estratégia de dados sofisticada e consciente dos custos, onde a própria arquitetura impõe a eficiência financeira.

A necessidade de transações de alto desempenho e retenção de dados a longo prazo para relatórios são requisitos conflitantes para um único armazenamento. Mapeamos dados transacionais para Cosmos DB 10 (alta taxa de transferência/baixa latência) e dados de arquivamento para Blob Storage 14 (armazenamento massivo de baixo custo). Políticas de ciclo de vida do Blob Storage otimizam custos, evitando preços premium para dados raramente acessados, mas cumprindo SLAs de desempenho para transações. Esta arquitetura garante eficiência financeira e uma estratégia de dados sofisticada e econômica.


Gerenciando a Lógica Específica de Cada País e Implantações Regionais

Esta seção aborda a complexidade de operar uma plataforma única em vários países da América Latina, cada um com regulamentações, métodos de pagamento e moedas únicos.

Padrão Arquitetural para Lógica Multi-País

Para evitar a criação de uma Azure Function monolítica e de difícil manutenção que contenha a lógica para todos os países, será implementado o Padrão de Projeto Strategy. Uma Function "Orquestradora" central identificará o país de origem de cada transação (por exemplo, a partir de um cabeçalho da API ou do payload da requisição). Em seguida, ela delegará o processamento específico do país (como cálculo de impostos, integração com gateways de pagamento locais, conversão de moeda) para uma Function "Strategy" dedicada para aquele país (por exemplo, ProcessarPagamento_Brasil, ProcessarPagamento_Mexico).

Este padrão promove o isolamento do código, tornando significativamente mais fácil adicionar suporte a novos países no futuro sem modificar a lógica central do fluxo de pagamento. Cada função permanece pequena e focada em uma única responsabilidade, o que se alinha perfeitamente com as melhores práticas da computação serverless. Essa abordagem modular não apenas simplifica o desenvolvimento e os testes, mas também permite que equipes diferentes trabalhem em lógicas de países distintos de forma independente.

Configuração Centralizada com o Azure App Configuration

Codificar configurações específicas de cada país — como chaves de API para gateways locais, taxas de impostos, sinalizadores regulatórios e mensagens de erro localizadas — diretamente no código da aplicação é uma prática frágil e insustentável. Qualquer alteração, por menor que seja, exigiria uma nova implantação de código. Para resolver isso, utilizaremos o Azure App Configuration como um repositório centralizado para todas essas configurações.

O Azure App Configuration permite o gerenciamento de configurações de forma hierárquica e pode ser segmentado por etiquetas (por exemplo, por país e por ambiente). As Azure Functions podem carregar essas configurações de forma segura durante a inicialização. Isso possibilita atualizações dinâmicas das regras de negócio em todas as regiões sem qualquer alteração no código, uma capacidade crítica para responder agilmente a mudanças regulatórias ou de mercado. Para gerenciar segredos de forma segura, como chaves de API, o App Configuration pode armazenar referências ao Azure Key Vault, em vez dos próprios segredos, combinando a flexibilidade da configuração com a segurança do armazenamento de segredos.

Estratégia de Implantação Regional para Desempenho e Soberania de Dados

O Azure está expandindo na América Latina. Para baixa latência e conformidade com a soberania de dados, uma pilha de aplicação serverless completa será implantada em cada região Azure alvo. Recursos do Azure são regionais, exigindo cópias da infraestrutura e código em novas regiões, automatizadas por CI/CD. O Azure Front Door atuará como ponto de entrada global, roteando usuários para a implantação mais próxima e fornecendo failover automático, garantindo alta disponibilidade.

A plataforma multinacional adaptável combina um padrão Strategy (código), App Configuration (gerenciamento de configuração) e implantações regionais (infraestrutura). O desafio é gerenciar variações de regras de negócio locais. A duplicação da infraestrutura não é suficiente; o código precisa lidar com as variações, utilizando o Padrão Strategy para separar o "o quê" do "como" no processamento de pagamentos, evitando "mega-funções".

As configurações específicas de cada país, em vez de App Settings, serão centralizadas no Azure App Configuration para gerenciar múltiplos Function Apps em diferentes regiões e países. Assim, a solução multinacional aborda três camadas: infraestrutura (regional), código (Padrão Strategy) e configuração (App Configuration), criando um sistema escalável, gerenciável e em conformidade.


Uma Postura de Segurança Zero-Trust e Conformidade com o PCI-DSS

Esta seção detalha a arquitetura de segurança de defesa em profundidade, focando no princípio Zero-Trust ("nunca confie, sempre verifique") e fornecendo um caminho claro para alcançar a conformidade com o padrão PCI-DSS.

Gerenciamento de Identidade e Acesso: O Princípio do Menor Privilégio

A base da nossa postura de segurança é o uso de Identidades Gerenciadas (Managed Identities). Em vez de armazenar strings de conexão, chaves ou outros segredos nas configurações da aplicação, os recursos do Azure, como as Functions e o APIM, receberão uma identidade gerenciada diretamente no Microsoft Entra ID.

Com essa identidade, utilizaremos o Controle de Acesso Baseado em Função do Azure (RBAC - Role-Based Access Control) para conceder as permissões mínimas necessárias para cada recurso operar. Por exemplo, uma Azure Function que precisa ler um segredo do Key Vault receberá apenas a função "Key Vault Secrets User" e nada mais. Isso impõe rigorosamente o princípio do menor privilégio, um pilar da segurança Zero-Trust, garantindo que, mesmo que um componente seja comprometido, o raio de ação do invasor seja extremamente limitado.

Para operadores humanos (desenvolvedores, administradores de sistema), o acesso ao portal do Azure e às APIs de gerenciamento será protegido com a Autenticação Multifator (MFA) obrigatória, adicionando uma camada crítica de verificação de identidade.

Protegendo Segredos com o Azure Key Vault

Todos os segredos da aplicação — chaves de API para serviços de terceiros, chaves de criptografia personalizadas, certificados TLS — serão armazenados de forma segura no Azure Key Vault. O Key Vault é um serviço de hardware security module (HSM) gerenciado que fornece armazenamento seguro e controle de acesso rigoroso a tokens, senhas, certificados e chaves.

As Azure Functions utilizarão sua Identidade Gerenciada para se autenticar de forma transparente e segura no Key Vault e recuperar os segredos em tempo de execução. Essa abordagem elimina completamente os segredos do código-fonte, dos arquivos de configuração e das variáveis de ambiente, o que representa um aprimoramento massivo de segurança e é um requisito fundamental do padrão PCI-DSS.

Segurança e Isolamento de Rede

Embora a computação serverless abstraia grande parte da camada de rede, ainda é possível e necessário controlar o fluxo de tráfego para proteger a aplicação. As Azure Functions serão integradas a uma Rede Virtual do Azure (VNet). Isso permite o uso de Pontos de Extremidade Privados (Private Endpoints) para serviços dependentes, como o Cosmos DB e as Contas de Armazenamento.

Um Private Endpoint expõe um serviço do Azure (como o Cosmos DB) com um endereço IP privado dentro da nossa VNet. Isso garante que todo o tráfego entre a nossa Function e o banco de dados nunca saia da rede segura da Microsoft, evitando a exposição à internet pública.

Na borda da rede, à frente do API Management, será implantado o Gateway de Aplicação do Azure (Azure Application Gateway) com seu Web Application Firewall (WAF) integrado. O WAF inspeciona o tráfego HTTP de entrada e protege contra explorações e vulnerabilidades web comuns, como injeção de SQL, cross-site scripting (XSS) e outros ataques listados no OWASP Top 10. Esta é uma medida de segurança crítica e uma parte essencial do Requisito 6 do PCI-DSS.

Mapeando a Arquitetura para os Requisitos do PCI-DSS 4.0

Alcançar a conformidade com o Padrão de Segurança de Dados da Indústria de Cartões de Pagamento (PCI-DSS) é um processo de responsabilidade compartilhada entre a Microsoft Azure e o cliente. A Microsoft é responsável pela "segurança da nuvem", garantindo que a infraestrutura física e os serviços da plataforma atendam aos padrões de conformidade. O cliente, por sua vez, é responsável pela "segurança na nuvem", ou seja, por projetar, configurar e operar a aplicação de forma segura sobre essa infraestrutura.

A tabela a seguir fornece um mapeamento detalhado de como a arquitetura serverless proposta atende aos 12 requisitos do PCI-DSS 4.0, servindo como um artefato de conformidade para equipes de segurança e auditores.

Req. PCI #

Descrição do Requisito

Serviço(s) Azure Utilizado(s)

Detalhes da Implementação

1

Instalar e manter controles de segurança de rede.

Azure Firewall, Network Security Groups (NSGs), Application Gateway com WAF.

O tráfego de entrada é filtrado pelo WAF. As Functions são integradas a uma VNet e o tráfego entre componentes é controlado por NSGs. O acesso de saída é controlado pelo Azure Firewall.

2

Aplicar configurações seguras a todos os componentes do sistema.

Azure Policy, Microsoft Defender for Cloud.

O Azure Policy impõe configurações seguras em todos os recursos (ex: exigir TLS 1.2). O Defender for Cloud monitora continuamente a postura de segurança e alerta sobre configurações incorretas.

3

Proteger os dados do titular do cartão armazenados.

Azure Cosmos DB, Azure Key Vault.

O Cosmos DB criptografa todos os dados em repouso por padrão. Chaves Gerenciadas pelo Cliente (CMK) armazenadas no Key Vault serão usadas para controle adicional. O acesso ao Key Vault é restrito via RBAC.

4

Proteger os dados do titular do cartão com criptografia forte durante a transmissão em redes abertas e públicas.

API Management, Azure Functions, TLS.

Todo o tráfego para o APIM e entre os serviços do Azure é forçado a usar TLS 1.2 ou superior. O APIM é configurado para aceitar apenas cifras de criptografia fortes.

5

Proteger todos os sistemas e redes contra software malicioso.

Microsoft Defender for Cloud.

O Defender for Cloud fornece proteção contra ameaças para os recursos do Azure, incluindo a detecção de malware e atividades anômalas na infraestrutura subjacente das Functions e outros serviços.

6

Desenvolver e manter sistemas e software seguros.

Azure DevOps (Secure Pipeline), GitHub Advanced Security.

Pipelines de CI/CD seguros incluem varredura de código estático (SAST), análise de dependências e varredura de contêineres para identificar vulnerabilidades antes da implantação.

7.0

Restringir o acesso aos componentes do sistema e aos dados do titular do cartão com base na necessidade de conhecimento do negócio.

Microsoft Entra ID, RBAC.

O acesso ao gerenciamento de todos os recursos do Azure é estritamente controlado pelo RBAC, aplicando o princípio do menor privilégio. As identidades gerenciadas são usadas para acesso de serviço a serviço.

8

Identificar usuários e autenticar o acesso aos componentes do sistema.

Microsoft Entra ID, MFA, Managed Identities.

O acesso de administrador ao portal do Azure requer MFA. As identidades gerenciadas fornecem um mecanismo de autenticação forte e sem senha para os serviços do Azure.

9

Restringir o acesso físico aos dados do titular do cartão.

Herdado da Microsoft Azure.

A Microsoft é responsável pela segurança física dos data centers. A responsabilidade do cliente se limita a proteger os endpoints e quaisquer ambientes on-premises.

10

Rastrear e monitorar todo o acesso aos recursos de rede e aos dados do titular do cartão.

Azure Monitor, Microsoft Sentinel, Application Insights.

O Azure Monitor coleta logs e métricas de todos os serviços. O Application Insights fornece rastreamento distribuído. O Microsoft Sentinel atua como SIEM/SOAR para correlação de eventos e resposta a incidentes.

11

Testar a segurança de sistemas e redes regularmente.

Microsoft Defender for Cloud, Ferramentas de Teste de Penetração de Terceiros.

O Defender for Cloud realiza varreduras de vulnerabilidade contínuas. Testes de penetração regulares e varreduras ASV (Approved Scanning Vendor) são conduzidos contra os endpoints da aplicação.

12

Apoiar a segurança da informação com políticas e programas organizacionais.

Azure Policy, Documentação Interna.

O Azure Policy ajuda a impor políticas de segurança da informação como código. A organização deve manter documentação detalhada sobre políticas, procedimentos e responsabilidades de segurança.


Implementando um Framework FinOps para Governança Abrangente de Custos

Princípio Fundamental: Ganhando Visibilidade de Custos

O primeiro e mais crucial passo na jornada FinOps é entender de forma granular onde o dinheiro está sendo gasto. Para isso, será instituída uma estratégia de marcação de recursos (tagging) obrigatória. Todos os recursos implantados no Azure deverão ser marcados com tags consistentes, como country-code, environment (Prod/Dev/Staging), cost-center e service-name. Essa prática permite uma análise de custos detalhada no Azure Cost Management, possibilitando a filtragem e o agrupamento de despesas por unidade de negócio, projeto ou país.

O hub central para toda a governança de custos será o Azure Cost Management + Billing. Esta ferramenta nativa do Azure oferece painéis poderosos para analisar os custos em diferentes escopos (grupos de gerenciamento, assinaturas, grupos de recursos) e visualizar tendências de gastos ao longo do tempo.

Estratégias de Otimização de Custos para Cargas de Trabalho Serverless

Com a visibilidade estabelecida, o foco se volta para a otimização. A natureza serverless da arquitetura já oferece uma base econômica, mas otimizações adicionais são essenciais.

  • Azure Functions: A utilização primária do Plano de Consumo garante que o pagamento seja feito apenas pelo tempo de execução. A análise contínua da duração das funções e do consumo de memória através do Azure Monitor permitirá o dimensionamento correto das configurações. Para componentes do sistema com tráfego mais constante e previsível, será avaliada a utilização do Plano Premium em conjunto com Planos de Poupança (Savings Plans) do Azure, que oferecem descontos significativos em troca de um compromisso de gastos por hora durante um ou três anos.

  • Azure Cosmos DB: Para ambientes de desenvolvimento e teste, onde o tráfego é esporádico e imprevisível, a camada serverless do Cosmos DB é a escolha mais econômica, pois fatura por operação, eliminando custos de capacidade ociosa. Em produção, será provisionada uma taxa de transferência, mas com o recurso de autoescala habilitado. A autoescala ajusta dinamicamente a capacidade provisionada (RUs) com base na demanda em tempo real, evitando o superprovisionamento e garantindo que se pague apenas pela capacidade necessária em um determinado momento.

  • Azure Blob Storage: Conforme detalhado na Seção 2, as políticas de Gerenciamento do Ciclo de Vida são a principal ferramenta para otimizar os custos de armazenamento. A transição automática de dados para camadas mais baratas (Hot para Cool e depois para Archive) com base na idade dos dados pode resultar em economias de custo superiores a 80% para dados de longo prazo.

  • Azure Advisor: Será estabelecida uma cadência regular (por exemplo, quinzenal) para revisar as recomendações do Azure Advisor. O Advisor é um consultor de nuvem personalizado e gratuito que analisa a configuração dos recursos e fornece recomendações acionáveis para otimizar custos, desempenho, segurança e alta disponibilidade.

Controle Proativo: Criando Orçamentos e Alertas Automatizados

Para passar de uma postura reativa para uma proativa, serão criados orçamentos (budgets) no Azure Cost Management. Esta é uma ferramenta de controle fundamental.

  • Escopo dos Orçamentos: Serão criados orçamentos em múltiplos níveis: um orçamento geral para a assinatura de produção e orçamentos mais granulares para cada grupo de recursos correspondente a um país ou a um ambiente específico (Dev/Staging).

  • Limiares de Alerta: Para cada orçamento, serão configurados múltiplos limiares de alerta baseados tanto nos custos Reais (Actual) quanto nos custos Previstos (Forecasted). Por exemplo:

    • 50% (Real): Um alerta informativo para as equipes de engenharia.

    • 75% (Previsto): Um alerta de aviso precoce, indicando que, com base nas tendências atuais, o orçamento provavelmente será excedido. Isso dá tempo para uma intervenção antes que o problema ocorra.

    • 90% (Real): Um alerta crítico para a gerência de engenharia e finanças.

    • 100% (Real): Notificação de que o orçamento foi atingido.

  • Ações Automatizadas: Os alertas de orçamento acionarão Grupos de Ações (Action Groups). Um Grupo de Ações pode executar várias ações, como enviar e-mails e mensagens SMS para as partes interessadas, ou acionar um webhook que notifica um canal no Slack ou Microsoft Teams. Em cenários mais avançados, pode até mesmo acionar uma Azure Function ou um Logic App para tomar ações corretivas automatizadas, como desativar recursos não essenciais em ambientes de desenvolvimento.

A implementação eficaz do FinOps é uma prática cultural habilitada por ferramentas, e não apenas o uso de uma ferramenta. A consulta do usuário pede para "verificar os custos com o FinOps", o que implica mais do que simplesmente olhar para uma fatura. FinOps é um framework que envolve pessoas, processos e tecnologia. As ferramentas — Azure Cost Management , Budgets , Advisor — são a parte da "tecnologia"; elas fornecem os dados.

No entanto, dados sem ação são inúteis. A parte do "processo" consiste em estabelecer rotinas: revisões regulares das recomendações do Advisor, análises mensais do orçamento e um processo definido para lidar com os alertas de orçamento. A parte das "pessoas" é sobre responsabilidade. Ao usar uma estratégia de marcação detalhada e criar orçamentos por equipe ou país, a responsabilidade pelo custo é transferida para as equipes que incorrem nos gastos. Quando a equipe do "Brasil" recebe um alerta de que seu grupo de recursos está com tendência a ultrapassar o orçamento, isso cria responsabilidade e incentiva a otimização. Portanto, a implementação técnica de orçamentos e alertas é a parte fácil. O verdadeiro valor e o cerne de uma prática FinOps bem-sucedida residem no uso dessas ferramentas para fomentar uma cultura de consciência de custos e responsabilidade em toda a organização.


Construindo o Pipeline de Business Intelligence Trimestral

O desafio central da análise de BI sobre dados operacionais é evitar o impacto no desempenho do sistema transacional. Consultas analíticas pesadas podem consumir recursos e degradar a performance das operações de pagamento em tempo real. O Azure Synapse Link para Cosmos DB resolve elegantemente este problema ao habilitar o Processamento Híbrido Transacional/Analítico (HTAP - Hybrid Transactional/Analytical Processing).

Quando habilitado, o Synapse Link replica automaticamente os dados do armazenamento transacional do Cosmos DB (baseado em linhas e otimizado para escritas) para um armazenamento analítico separado (baseado em colunas e otimizado para leituras em larga escala). Essa replicação ocorre em tempo quase real (geralmente em menos de 2 minutos), sem a necessidade de pipelines de Extração, Transformação e Carga (ETL) e, crucialmente, com impacto zero no consumo de Unidades de Requisição (RUs) da carga de trabalho transacional.

Consultando e Analisando Dados com Pools SQL Serverless do Synapse

Uma vez que os dados estão disponíveis no armazenamento analítico, analistas de negócios e engenheiros de dados podem consultá-los usando o Azure Synapse Analytics. Para esta arquitetura, serão utilizados os pools SQL serverless. Este recurso permite a execução de consultas usando a linguagem T-SQL padrão sobre os dados no armazenamento analítico, com um modelo de faturamento de pagamento por consulta. Isso é extremamente econômico, pois não há custos de infraestrutura provisionada; o pagamento é feito apenas pelos dados processados por cada consulta executada.

Serão criadas exibições (views) T-SQL no pool SQL serverless sobre o armazenamento analítico do Cosmos DB. As views simplificam o modelo de dados para as ferramentas de BI, abstraindo a estrutura JSON aninhada do Cosmos DB em um formato tabular relacional. Elas também permitem a junção de dados de múltiplos contêineres do Cosmos DB ou até mesmo a combinação com outras fontes de dados, como arquivos em um Data Lake.

Visualização em Tempo Real com Power BI e DirectQuery

A etapa final do pipeline é a visualização e a geração de insights. O Power BI será conectado diretamente ao pool SQL serverless do Synapse usando o modo DirectQuery.

O modo DirectQuery é um diferencial fundamental para esta arquitetura. Ao contrário do modo de Importação, o DirectQuery não copia ou importa dados para o Power BI. Em vez disso, cada interação com um relatório no Power BI (como aplicar um filtro por país ou alterar um intervalo de datas) gera uma consulta T-SQL ao vivo que é enviada ao pool SQL serverless do Synapse. O Synapse, por sua vez, executa essa consulta sobre os dados em tempo quase real provenientes do armazenamento analítico do Cosmos DB. Isso garante que a equipe de negócios esteja sempre analisando os dados mais atuais, eliminando os atrasos inerentes aos ciclos de atualização de dados dos sistemas de BI tradicionais.

Definindo Indicadores Chave de Desempenho (KPIs) para o Relatório de Negócios

A tecnologia é apenas um meio para um fim; o verdadeiro valor está nos insights que ela proporciona. O relatório trimestral, entregue através do painel do Power BI, se concentrará em KPIs de pagamento essenciais para a tomada de decisões estratégicas, incluindo :

  • Métricas Transacionais: Volume Total de Pagamentos (TPV - Total Payment Volume), Taxa de Autorização (transações aprovadas vs. tentadas), Taxa de Sucesso da Transação.

  • Métricas Financeiras: Custo por Transação, Receita por País e por Método de Pagamento, Análise de Taxas de Intercâmbio.

  • Métricas Operacionais: Tempo Médio de Processamento da Transação (latência), Uptime do Sistema, Desempenho do Gateway de Pagamento.

  • Experiência do Cliente: Análise de Falhas de Pagamento (principais motivos de recusa), Churn (cancelamento de clientes) relacionado a problemas de pagamento.

A arquitetura Synapse Link + Power BI DirectQuery muda fundamentalmente a dinâmica entre as equipes de negócios e de tecnologia, evoluindo de relatórios estáticos e retrospectivos para a exploração de dados dinâmica e em tempo quase real. O processo de BI tradicional envolve jobs de ETL noturnos para mover dados de um banco de dados OLTP para um data warehouse OLAP. Isso significa que os relatórios de negócios estão sempre, no mínimo, 24 horas desatualizados. O Synapse Link elimina explicitamente a necessidade de ETL como um benefício chave.

A solicitação do usuário é por um relatório a cada "3 meses". Uma abordagem tradicional seria executar uma grande exportação de dados no final do trimestre. No entanto, a arquitetura projetada fornece uma conexão ao vivo. O "relatório trimestral" não é mais um PDF estático, mas um instantâneo de um painel dinâmico do Power BI que a equipe de negócios pode acessar a qualquer momento.

Isso tem implicações profundas. Em vez de pedir à equipe de TI uma nova variante do relatório, um analista de negócios pode se auto-servir, explorando os dados ao vivo para responder a perguntas de acompanhamento imediatamente. Uma queda súbita na taxa de autorização em um país específico pode ser investigada em minutos, não em dias. Portanto, a implicação mais ampla é uma mudança na capacidade operacional. A arquitetura não apenas cumpre o requisito de um relatório trimestral; ela capacita o negócio com uma capacidade de análise contínua e de autoatendimento, tornando a organização mais ágil e orientada a dados.


Seção 7: Garantindo a Excelência Operacional com Automação de CI/CD

Controle de Código-Fonte e Estratégia de Ramificação

Todo o código da aplicação (Azure Functions), as definições de infraestrutura (modelos ARM/Bicep) e as definições de pipeline (YAML) serão armazenados em um repositório Git, seja no Azure Repos ou no GitHub. Será adotada uma estratégia de ramificação simples baseada no main (trunk-based development), adequada para a entrega contínua, onde a ramificação main é sempre mantida em um estado implantável.

Construindo o Pipeline de CI/CD com o Azure DevOps

Utilizaremos o Azure Pipelines para definir nosso processo de Integração Contínua (CI) e Entrega Contínua (CD) usando um único arquivo azure-pipelines.yml. Isso habilita a "pipeline como código", garantindo que o processo de implantação seja versionado, auditável e repetível.

  • Integração Contínua (CI): O pipeline será acionado a cada commit na ramificação main. O estágio de CI executará as seguintes etapas:

    1. Instalar as dependências do projeto (pacotes NuGet para.NET).

    2. Compilar o projeto.NET para as Azure Functions.

    3. Executar testes automatizados de unidade e integração para validar a lógica de negócio.

    4. Empacotar a aplicação em um artefato de implantação (um arquivo.zip).

    5. Publicar o artefato para que o estágio de CD possa consumi-lo.

Entrega Contínua (CD) para Múltiplas Regiões

O estágio de CD será responsável por implantar o artefato de forma segura e automatizada nos vários ambientes regionais (por exemplo, Desenvolvimento, Homologação, Produção-Brasil, Produção-México).

  • Implantação: A tarefa AzureFunctionApp@2 no pipeline YAML será usada para implantar o pacote de código na Function App de destino.

  • Slots de Implantação: Para garantir implantações com zero tempo de inatividade (zero-downtime deployments), serão utilizados os slots de implantação (disponíveis no Plano Premium do Functions). O pipeline primeiro implantará a nova versão em um slot de "homologação" (staging). Após a execução de testes de fumaça (smoke tests) contra o endpoint do slot de homologação para verificar a saúde da nova versão, o pipeline executará uma operação de "troca" (swap). A troca redireciona instantaneamente o tráfego de produção para a nova versão, que já está "aquecida" e pronta para receber carga. Este método fornece um mecanismo de reversão (rollback) seguro e instantâneo: se problemas forem detectados, uma nova troca pode reverter o tráfego para a versão anterior estável.

Observabilidade: Rastreamento Distribuído com o Application Insights

Em um sistema distribuído, entender o fluxo de uma única transação através do APIM, Service Bus e múltiplas Functions é um desafio complexo. Para resolver isso, o Application Insights será configurado para todos os componentes da arquitetura.

  • Rastreamento Distribuído: O Application Insights habilita automaticamente o rastreamento distribuído ao correlacionar a telemetria entre os serviços. Ele injeta e propaga cabeçalhos de contexto (como traceparent e Request-Id) em todas as chamadas, permitindo que as operações individuais sejam ligadas em uma única visualização de transação de ponta a ponta. Isso permite visualizar um mapa da aplicação e identificar rapidamente qual componente está causando lentidão ou falhas.

  • Rastreamento de Durable Functions: A extensão Durable Functions emite eventos de rastreamento detalhados (como OrchestratorStarted, ActivityCompleted, TimerFired) para o Application Insights. Isso permite visualizar o fluxo completo da orquestração, incluindo a duração de cada etapa, as entradas e saídas (se habilitado) e os pontos de falha, o que é inestimável para diagnosticar problemas em fluxos de trabalho complexos.

Abaixo está um trecho conceitual e anotado de um arquivo azure-pipelines.yml, demonstrando a estrutura para CI/CD de uma Function App.NET.

YAML

trigger:
- main

variables:
  azureSubscription: 'sua-conexao-de-servico-azure'
  dotnetVersion: '8.0.x'
  vmImageName: 'windows-latest'

stages:
- stage: Build
  displayName: 'Build e Teste'
  jobs:
  - job: Build
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: UseDotNet@2
      displayName: 'Instalar.NET SDK'
      inputs:
        packageType: 'sdk'
        version: $(dotnetVersion)

    - script: dotnet build --configuration Release
      displayName: 'Build do Projeto'

    - script: dotnet test --configuration Release
      displayName: 'Executar Testes de Unidade'

    - task: DotNetCoreCLI@2
      displayName: 'Publicar Artefato'
      inputs:
        command: publish
        publishWebProjects: true
        arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true

    - task: PublishBuildArtifacts@1
      displayName: 'Publicar Artefato para o Pipeline'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'

- stage: Deploy_Staging_Brazil
  displayName: 'Implantar em Homologação (Brasil)'
  dependsOn: Build
  jobs:
  - deployment: Deploy
    environment: 'Homologacao-Brasil'
    pool:
      vmImage: $(vmImageName)
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureFunctionApp@2
            displayName: 'Implantar Azure Function App em Homologação (Brasil)'
            inputs:
              azureSubscription: $(azureSubscription)
              appType: 'functionApp'
              appName: 'payment-func-br-staging'
              package: '$(Pipeline.Workspace)/drop/*.zip'
              deploymentMethod: 'runFromPackage'

Um pipeline de CI/CD totalmente automatizado com observabilidade integrada não é um "nice-to-have", mas um requisito fundamental para operar um sistema serverless complexo e multirregional em escala. A arquitetura envolve a implantação de infraestrutura e código idênticos, mas configurados separadamente, em múltiplas regiões do Azure. A realização manual dessas implantações é lenta, propensa a erros e insustentável. A automação via Azure DevOps resolve isso.

A complexidade do sistema (APIM -> Service Bus -> Function -> Durable Orchestration -> Activity Functions -> Cosmos DB) torna a depuração de falhas extremamente difícil sem as ferramentas adequadas. O Application Insights fornece o rastreamento distribuído necessário para visualizar toda a cadeia de chamadas. Um processo de implantação manual levaria inevitavelmente a um desvio de configuração (configuration drift) entre as regiões, causando problemas difíceis de diagnosticar do tipo "funciona no Brasil, mas não no México". A abordagem de pipeline como código garante que cada região seja implantada a partir da mesma definição, versionada e controlada, garantindo consistência.

Portanto, o pipeline de CI/CD é o mecanismo central que impõe consistência, confiabilidade e agilidade. É a espinha dorsal operacional que torna a arquitetura complexa gerenciável e permite que a equipe de desenvolvimento libere novos recursos e correções de forma segura e rápida. Sem ele, o sistema entraria em colapso sob seu próprio peso operacional.

Conclusão

A arquitetura delineada neste relatório apresenta um blueprint abrangente e robusto para a construção de uma plataforma de pagamentos multinacional na América Latina, utilizando exclusivamente os serviços serverless e PaaS do Microsoft Azure. Ao adotar uma abordagem orientada a eventos, fracamente acoplada e com estado gerenciado, a solução atinge os níveis necessários de escalabilidade, resiliência e manutenibilidade exigidos por uma aplicação financeira de missão crítica.

As principais decisões arquitetônicas e suas implicações estratégicas são:

  1. Computação Serverless com Azure Functions e Durable Functions: Libera as equipes de desenvolvimento para se concentrarem na lógica de negócio, enquanto o padrão Saga garante a integridade transacional em um ambiente distribuído.

  2. Estratégia de Dados em Camadas com Cosmos DB e Blob Storage: Otimiza o desempenho e o custo ao alinhar o serviço de armazenamento correto com os padrões de acesso aos dados, garantindo baixa latência global para transações e armazenamento econômico de longo prazo para arquivamento.

  3. Adaptabilidade Multinacional: A combinação do Padrão Strategy, Azure App Configuration e implantações regionais cria uma plataforma que pode se adaptar rapidamente às diversas e mutáveis regulamentações e requisitos de negócios de cada país.

  4. Segurança Zero-Trust e Conformidade com PCI-DSS: A utilização de Identidades Gerenciadas, Azure Key Vault e controles de rede rigorosos estabelece uma base de segurança forte, com um caminho claro para a conformidade regulatória.

  5. Governança de Custos via FinOps: A implementação de orçamentos, alertas e otimizações contínuas transforma o gerenciamento de custos de uma atividade reativa para uma disciplina proativa e cultural.

  6. Business Intelligence em Tempo Quase Real: O Azure Synapse Link e o Power BI DirectQuery capacitam a organização com insights de negócios ágeis e de autoatendimento, eliminando a latência dos processos de BI tradicionais.

  7. Excelência Operacional através de CI/CD: A automação completa do ciclo de vida da aplicação com o Azure DevOps é a espinha dorsal que garante a consistência, a confiabilidade e a agilidade necessárias para operar um sistema tão complexo em escala.

Em síntese, a arquitetura proposta não é apenas uma coleção de serviços do Azure, mas um sistema coeso onde cada componente é escolhido para cumprir um propósito específico, e suas interações criam propriedades emergentes de resiliência, segurança e eficiência.

Ao seguir este blueprint, uma organização pode construir uma plataforma de pagamentos de classe mundial, posicionada para o sucesso no dinâmico mercado latino-americano.


Referências citadas

  1. Serverless on Azure, acessado em outubro 21, 2025, https://azure.microsoft.com/en-us/solutions/serverless

  2. Introduction to Azure Serverless: A Beginner's Guide - Stackify, acessado em outubro 21, 2025, https://stackify.com/azure-serverless-guide/

  3. Serverless Integration Design Patterns with Azure | Programming | eBook - Packt, acessado em outubro 21, 2025, https://www.packtpub.com/en-us/product/serverless-integration-design-patterns-with-azure-9781788390835

  4. Durable Orchestrations - Azure Functions | Microsoft Learn, acessado em outubro 21, 2025, https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-orchestrations

  5. Azure-Samples/saga-orchestration-serverless: An ... - GitHub, acessado em outubro 21, 2025, https://github.com/Azure-Samples/saga-orchestration-serverless

  6. How to send messages to Azure Service Bus from Azure API Management - Microsoft Learn, acessado em outubro 21, 2025, https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-send-service-bus

  7. Introducing native Service Bus message publishing from Azure API Management, acessado em outubro 21, 2025, https://techcommunity.microsoft.com/blog/integrationsonazureblog/introducing-native-service-bus-message-publishing-from-azure-api-management/4462644

  8. Basic enterprise integration on Azure - Azure Architecture Center | Microsoft Learn, acessado em outubro 21, 2025, https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/enterprise-integration/basic-enterprise-integration

  9. Architecture Best Practices for Azure Functions - Microsoft Azure Well-Architected Framework, acessado em outubro 21, 2025, https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-functions

  10. Azure Cosmos DB - Gravity Engineering Services, acessado em outubro 21, 2025, https://www.gravityer.com/cloud/azure-cosmos-db

  11. Distribute Data Globally with Azure Cosmos DB | Microsoft Learn, acessado em outubro 21, 2025, https://learn.microsoft.com/en-us/azure/cosmos-db/distribute-data-globally

  12. Consistency level choices - Azure Cosmos DB | Microsoft Learn, acessado em outubro 21, 2025, https://learn.microsoft.com/en-us/azure/cosmos-db/consistency-levels

  13. High availability (Reliability) in Azure Cosmos DB for NoSQL, acessado em outubro 21, 2025, https://docs.azure.cn/en-us/reliability/reliability-cosmos-db-nosql