728x90
반응형

SSE + Kafka + Agent + Redis(선택) 조합은 "SAP ERP 연동을 위한 비동기 전표 처리 시스템"을 구축하는 데 매우 적합합니다.


✅ 아키텍처 개요 (전체 흐름)

[외부 백오피스 (Web)]
   └─ REST API 호출 (전표 처리 요청)
        ▼
[Agent API (Spring Boot)]
   ├─ 저장: Kafka에 전표 처리 이벤트 publish
   ├─ Redis (optional): 캐시 또는 일시 상태 저장
   └─ 응답: 202 Accepted + trackingId

[Kafka Broker]
   └─ 전표 처리 이벤트 Queue

[Agent Consumer (Spring Boot)]
   └─ Kafka에서 consume → SAP OData/SOAP 호출
   └─ 결과 수신 후 상태 저장(DB or Redis)

   └─ 처리 결과 → 백오피스에 전달 (SSE push)

[브라우저 SSE 연결]
   └─ /sse?ids=... 연결 유지 중
   └─ 처리 결과 오면 실시간 알림

[Optional] Redis
   └─ 상태 캐시 (e.g. tx 상태 빠르게 조회)

🧱 컴포넌트별 역할

구성 요소역할
Agent API 외부 요청 수신, Kafka publish, trackingId 발급
Kafka 전표 처리 요청을 비동기 이벤트로 큐잉
Agent Consumer Kafka 메시지 consume → SAP 호출 → 결과 처리
Redis (optional) 처리 상태 cache (e.g. polling 응답 빠르게), TTL 관리
SSE Controller 브라우저와 연결 유지하며 처리 결과 push
백오피스 SSE를 통해 상태 실시간 반영 (F5 없이)
 

🧠 Redis를 "쓸까 말까" 판단 기준

항목Redis 사용하는 경우사용하지 않아도 되는 경우
상태 응답 속도 상태 조회가 빈번하고 빠른 응답 원할 때 상태 조회가 드물고 DB 성능 충분할 때
polling fallback SSE 외에 polling도 지원할 때 SSE만으로 충분할 때
결과 TTL 관리 "전표 처리 후 10분간 상태 유지" 등 캐시 처리 결과를 영구 저장할 때 (DB만으로도 OK)
다중 노드 확장 Agent를 다중 인스턴스로 돌릴 때 상태 공유 단일 서버 구조일 때는 생략 가능
 
반응형

✅ 결론: Redis는 선택 사항이지만 polling + 고속 상태 응답을 고려하면 사용하는 것이 좋습니다.


📦 Kafka 메시지 예시 (전표 처리 요청)

{
  "trackingId": "tx-20240617-00123",
  "sapData": {
    "companyCode": "1000",
    "amount": 120000
  },
  "callbackType": "SSE"
}

🧭 처리 흐름 다이어그램

 [백오피스]
     │   POST /request
     ▼
 [Agent API] ───────────────┐
     │ produce to Kafka     │
     ▼                      │
 [Kafka Broker]             │
     ▼                      ▼
 [Agent Consumer] ──▶ SAP 호출
     │
     ├─ 상태 저장 (Redis/DB)
     └─ SSE Push or Callback

 [브라우저] ←───────┘

🔐 인증/보안 설계

항목권장 방식

 

외부 요청 → Agent JWT 또는 HMAC 서명
Kafka 메시지 내부망 또는 SASL 인증
SAP 호출 OAuth2.0 Client Credentials
SSE 로그인된 사용자만 /sse 허용 (토큰 or 세션 기반)
 

✅ 아키텍처 선택 요약

항목사용 여부설명
Kafka ✅ 필수 Agent ↔ SAP 비동기 처리용
SSE ✅ 필수 사용자 브라우저 실시간 반영
Redis ⚙️ 선택 빠른 상태 응답용 (polling 대응, TTL용)
DB ✅ 필수 트래킹, 로그, 재처리 이력 관리용
WebSocket ❌ 생략 SSE로 충분함
REST Callback ⛔ 대체 가능 SSE 사용 시 별도 callback 불필요
 

💡 확장 고려 시

  • Kafka → Kafka Streams or Debezium 기반 audit trail 확장 가능
  • SSE + Webhook 병행 지원 구조도 가능 (B2B/B2C 이중 대응)
  • Redis 없애고 DB polling만으로도 충분한 경우 존재 (단 소규모)
728x90
반응형

'IT' 카테고리의 다른 글

EAI 시스템에서 동적 배포(Dynamic Deployment)  (0) 2025.06.18
Server Stub이란?  (0) 2025.06.16
Spring Boot에서 OpenAPI 기반 서버 스텁(Server Stub) 생성  (2) 2025.06.16
OpenAPI란?  (0) 2025.06.16
HTTP/1.1과 HTTP/2 의 차이  (0) 2025.05.19

+ Recent posts