Home 금융 IT 시스템에 대한 이해
Post
Cancel

금융 IT 시스템에 대한 이해

금융권 IT회사에서 일하기 시작한지 6개월정도가 지났지만, 작지 않은 규모의 서비스를 운영함에 있어서 배경지식이 부족하여 겪는 불편함을 항상 느끼고 있습니다. 그래서 앞으로 금융IT분야에서 개발자로 일하기 위해 필요한 지식을 차근차근 공부해나가려고 합니다.

금융계 IT 시스템의 도입

  • 목적
    • 금융거래의 편의성 제고
    • 금융정보의 효율적 처리
  • 효과
    • 인터넷뱅킹, 스마트폰뱅킹 등 -> 금융정보의 편의성 제고
    • 업무가 신속, 정확하게 처리 -> 효율성 제고
  • 부작용
    • IT시스템의 다양화, 복잡화 -> 고도의 운영기술 필요 -> 운영리스크 증대
    • 네트워크화 -> 전산사고 피해규모의 대형화 및 피해 확산


과거에는 현금이라는 지급수단을 사용했고, 이를 주고 받는 업무를 할 시에 거래자가 직접 현금을 들고 이동해야 했습니다. 그러나 현재는 IT시스템의 도입으로 인해 전자지급수단을 사용하게 되면서 빠르고 간단하게 이를 주고 받을 수 있게 되었습니다. 이는 모두가 잘 아는 사실입니다.

여기서 주목해야할 것은 아무래도 부작용인 것 같습니다. 금융서비스가 제공하는 기능이 다양해지고 사용하는 사람들의 수가 늘어날수록 IT시스템은 더 다양하고 복잡하게 진화하게 됩니다. 이 복잡한 시스템을 운영하기 위해 전문가들은 팀을 이루고, 팀별로 지정받은 시스템을 별도로 운영하고 있습니다. 그렇다보니 시스템 오류 상황에서 원인을 찾아내기가 쉽지 않아졌습니다. 수백대로 나눠진 시스템에서 문제상황이 어디에서 발생했는지 찾아내기가 어려워진 것입니다.

또한 각각의 시스템이 네트워크로 연결된 구조도 부작용을 낳을 수 있습니다. 시스템 하나의 장애가 이와 연결된 다른 시스템과의 장애로 퍼지고, 이를 반복하면서 피해규모는 걷잡을 수 없이 커지게 됩니다. 시스템이 지연되어 서비스를 이용하지 못할 시에는 곧바로 커다란 비용적 손실로 이어지게 됩니다.


금융계 IT 개발시스템의 특징

위에서 서술한 이유 등으로 금융권 IT시스템 개발업무는 상당히 보수적인 특징을 가지고 있습니다. 아래와 같은 특징들은 전부 보수적인 성향을 가지고 있다고 볼 수 있습니다.

  • 오류 처리에 민감합니다.
    금융권에서는 하나의 트랜잭션이 돈 처리를 의미하기 때문에 오류에 민감합니다. 0.1원 반올림에 대한 잘못된 처리가 1억원의 금전적 손실로 이어질 수 있습니다. 그래서 거래 업무는 빠른 개발이나 배포보다 안정적인 개발과 배포를 더 중요하게 생각합니다.

  • 정형화된 업무와 정형화된 데이터
    은행 업무가 대부분 안정되어 있어서 변화가 적고 데이터도 대부분 정형화되어 있습니다. 그래서 프로세스 설계와 데이터 설계가 매우 중요하게 다뤄집니다. 이기종 DB(서로 다른 DBMS)나 복잡하게 시스템이 얽혀있는 N-Tier(다층구조) 환경이 대부분입니다.

  • 시스템의 수정은 기피하며, 기존 시스템을 확장하는 방향으로 개발합니다.
    사소한 변경이 큰 금전적 손실로 이어질 수 있기 때문입니다. 유지보수가 중요하기 때문에 기술지원이 안정적인 솔루션들과 피해를 책임질 수 있는 전문 업체를 선호하는 경향이 있습니다. 그래서 신기술 도입이 더딘 편입니다.

  • SOA 아키택쳐가 적용된 시스템이 많다.
    Monolichic Architecture, Microservice Architecture(MSA)와 대응됩니다. Service Oriented Architecture(SOA)는 기업의 업무 단위로 묶어서 서비스 하는것입니다.

  • 데이터작업이 많고 처리속도가 중요하다.
    서버작업에 Oracle과 Pro*C가 많이 사용됩니다. 최근에는 Java가 많이 도입되어 있습니다.

이렇듯 금융계에서는 도전적인 기술을 사용하지 않기 때문에 기술보다는 ‘은행 업무’를 얼마나 잘 이해하고 있느냐가 경력직 채용의 중요한 기준이 됩니다. 은행업무를 모르면 비즈니스 로직을 짤 수 없기 때문입니다.  


금융권에서 Java를 사용하는 이유


최근에는 금융권에 Java가 많이 도입이 되어 있습니다. 저희 회사도 Java를 사용하고요. 금융권에서 Java를 주로 사용하는 이유는 다음과 같습니다.

하드웨어나 특정 기술 구조에 의존적인 개발은 하지 않아도 됩니다.

Java는 JVM 위에서 작동하기 때문에 이식성과 범용성이 좋습니다. 처음에 사용했던 C/C++은 OS에서 직접 컴파일되는 시스템 언어로 CPU의 성능을 100%까지 끌어낼 수 있습니다. 그러나 OS가 달라지면 재컴파일해야합니다.

기업 또는 Enterprise의 대규모 시스템에서 무거운 Batch처리나 가벼운 조회트랜잭션이 섞일 수밖에 없다보니 하드웨어 특성에 관계없이 Server가 운영될 필요가 생깁니다. 이것이 Java와 Spring이 주로 사용되는 이유입니다.


앞으로의 금융IT 발전방향


핀테크는 finance+technology의 합성어로, 약 5년 전 등장해 이미 새로운 금융 시장의 시대를 열었습니다. 모바일,빅데이터,사물인터넷,클라우드,인공지능 등 IT기술의 발달과 함께 성장하고, 새로운 서비스를 창출해내고 있습니다. 우리나라에는 삼성,네이버,카카오,토스 등 선두적인 IT 기업들이 그 중심에서 이끌어나가며, 온라인상에서 ActiveX, 공인인증서, 복잡한 결제 프로세스 등의 문제점을 단번에 해결해내고 급격하게 성장하고 있습니다.

위에서 실컷 금융IT계열의 보수적인 특징에 대해서 설명했지만, 핀테크에서 내세우는 것은 바로 ‘혁신’입니다. 보수성향의 금융산업과 개발적인 IT산업의 성향이 융합되어 금융산업의 근본적인 변화를 주도하고 있는 것입니다.

빠르게 변화하는 금융IT시장에 맞추어 해당 분야에 종사하는 개발자 역시 자신에 대한 투자를 아끼지 않는 융합형 인재로 성장할 필요성이 있어 보입니다.




많은 정보가 빼곡하게 들어있는 포스팅은 아니어도 제가 공부한 것들을 완벽하게 이해하여 저만의 언어로 재구성하고싶은 생각이 있었으나… 어려운 기술용어가 나오고, 포스팅의 뒤로 갈수록 힘이 빠지는게 느껴지네요. 늘 그렇지만 아직 공부가 많이 부족함을 또 깨닫습니다.
이번에는 마치 교양처럼 금융IT산업의 전반적인 이해를 넓고 얕게 하기 위한 포스팅이었다면, 다음에는 좀더 시스템 중심의 전문적인 얘기를 다뤄볼까 합니다.


참고

금융IT시스템에 대한 이해 https://www.bok.or.kr/portal/bbs/B0000217/view.do?nttId=10045105&menuNo=200144&listType=G&pageIndex=12

은행의 IT시스템에 대한 이해 https://subokim.wordpress.com/2015/05/11/it_system_of_bank/

내가 보려고 모은 직장인 사이드 프로젝트

객체지향의 사실과 오해 리뷰