금융기업의 전산시스템은 어떤 구조로 이루어져 있을까?
1. 금융 기업의 전산시스템 구조
2. 소프트웨어적 특징
3. 금융권의 JAVA
1. 전산시스템 구조
증권사나 은행의 업무에 필요한 전산시스템은 다음과 같은 구조로 이루어져있습니다.
우선 은행이나 증권사 전산시스템의 대표적인 구성 요소는 계정계, 채널계, 정보계 로 이루어져있습니다.
1) 계정계 : 고객 등록, 대출한도산출, 송금 등 실제 금융 로직 개발 및 관리
계정계가 증권사 업무의 중심이 됩니다. 처리하는 고객의 계좌, 계정이 기본적인 계좌 정보를 포함해 통장별 거래 기록을 포함하면 수백억건의 데이터가 존재합니다. 계정계 데이터는 돈과 거래기록이기 때문에 이중 삼중 백업을 통해 보수적으로 운영됩니다.
구성은 마스터 테이블인 거대한 원장들과 다양한 업무처리를 보장하는 정형화된 트랜잭션들이 있습니다. 원장들에 트랙잭션이 집중되어있는 구조이기 때문에 안정적으로 트랜잭션을 처리하기 위한 미들웨어가 발달해 있습니다.
초기에는 IBM Mainframe을 사용했으며 2000년대 중반 차세대 프로젝트를 통해 많은 은행들이 Unix로 이전하였습니다. 과거에는 프로그래밍 언어로 COBOL을 사용했지만, 차세대를 통해 대부분 C로 옮겨갔습니다. 메인프레임에서 주로 코볼로 애플리케이션을 개발했고, 유닉스로 옮겨오면서 그 애플리케이션을 그대로 다운사이징 했기 때문입니다. Java가 최초로 도입된것은 2013년 (전북은행)일 정도로 굉장히 보수적으로 운용됩니다.
계정계 DBMS는 주로 오라클이 사용됩니다. 비싼 가격과 유지보수 비용이 단점이지만 품질 측면에선 대체 가능한 대안이 없습니다. 계정계를 제외하곤 오픈소스 DBMS가 사용되기도 합니다.
2) 채널계 : 스마트뱅킹, 인터넷뱅킹, 외부정보연계, 은행원 쓰는 소프트웨어 등
HTS(Home Trading System), MTS(Mobile Trading System)와 같이 고객 채널이 있고, 통합단말과 같이 사내 채널이 있습니다.
3) 정보계 : 데이터웨어하우스, 경영정보
정보계는 거래활동 및 성과를 분석하고 측정하기 위한 목적으로 구축되었습니다.
기본적으로 통계처리 기법을 많이 사용하기 때문에 대량 데이터 결합조회(JOIN), 배치처리, 대량 데이터 전송 기술 등을 많이 사용합니다. 최근에는 정보계에 빅데이터 기술의 도입이 많이 검토되고 있습니다.
2. 소프트웨어적 특징
트랜잭션이 돈 처리를 의미하는 것이기 때문에 오류에 민감합니다. 따라서 거래 쪽은 빠른 개발이나 배포보다 안정적인 개발과 배포를 중요하게 생각합니다. 전체적으로 IT문화도 그렇다고 볼 수 있습니다.
인터넷 뱅킹이 24시간*365일로 운영되긴 하지만 대부분 주간에는 금융거래 중심의 트랜잭션들이 일어나고 야간에는 대형 배치처리 시스템간 데이터 전송이 많이 일어납니다. 대형 배치처리는 매일 이루어지는 정산 작업과 같은 것을 뜻하며, 업무에 직접적인 상관이 없고 일괄처리를 하기 때문에 야간에 처리하게 됩니다.
그리고 차세대를 구축하는 시기에 아키텍처 패턴으로 SOA가 등장하여 많은 시스템에 적용되기도 했습니다.
데이터 작업이 많고 처리 속도가 중요한 편이라서 서버작업에는 Oracle과 Pro*C가 많이 사용됩니다. 최근에는 계정계를 제외하고는 Java가 많이 도입되어 있습니다.
* Pro*C (프로씨)?
* Pro*C (프로씨)
- C를 이용해서 오라클 데이터베이스를 사용하기 위한 언어
- SQL는 절차형 언어가 아니기 때문에 오라클의 PL/SQL이라는 절차형 언어가 제공되었는데, 이는 오라클 내부에서만 작동하는 단점이 있다. 이를 해결하기 위해 대부분의 DBMS는 외부 C 프로그램에서 DB관련 로직을 짤 수 있게 선행 컴파일러를 제공한다. 오라클에서 제공해주는 선행 컴파일러를 프로씨라고 한다.
- 프로씨만으론 실행파일을 만들어낼 수 없음(그래서 ‘선행’ 컴파일러라고 하는 것), pc파일이 컴파일 되어 c파일을 만들어 냄.
3. 금융권의 JAVA
은행 시스템에서도 스크립트 기반의 언어가 사용되는 곳이 있습니다. 그러나 시스템이나 구현해야 할 비즈니스 특성에 따라 언어가 달라집니다.
C나 COBOL은 시스템 언어라 CPU 성능을 100%까지 남김없이 끌어 내기에 좋은 언어입니다. 그러나 이식성이 떨어지므로 남은 시스템을 재활용하거나 서로 다른 기종의 컴퓨터를 하나의 시스템으로 운영해야 할 때 꽤 불편합니다. 100여 대에 가까운 서버, 무거운 Batch처리나 가벼운 조회 트랜잭션, 시스템의 다양한 관리 상태에 상관없이 운영해야 하는 Enterprise 환경에서는 Java Spring*만한 대안이 없습니다.
자바는 JVM상에서 바이트 코드(Byte Code) 형태로 실행되는 일종의 인터프리터 언어입니다. C, COBOL*과 같이 완전히 실행가능한 파일로 컴파일 되지 않기 때문에 JVM이라는 특수한 환경에서 실행됩니다. 운영체제와 상관없이 JVM에 의해 실행되기 때문에 이식성과 범용성이라는 뛰어난 장점을 지닌 반면, 고가용성과 처리 성능 이슈라는 단점을 동시에 갖고 있습니다.
(출처: http://blog.daum.net/hj21cv/33)
스크립트 언어? COBOL? Java Spring?
* 스크립트 언어
기존에 이미 있는 소프트웨어(어플리케이션)을 제어하기 위한 용도
인터프리터 형식, 컴파일 언어와 달리 한줄한줄 읽어 바로 실행되는 형식
* COBOL
객체 지향, 명령형 언어. 메인프레임 컴퓨터(통계 데이터나 금융 관련 전산업무, 전사적 자원 관리와 같이 복잡한 작업 처리)의 레거시 응용 프로그램(legacy(유산)이라고 하는 이유는 과거의 체계가 현재의 체계에 영향을 끼치기 때문이다. 더욱 효율적인 소스 코드가 개발되어도 기존의 소스코드를 모두 삭제하면 기존 프로그램이 마비되는 사태가 일어날 수 있음)들에 사용됨. 대용량 일괄 처리 및 트랜잭션 처리와 같은 작업에 쓰이고 대체되는 추세임.
*Java Spring
Spring은 자바의 프레임워크 중 가장 널리 사용되는 프레임워크이다.
스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다.
제어반전(IoC: Inversion of Control) 컨테이너는 스프링의 가장 중요하고 핵심적인 기능으로서 자바의반영 (reflection)을 이용해서 객체의 생명주기를 관리하고 의존성 주입(Dependency Injection)을 통해 각 계층이나 서비스들간의 의존성을 맞춰준다. 이러한 기능들은 주로 환경설정을 담당하는 XML 파일에 의해 설정되고 수행된다.
그 외 특징 DI, AOP, Spring MVC은 일단 생략
스프링은 특정 시간대에 실행하거나 대용량의 자료를 처리하는데 쓰이는 일괄 처리(Batch Processing)을 지원하는 배치 프레임워크를 제공한다.
'study > IT' 카테고리의 다른 글
OOP/JAVA 주요 개념정리 (0) | 2020.04.23 |
---|---|
금융 IT 동향/핀테크/클라우드/AI (0) | 2020.04.23 |
가상화 기반 네트워크 기술 SDN, NFV 이란 (0) | 2020.04.08 |