IT 개발

[금융IT] 금융시스템 책임자 승인 프로세스 정리 및 오류해결.

썬프로 2024. 1. 11. 01:01
반응형

▶ 업무일정 : 2024.01.02~2024.01.10

▶ 문제상황
고객사인 삼O자산운용에서 업무 처리 후 책임자 승인을 요청 -> 책임자 pc에서 업무담당자의 화면 캡처 이미지가 정상적으로 보이지 않는 문제가 발생 -> 그러나 정상적으로 보이는 경우도 있고, 안 보이는 경우도 있어서, 상황을 특정하기가 어려움.

▶ 책임자 승인 프로세스 정리.
당사의 금융시스템의 책임자 승인 로직은, onTimer를 이용한 TCP방식의 client-server 구조로 설계 되어 있음.

1. 업무담당자의 책임자 승인 요청 과정.
1-1. 업무담당자 클라이언트에서 서버에 처리되는 거래(ex, 매수신청)가 책임자 승인을 해야하는 건인지 확인을 요청.
1-2. 서버는 책임자 승인 요건 DB를 조회하여, 해당 거래가 책임자 승인 대상인지 확인하여, 승인 대상이라면 업무담당자의 책임자 리스트를 같이 조회하여 응답.
1-3. 클라이언트에서는 콜백으로 책임자승인 요청 창을 띄워, 책임자를 선택하여 서버에 요청을 보냄.(이때 책임자 승인 요청 화면 캡처 이미지도 같이 서버에 보내 저장하게 됨.)
1-4. 서버는 클라이언트에서 넘어온 정보를 바탕으로 책임자 승인 내역 DB에 '승인요청상태'의 data row 를 추가함.

2. 책임자의 책임자 승인 과정.
2-1. 책임자 클라이언트에서 onTimer가 돌며, 10초 간격으로 책임자 승인 대상 건이 있는지 서버에 조회 요청.
2-2. 이때 책임자 승인 내역 DB에 '승인요청상태'의 data가 있다면, 클라이언트 콜백으로 책임자승인 응답 창을 띄움.
2-3. 책임자는 서버에 저장된 이미지를 로컬 PC경로에 다운로드 하여, 이미지를 확인한 후에 서버에 승인 요청을 보냄.
2-4. 서버에서는 책임자 승인 내역 DB에 저장된 row 상태를 '승인/반려' 상태로 update함.

3. 업무담당자의 책임자 승인 확인 과정.
3-1. 업무담당자 클라이언트에서 onTimer가 돌며, 책임자 승인이 완료되었는지 서버로 확인 요청.
3-2. 2번 과정이 마무리되었다면, 최종적으로 서버에 '처리완료' 상태로 update를 진행하며, 책임자 승인과정은 마무리됨.

▶ 의심 포인트
1. 시스템 처리 속도 차이 의심 : 업무담당자 PC에서 서버에 이미지를 업로드할 때 비동기(async, 앞선 처리를 기다리지 않고, 병렬로 처리되는 것.) 방식으로 처리되어, 업무담당자의 시스템과 책임자의 시스템이 시간차이로 인해 책임자 PC에서 서버에서 이미지를 다운로드할 당시에, 서버에 이미지가 업로드가 완료되지 않아 정상적으로 보이지 않을 수도 있지 않을까?
2. 서버에 이미지 파일의 용량 문제 의심 : 저장된 이미지 별로 용량 차이가 커서, 용량이 큰 파일을 로딩해오지 못하는 현상이 있지 않을까?
3. 고객사 내부 보안 문제 의심 : 일전에 같은 고객사에서 통장발급기 포트가 내부적인 보안 프로그램에 의해 차단되어 안 되는 현상이 있었다. 혹시 보안프로그램이 특정 로컬 PC 폴더에 시스템의 권한 취득 행위를 차단하고 있지 않을까? 그러면 됐다 안됐다 하는 게 아니고 다 안 돼야 되긴 할 텐데... 의심은 드나 가능성이 적다.

▶ 해결
고객사와 동일한 운영환경에서 테스트를 진행하던 중, 시스템에서 로컬 폴더 경로의 권한 취득을 제대로 하지 못하는 현상을 발견. 해당건을 집중적으로 소스를 분석해 보니, 로직에 오류가 존재하였음.

업무담당자 pc에서 책임자 승인 화면 캡처를 뜨고 해당 파일을 서버에 업로드하기 위해서는, 캡처이미지가 저장되어 있는 로컬 폴더 경로에 권한을 취득해야 함. 권한취득 요청은 정상적으로 시도되었으나, 소스 오류로 추가적인 권한취득 요청을 즉시 보내고 있었음. 같은 트랜잭션에서 일어나는 업무처리 특성상 로컬 경로에 권한취득은 가장 최근에 일어난 요청에 따라 처리가 되는데,
'1차 권한 취득 요청' -> 업무 담당자 pc의 책임자 승인 요청 프로세스 -> '2차 권한 취득 요청' 
이 과정이 한 트랙잭션으로 일어나다 보니, 중간단계의 승인 요청 프로세스에서 이미지를 서버에 정상적으로 업로드하지 못하는 현상이 발생하였음.

따라서 2차 권한 취득을 요청하는 원인을 파악하여, 파일 업로드가 완료되었을 경우, 승인 요청 프로세스가 진행되도록 수정 조치 하여 해결하였음.

▶ 마무리
이런 책임자 승인 프로세스의 경우에는 지속적인 양방향 통신 구조인, 웹소켓 형태로 구현이 돼있었다면 어땠을까 고민을 해봄. 책임자 승인 서비스만을 위한 웹소켓 특정 port로 각각의 클라이언트가 서버와 연결 맺어두고, 서로의 상황에 따라 서버가 컨트롤할 수 있는 구조였다면, 이렇게 onTimer형태로 TCP 통신 방식인 서버 클라이언트로 복잡하게 구현하지 않아도 되었고, 양방향 통신 구조로 유기적인 승인 프로세스가 이뤄졌을 것이라 생각이 됨.

반응형

'IT 개발' 카테고리의 다른 글

[Java] 날짜, 시간 함수 알아보기 - Date, Calendar  (0) 2023.01.11
[Spring] 트랜잭션 AOP 기능 정리  (0) 2023.01.07
[Spring] logback, 로그백  (0) 2022.07.29
[Web] API 란?  (0) 2021.12.26
[WEB] 웹(Web) 이란?  (0) 2021.12.21