아키텍처
EAI 아키텍처는 인터페이스 처리방식에 따라 온라인 아키텍처
와 배치 아키텍처
로 구분되며,
로깅 시 필요한 로깅 아키텍처
및 L4 Switch역할을 하는 폴링 아키텍처
, 그리고 SAF처리 아키텍처
로 구성되어 있다.
온라인 아키텍처

APtoAP 등의 일반 거래 인터페이스가 실행되는 환경으로, 게이트웨이 컴포넌트
와 인터페이스 컴포넌트
로 구성된다.
게이트웨이 컴포넌트

☑ 통신프로토콜 처리
통신 프로토콜 처리를 위해 커넥션 정보와 커넥션그룹 정보를 관리한다.
커넥션 정보는 연결대상의 접속정보 및 통신 처리를 위한 상세 속성이고, 커넥션그룹은 동일 인터페이스를 여러 커넥션이 처리할때, 각 커넥션의 부하분산 정책을 관리한다.
커넥션정보의 상세한 설정은 커넥션 설정을 참조한다.
☑ 전문 전송
연계대상으로부터 수신한 전문을 인터페이스 컴포넌트
로 전달하거나, 인터페이스 컴포넌트
에서 수신한 전문을 연계대상으로 송신한다.
이 때 캐릭터셋 인코딩/디코딩 처리 및 전체전문 암복호화 처리를 수행한다.
인터페이스 컴포넌트

인터페이스 컴포넌트는 인터페이스 처리를 담당하고, 이벤트핸들러
와 처리플로우
로 구성된다.
☑ 이벤트핸들러
이벤트핸들러는 게이트웨이 컴포넌트
에서 비동기 방식으로 전달된 전문을 해석하여, 인터페이스ID와 요청/응답을 구분한다.
또한 인터페이스 제어 상태를 확인하고, 처리플로우로 전달한다.
☑ 처리플로우
처리플로우는 전문변환 등 인터페이스 처리를 수행한다.
요청 처리를 담당하는 요청플로우
와 응답 처리를 담당하는 응답플로우
가 있고, 인터페이스별로 정의한다.
각각의 플로우는 다수의 라우터로 구성된다.
- 플로우
Apache Camel의 라우터 그룹을 의미한다. 각각의 단위 기능인 라우터를 순차적으로 호출하여 온라인 인터페이스를 처리한다.
BXI에서는 전문변환 등 인터페이스 처리시 필요한 기본 플로우를 제공한다. 특화된 인터페이스 요건을 처리하기 위해 플로우를 개발하여 적용할 수 있다.
- 라우터
Apache Camel의 Route를 의미하고, 플로우에서 처리되는 단위 기능이다.
예를 들어, 전문을 맵으로 변환하는 Unmarshal은 하나의 라우터에서 제공하는 기능이다. BXI는 인터페이스 거래 처리에서 일반적으로 사용되는 라우터를 제공한다.
제공된 라우터의 기능을 벗어나는 추가적인 기능이 필요하다면, 신규 라우터를 개발하여 적용할 수 있다. 개발방법은 Customizing을 참조한다.
배치 아키텍처

배치 인터페이스 처리 아키텍처는 DBtoDB
, FiletoFile
등의 배치 인터페이스가 실행되는 환경으로,
배치작업 스케줄 컴포넌트
와 배치작업 수행 컴포넌트
로 구성된다.
배치작업 스케줄 컴포넌트
등록된 배치 인터페이스의 작업 스케줄을 관리하는 기능을 담당한다. 배치 인터페이스에 등록된 스케줄을 이용하여 인터페이스를 실행한다.
스케줄 종류는 심플트리거와 CRON트리거가 있다. 심플트리거는 N초, N분, N시간 단위로 작동하는 방식이며, CRON트리거는 표현식에 의해 정해진 시간에 작동하는 방식이다.
배치작업 수행 컴포넌트
배치 인터페이스의 처리를 담당하며, 인터페이스 유형에 따라 아래의 기능이 사용된다.
☑ File처리(FTP)
File을 사용하는 인터페이스 유형에서 FTP방식으로 파일을 송수신 처리한다. FTP접속 및 FTP GET/PUT기능을 활용한 파일 전송을 수행한다.
☑ File처리(Agent)
File to File 인터페이스 유형에서 File Agent Event Executor는 각 업무 시스템에 설치된 File Agent를 사용하여 파일을 전송한다.
File Agent Event Executor는 File Agent에 전송을 지시하는 이벤트를 전달하고, File Agent는 이벤트를 전달받아 시스템간 파일을 송수신 처리한다.
☑ DB 처리
DB를 사용하는 인터페이스 유형에서 데이터를 송수신한다. 등록된 DataSource정보를 사용해 DB에 접속하고, 정의된 SQL을 실행한다.
SAF 아키텍처

SAF 거래는 송신시스템으로부터 메시지를 받아 SAF 큐에 저장하는 저장처리와, SAF 큐에 저장된 메시지를 받아 수신시스템에 전송하는 두 가지 부분으로 나누어져 있다.
상세한 아키텍처는 SAF 아키텍처을 참조한다.
로깅 아키텍처
BXI의 로그 처리 방식은 온라인 인스턴스가 직접 로깅하는 로컬(L)
방식과
별도의 로깅 아키텍처를 활용한 리모트(R)
방식으로 구분된다.
로컬(L)방식
인스턴스가 온라인 인터페이스를 처리하면서 직접 DB/파일에 로그를 적재하는 방식이다. 온라인 거래량이 많지 않을 경우 사용한다.
리모트(R)방식

인터페이스 처리시 발생하는 로그 데이터를 비동기로 로깅한다. 온라인 거래량이 많은 경우 인터페이스 처리 성능 향상을 위해 사용된다.
비동기 로깅 아키텍처에서 로그 데이터는 Apache Kafka에 비동기로 전달되고, 리시버 컴포넌트, 로깅 컴포넌트로 구성된 별도의 로깅 인스턴스를 통해 DB/File에 기록된다.
☑ Apache Kafka
대용량의 실시간 로그처리에 특화된 아키텍처를 제공하는 오픈소스 소프트웨어이다.
☑ 로깅 인스턴스
로깅 인스턴스는 아래의 컴포넌트로 구성된다.
- 리시버 컴포넌트: 리시버 컴포넌트는 Kafka에 적재된 로그를 Kafka 컨슈머를 통해 읽어와 로깅 컴포넌트에 전달한다.
- 로깅 컴포넌트: 로깅 컴포넌트는 DB나 파일에 로그정보를 적재하는 역할을 담당한다. 로그 설정 및 로그관리는 로그관리를 참조한다.
폴링 아키텍처
BXI에서는 시스템과의 연계 시에 L4 Switch를 사용하지 않는 경우, L4 Switch의 Fail-Over 기능을 대신할 수 있는 기능을 제공한다.
주기적인 메시지 폴링 방식을 통해 이를 지원하며, 인터페이스 처리를 수행하는 인스턴스 외에 별도의 시스템 폴링 인스턴스가 필요하다. 인터페이스 처리를 수행하는 온라인 인스턴스는 시스템 폴링 인스턴스의 시스템 상태정보를 이용하여 거래를 처리한다.
시스템 폴링 인스턴스

HTTP
로 시스템과 주기적으로 메시지를 주고 받으며 상태를 확인한다.
상태 정보는 메모리 상에 관리되며, 별도의 DB동기화 스레드가 시스템 폴링 상태를 DB에 동기화한다.
온라인 인스턴스

주기적으로 DB의 시스템 폴링 상태 정보를 메모리에 동기화하고, 이 상태 정보를 사용하여 정상적으로 거래 처리가 가능하다고 판단되는 시스템으로 거래를 요청한다.
시스템 폴링 인스턴스는 노드별로 하나만 등록할 수 있으며, 하나의 시스템 폴링 인스턴스 정보로 여러 노드에서 사용할 수 있다. 폴링 아키텍처를 사용하기 위한 자세한 설정은 시스템폴링을 참조한다.