토스의 ModernFEP(대외연계시스템)

____·2024년 8월 12일
0
post-thumbnail

참고자료
https://www.youtube.com/watch?v=eS9tukmYBLI

  • 위 자료를 그대로 정리한 글 입니다.

필요한 배경 지식

[은행시스템 구조]

[FEP(Front-end Processor)]
==대외연계시스템

[FEP의 핵심업무]

  • 대외기관과 메세지를 주고받는것.

일반적으로 TCP프로토콜을 사용한다.

오랫동안 금융권에서 사용되었고 단점이 있다.


기존 FEP의 단점

  • 생산성

모니터링/로깅/배포등의 툴들과의 연동이 안된다.

  • 안정성

HTTP를 사용은 할 수 있지만 PATH를 여러개 쓸수없다.

Blocking I/O만 가능하다

FEP의 인스턴스 수가 제한적이기때문에 하나의 인스턴스가 여러 업무를 함 -> 장애 상황이 공유된다.

  • 유지보수성

간단 요약 정리

TOSS에서는 블로킹I/O방식의 기존 FEP솔루션을 자사에 맞게 NonBLockingI/O방식의 ModernFEP를 Kotlin을 활용해서 자체 구현했고 이 과정을 정리/발표하고 있음.

ModernFEP는 토스자체적으로 지은 명칭이다.

ModernFEP를 도입한 구조

1차

ModernFEP는

대외연계측의 TCP통신에서는 Netty를

Service와 FEP연계 측의 HTTP통신에서는 SpringWebFlux와WebClient를 사용.

NonBlockingI/O가 목적이었기떄문

ModernFEP 도입한 구조

2차

이후 Redis서버를 사용해 (여러FEP + TCP)특성으로 발생할수있는 응답누락.. 을 해결. (추가 연구 필요)

대외업무연계당 공통 추상화FEP클래스 를 새로구현함으로써 각각의 세부사항을 쉽게 변경한다.

[요약정리 끝~!]

전체 내용이 궁금하신 분은 영상 참고하세요.

👉🏻 새로운은행을위한Modern대외연계시스템구축기


전문 통신에 대한 과정 정리

영상 초입에 나오는 전문 통신 처리 과정에 대한 정리입니다.

전문 처리 과정

1

Fixed Length Format (고정길이 포맷)주로 사용.

대외업무에서는 전문포맷을 전문 설계서에 명세해둔다.

2

첫번째 항목은 크기가 4byte라서 8개의 16진법 데이터를 써주면 된다.

각각의 정보를 Charset에 맞게 해석

전문 표현 예시.

다른 두개의 전문 비교
공통정보부는 동일한 것을 알수있다.

3

이제 코드레벨로 넘어가서 전문을 표현해준다 (Kotlin사용)

먼저 어노테이션으로 각각의 명세를 표현

TelegramInterface를 구현해서 공통정보부 표현(공통헤더인듯)

이제 공통정보부와 데이터부를 함께 표현하는 완전한 전문을 표현

공통정보부를 상속해서 필드를 다 가질수있게 표현

전문명을 써줌

TelegramClass 어노테이션을 붙여줌

4

이제 전문을 읽고 해석하는 단계

각각 Charset에 맞게 Encode한 값을 모아준다.

5

Decode

이름은 비슷하지만, Java Reflection과는 다른 라이브러리.

0개의 댓글