IT
EAI 시스템에서 동적 배포(Dynamic Deployment)
마시멜로를찾아서
2025. 6. 18. 16:46
728x90
반응형
✅ EAI 동적 배포를 위한 추천 아키텍처
💡 핵심 개념
“하나의 거대한 EAI 플랫폼”이 아닌, **작은 모듈(EAI Unit)**들이 상황에 따라 독립적으로 배포/확장/재시작/격리될 수 있어야 함.
🧱 추천 아키텍처 구성도
[External Systems]
│
▼
[API Gateway / Ingress]
│
▼
[Routing Service (Dynamic Dispatcher)]
│ ┌──────────────────────────────┐
│ │ EAI Unit 1 (SAP Adapter) │ ◀─┐
│ │ EAI Unit 2 (Oracle Adapter) │ ◀─┼──▶ Pod 형태로 개별 배포
│ │ EAI Unit 3 (Webhook Engine) │ ◀─┘
▼
[Kafka / Redis / SQS] (Event Backbone)
│
▼
[Logging / Retry Queue / Dead-letter]
│
▼
[Monitoring + Dynamic Orchestrator (optional)]
🧩 구성 요소 설명
컴포넌트 | 설명 |
API Gateway | 외부 요청의 인증, 버전 분리, 트래픽 제어 |
Routing Service | 요청 내용을 보고 적절한 EAI Unit으로 라우팅 |
EAI Unit (Adapter) | SAP, Oracle, HTTP 등 시스템별 연동 로직 담당. 독립 배포 가능 |
Kafka/Redis | 동기/비동기 메시지 처리용 중앙 백본 |
DLQ / Retry Manager | 장애 시 재시도, 실패 로깅 등 처리 |
Orchestrator | (옵션) 단일 서비스에 모든 연동 기능을 배치하지 않고 단계별 기능 정의 + 동적 호출 |
⚙️ 기술 스택 예시 (Spring 기반)
기능 | 기술 |
EAI Unit | Spring Boot (REST, WebFlux), OpenAPI 기반 |
동적 라우팅 | Spring Cloud Gateway, Istio, Envoy |
동적 배포 | Kubernetes + Helm + ArgoCD |
메시징 | Kafka, Redis Streams |
모듈 정의 | OpenAPI spec 기반 각 EAI 모듈 생성 |
구성 관리 | Consul, Spring Config Server |
🌟 동적 배포 전략 (실제 적용 방식)
전략예시
모듈별 JAR 또는 컨테이너화 | eai-sap-adapter.jar, eai-fx-adapter.jar 등으로 나눔 |
Helm 또는 GitOps로 배포 | 새 연동 모듈 추가 시 eai-hrms-adapter만 배포 가능 |
EAI Dispatcher의 동적 등록 구조 | 새 모듈이 뜨면 /register-adapter 호출로 등록 |
CI/CD 연동 | GitHub Action → Docker → K8s Helm Chart 배포 자동화 |
각 Adapter는 Stateless + Retry 내장 | 재처리나 지연 전송은 Kafka 또는 Redis Queue로 |
✅ 장점 요약
항목설명
유연성 | 모듈 단위 배포 가능 (1개 장애 시 전체 영향 없음) |
확장성 | EAI 모듈 개수 제한 없이 동적 등록 |
장애 격리 | 장애 발생 시 해당 adapter만 교체/확장 가능 |
운영 편의성 | API / 메타 기반 라우팅 + 로깅/모니터링 통합 |
🚨 유의할 점
- 이벤트 백본(Kafka/Redis)은 반드시 HA로 구성
- EAI Unit은 Stateless 구조로 설계 (Session 없음)
- Config Server 기반으로 동적 환경변수 주입 고려
- API 보안 정책 (JWT/OAuth) 공통 필터로 처리
728x90
반응형