카카오뱅크 인기가 식을 줄 모릅니다. 출범 일주일만에 150만 계좌를 모으면서 대한민국 금융산업에 엄청난 파장을 일으키고 있죠. 은행산업이라는 저수지에 등장한 메기라고 비유를 합니다.

 

카카오뱅크는 금융산업뿐 아니라 IT업계에도 많은 시사점을 주고 있습니다. 국내 은행 중 처음으로 오픈소스 소프트웨어를 중심으로 IT인프라를 구성한 첫번째 사례로 꼽힙니다. 은행은 가장 보수적으로 IT를 받아들이는 산업군입니다. 은행 IT시스템은 안정성과 데이터 정합성 등이 최우선 가치입니다.

 

이 때문에 은행은 현존하는 시스템 중 가장 비싸고 튼튼한 장비와 소프트웨어를 사용하는 것이 일반적입니다.

그런데 카카오뱅크는 오픈소스 소프트웨어를 선택했습니다. 오픈소스는 유연하고 확장성이 높아서 거의 모든 산업군에서 즐겨 사용되는데, 국내 은행만큼은 보수적 태도를 취해왔습니다.

 

open-source-software-1

대부분의 국내 은행은 IBM이나 HP가 공급하는 고가의 서버에 유닉스 운영체제 위에서 거래처리를 합니다. 심지어 카카오뱅크에 앞서 선보인 인터넷전문은행 케이뱅크도 유닉스 운영체제를 선택했습니다.

 

반면 카카오뱅크는 다소 위험을 감수하고 리눅스 운영체제를 선택했습니다. 리눅스는 이미 세계적으로 금융권에서 활용사례가 많았는데, 유독 국내 은행이 이를 받아들이지 않았습니다. 리눅스 기반의 시스템은 비용이 적게 들고 유연성과 확장성이 높다는 장점이 있습니다.

 

더욱 흥미로운 부분은 데이터베이스관리시스템(DBMS, 이하 DB)입니다. 카카오뱅크는 DB에도 오픈소스를 많이 이용했습니다.

 

DB는 모든 IT시스템 중에 가장 중요한 시스템이라고 볼 수 있습니다. 은행의 DB는 한 치의 오차도 있으면 안 되기 때문입니다. 고객의 계좌에 얼마가 있는지, 얼마나 입금됐고 얼마가 출금됐는지 완벽한 데이터 정합성이 필요합니다. 만약 A가 B에게 100만원을 송금했는데 B의 계좌 DB에 이것이 반영되지 않는다면 큰일나겠죠?

oracle-database-1024x410

대부분의 은행은 오라클 DB를 사용합니다. 안정성과 성능이 검증된 DB죠. 은행 DB 시장은 오라클의 독무대입니다. IBM조차 오라클에 밀렸습니다.

 

구매자 입장에서는 좋은 일이 아닙니다. 선택지가 오라클밖에 없기 때문에 구매교섭력이 약합니다. 오라클은 제품을 판매하고 22%의 유지보수료를 따로 받는데, 은행들은 울며겨자먹기로 이를 받아들일 수밖에 없습니다.

카카오뱅크도 계정계 시스템에는 오라클DB를 썼습니다. 계정계 시스템은 여-수신을 비롯한 은행의 핵심 트랜잭션을 처리하는 시스템입니다.

 

그러나 카카오뱅크는 오라클DB 사용을 최소화했습니다. 채널계 시스템에는 MySQL이라는 오픈소스 DB를 사용했습니다. 채널계 시스템은 외부 연계 시스템으로, 지로 건강보험공단 세무 등 외부의 시스템과 은행 시스템을 연동하는 시스템입니다. ATM 등도 채널계 시스템으로 연동됩니다.

1200px-mysql-svg

채널계는 계정계 시스템과 동등한 수준의 안정성을 요구하는 분야로 24시간 무정지 운영이 가능해야 합니다. 채널계 시스템 역시 미션 크리티컬(Mission Critical)하다고 볼 수 있습니다. 이런 채널계에 오픈소스 DB를 사용했다는 것은 리눅스 운영체제를 선택한 것 이상의 모험이라고 볼 수 있습니다.

 

시스템 구축과정에서 우여곡절도 적지 않았던 것으로 추측됩니다.

예를 들어 카카오뱅크가 처음 선택한 오픈소스 DB는 ‘마리아DB’입니다. 마리아DB는 오라클이 MySQL을 인수하자(구체적으로는 썬마이크로시스템즈를 인수) 이에 반발해 MySQL 창시자들이 새롭게 만든 오픈소스 기반의 관계형DB입니다. MySQL과 같은 소스코드에서 시작됐기 때문에 사실상 같은 소프트웨어라고 볼 수도 있습니다.

 

그런데 마리아DB로는 해결되지 않는 문제가 있었습니다. 고가용성이었습니다. 일반적으로 중요한  DB 서버는 이중화합니다. 하나가 셧다운돼도 다른 서버가 이어받아서 트랜재션을 처리하기 위해섭니다. 이를 위해서는 두 서버가 같은 데이터를 가지고 있어야 하고,  A서버에 데이터가 변경되면 B 서버에도 이것이 즉시 반영돼야 합니다.

오라클은 이를 가능케하는 RAC (Real Application Cluster)라는 기능이 있고, 이것이 오라클이 시장을 평정한 배경이었습니다.

 

그런데 마리아DB로 이런 구성이 어렵다고 카카오뱅크 측은 결론을 내렸습니다. 대신 카카오뱅크는 대안으로 MySQL과 페르코나를 선택했습니다. 페르코나는 MySQL을 전문적으로 기술지원하는 회사입니다. 결과적으로 카카오뱅크는 MySQL의 반동기화 복제(Semi-sync replication)와 MHA(Master High Availability)로 오라클 DB RAC와 유사한 역할을 하도록 구성했고, 현재 별 무리없이 작동하고 있습니다.

ti6

마지막으로 카카오뱅크의 또 하나의 특징은 코어뱅킹 시스템이 자바로 개발됐다는 점입니다. 대부분의 국내 코어뱅킹 시스템은 코볼이나 C언어로 개발돼 있습니다.

 

그러나 카카오뱅크는 좀더 유연한 자바를 선택했습니다. 카카오뱅크가 직접 개발한 것은 아니고 전북은행의 코어뱅킹 시스템을 이식했습니다. 전북은행은 국내 최초로 자바 기반 코어뱅킹 시스템을 구축한 회사입니다. 개발은 LG CNS가 담당했습니다.

 

[출처]

바이라인네트워크 심재석 기자 shimsky@byline.network

원문보기 : https://byline.network/2017/08/8-2/