CarneiroTech/Content/Cases/pt/sap-integration-healthcare.md

5.6 KiB

title slug summary client industry timeline role image tags featured order date seo_title seo_description seo_keywords
Sistema de Integração SAP Healthcare sap-integration-healthcare Integração bidirecional processando 100k+ transações/dia com 99.9% uptime Confidencial - Multinacional Healthcare Healthcare 6 meses Arquiteto de Integração
SAP
C#
.NET
Integrações
Enterprise
Healthcare
true 1 2023-06-15 Case: Integração SAP Healthcare - 100k Transações/Dia Como arquitetamos sistema de integração SAP processando 100k+ transações diárias com 99.9% uptime para empresa healthcare. integração SAP, C#, .NET, SAP Connector, enterprise integration, healthcare

Overview

Cliente: Multinacional Healthcare (confidencial) Porte: 100.000+ funcionários Projeto: Integração de benefícios Timeline: 6 meses Meu Role: Arquiteto de Integração


Desafio

O cliente tinha sistema interno de gestão de benefícios que precisava sincronizar com SAP ECC para processar folha de pagamento.

Dores principais:

  • Processo manual sujeito a erros
  • 3-5 dias de delay entre sistemas
  • 100k funcionários esperando processamento
  • Picos de carga (final de mês)

Constraints:

  • Budget limitado (sem SAP BTP)
  • Time SAP interno pequeno (2 desenvolvedores)
  • Prazo apertado (6 meses go-live)
  • Sistema legado .NET Framework 4.5

Solução

Arquitetura de integração bidirecional:

[Sistema Interno] ←→ [Queue] ←→ [SAP Connector] ←→ [SAP ECC]
       ↓                              ↓
  [MongoDB Logs]              [ABAP Z_BENEFITS]

Componentes:

  • .NET Service com SAP Connector (NCo 3.0)
  • ABAP transaction customizada (Z_BENEFITS)
  • Queue system (RabbitMQ) para retry logic
  • MongoDB para auditoria e troubleshooting
  • Scheduler (Hangfire) para batch processing

Fluxo:

  1. Sistema gera mudanças (new hire, alterações)
  2. Service processa batch (500 registros/vez)
  3. SAP Connector chama Z_BENEFITS via RFC
  4. SAP retorna status (sucesso/erro)
  5. Retry automático se falha (max 3x)
  6. Logs MongoDB para troubleshooting

Resultado

Métricas:

  • 100k+ transações/dia processadas
  • 99.9% uptime
  • Redução de 5 dias → 4 horas (delay)
  • 80% redução tempo processamento
  • Zero erros manuais (vs 2-3% antes)

Benefícios:

  • Funcionários recebem benefícios on-time
  • Time RH economiza 40h/mês (trabalho manual)
  • Auditoria completa (compliance)
  • Escalável (crescimento 30% ano sem refactor)

Tech Stack

C# .NET Framework 4.5 SAP NCo 3.0 RabbitMQ MongoDB Hangfire Docker SAP ECC ABAP RFC


Decisões & Motivação

💡 Decisão 1: SAP Connector vs SAP BTP

Opções avaliadas:

  • SAP BTP (eventos, APIs modernas, cloud)
  • SAP Connector (RFC direto, on-premise)

Escolhemos: SAP Connector

Motivação:

  • Cliente tinha SAP ECC on-premise (não S/4)
  • Budget não permitia licença BTP
  • Time SAP confortável com ABAP/RFC
  • Necessidades atendidas com RFC (não precisava event-driven real-time)

Trade-off aceito:

  • Menos "moderno" que BTP, mas 100% funcional
  • Custo R$ 0 adicional vs R$ 150k+/ano BTP
  • Delivery 2 meses mais rápido (sem learning curve BTP)

💡 Decisão 2: Queue System vs Calls Diretos

Opções avaliadas:

  • Chamadas síncronas diretas (mais simples)
  • Queue com retry (mais complexo)

Escolhemos: Queue + Retry

Motivação:

  • SAP ocasionalmente indisponível (manutenção)
  • Picos de carga (final do mês = 200k reqs)
  • Garantir zero perda de dados
  • Resiliência > simplicidade (ambiente crítico)

Implementação:

  • RabbitMQ com dead-letter queue
  • Retry exponencial (1min, 5min, 15min)
  • Alertas se 3 falhas consecutivas

Resultado:

  • Zero perda dados em 2 anos produção
  • Time RH não precisa "ficar de olho"

💡 Decisão 3: ABAP Customizado vs Standard

Opções avaliadas:

  • BAPIs standard SAP (zero código ABAP)
  • Transaction customizada (Z_BENEFITS)

Escolhemos: Transaction customizada

Motivação:

  • BAPIs standard não tinham validações específicas do negócio
  • Cliente queria lógica centralizada no SAP (single source of truth)
  • Permitiu validações complexas (elegibilidade, dependentes, limites)

Trade-off:

  • Requer manutenção ABAP (time SAP interno)
  • Mas: Cliente preferiu vs lógica dupla (risco dessincronia)

Alternativas NÃO Escolhidas

Webhook/Callback (Event-Driven):

  • Cliente não tinha infraestrutura expor APIs
  • Sistema interno atrás de firewall
  • Polling batch funciona bem para o caso

Microserviços Kubernetes:

  • Overkill para integração única
  • Time não tinha expertise K8s
  • Docker simples suficiente

Real-time Sync (<1min):

  • Negócio não precisa (batch diário ok)
  • Custo infra aumentaria 3x
  • 4h delay é aceitável para folha

Aprendizados

O que funcionou muito bem:

  • Envolver time SAP desde dia 1 (buy-in)
  • MongoDB para logs (troubleshooting 10x mais rápido)
  • Retry logic salvou inúmeras vezes

🔄 O que faria diferente:

  • Adicionar health check endpoint mais cedo
  • Dashboard de monitoramento desde início (adicionamos depois)

📚 Lições para próximos projetos:

  • Cliente "budget limitado" ≠ "solução limitada" - criatividade resolve
  • Documentar TODAS decisões arquiteturais (team turnover)
  • Simplicidade vence complexidade quando ambas funcionam (KISS)

Precisa de Algo Similar?

Integrações SAP complexas, sistemas legados, ou arquitetura de alta disponibilidade?

Vamos conversar sobre seu desafio →