본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

[데뷰2017] “금융 서비스에 오픈소스 DB 써도 될까요?”

OSS 게시글 작성 시각 2017-10-17 06:26:43 게시글 조회수 5341

2017년 10월 17일 (화)

ⓒ 디지털데일리, 백지영 jyp@ddaily.co.kr



▲성동찬 한국카카오은행 DB엔지니어


“레퍼런스가 중요한 환경에 레퍼런스가 없는 것이 이토록 힘든 일인지 몰랐습니다.”


16일 네이버의 연례 기술 컨퍼런스 ‘데뷰 2017’에서 성동찬 한국카카오은행 데이터베이스관리자(DBA)는 이같이 토로(?)했다.


지난 6월 27일 국내 2호 인터넷전문은행으로 출범한 카카오은행은 금융권에서는 보기 드물게 주요 업무에 오픈소스인 마이SQL 데이터베이스(DBMS)를 적용해 주목받은 바 있다. 흔히 국내 은행 서비스는 오라클과 같은 상용 DB로 구축한다는 것이 거의 기정사실처럼 받아들여지고 있다.


하지만 카카오은행은 기존의 사례에 뒤엎고, 오픈소스 DB인 마이SQL을 적극 활용해 은행 시스템을 구축했다. 마이SQL은 물론 하드웨어 역시 리눅스 OS 기반의 x86 시스템을 선택해 업계의 주목을 받았다.


이날 성 DBA는 “장난감 같은 DB 소리로 어떻게 할거냐는 얘기를 많이 들었다”며 “하지만 운영해 본 결과, 현재까지 장애 없이 잘 사용하고 있다”고 운을 뗐다. 물론 카카오은행이 마이SQL만 사용하는 것은 아니다. 계정계는 여전히 오라클 DB를 사용하고 있지만, 고객인증이나 대고객채널, 멀티채널, 신용정보평가, 통합 메시징, 내부 서비스 등 많은 부분에 마이SQL이 적용됐다.


즉, 계정계로 데이터를 보내는 API 영역인 멀티채널부터 애플리케이션을 사용하는 전반적인 부분에서 활용되고 있다.


그는 “하지만 오라클 DB를 사용했다면 하지 않아도 될 일들을 많이 했다”며 “고객의 데이터(돈)을 관리하는 은행인 만큼, 안정성이 최우선”이라고 말했다. 특히 오픈 이후 생각보다 많은 트래픽이 발생하며, 1주일 후 바로 인프라를 확장했을 정도로 사용자가 빠르게 늘어났다.


실제 카카오은행에 따르면, 서비스 시작 첫날인 6월 27일, 11시간만에 2016년 시중은행이 기록한 비대면 계좌개설 건수인 15만5000좌를 돌파했다. 출범 일주일만에 150만 계좌를 돌파하고, 이후 1달 간 하루 평균 10만좌가 새로 개설됐다.


그는 “기껏해야 1/4이나 반 정도로 예상했던 트래픽이 빠르게 증가하면서, 안정성에 더 집중했다”며 “이를 위해 로스리스(lossless, 데이터 이력을 슬레이브 어딘가에 남김) 복제와 마스터 고가용성(MHA), 2차 장애 방지 위한 도메인 페일오버를 활용하는 조합으로 이를 극복했다”고 설명했다.


예를 들어 오라클 DB는 RAC(Real Application Cluster)라는 기능을 통해 데이터를 양쪽으로 똑같이(동기) 복제하고, 한쪽에 장애가 나면 다른 쪽에서 바로 실행되는 액티브-액티브 방식을 지원한다. 반면 마이SQL의 데이터 복제는 비동기로 이뤄진다. 마스터에서 커밋된(쓰기가 완료된) 데이터를 비동기로 디스크에 복제 저장하는 만큼, 마스터 장애시 데이터 유실이 발생할 수 있다.


그는 “오픈소스를 가져다 쓰니깐 문제가 생긴다는 얘기를 듣고 싶지 않았다”며 “반드시 데이터가 일치할 필요는 없고, 복구시 데이터 유실만 없으면 된다는 결론을 내리고, 이에 대한 해답으로 마이SQL 5.7 버전의 로스리스 복제를 택했다”고 말했다.



로스리스(After-sync) 복제는 마이SQL 5.5의 반동기화 복제(Semi-sync replication)에서 약간 개선된 것으로 스토리지 엔진 커밋 전 전송하는 방식이다. 마스터 DB에 예기치 않게 장애가 발생하더라도 슬레이브 어딘가에 변경 이력이 반드시 남아있게 된다. 여기에 30초 이내로 데이터 유실 없이 복구가 가능한 MHA 기능을 통해 오라클 RAC와 유사한 역할을 하도록 했다. 또, 2차 장애 방지를 위해 서비스 도메인 IP를 변경하는 도메인 페일오버를 방식을 채택했다.


이밖에 스케일아웃 확장시 데이터 특성을 보고 샤딩(동일노드 분산)을 구성했으며, 아카이빙 용도의 데이터는 ‘토쿠DB(TokuDB)’라는 또 다른 엔진을 채택했다. 이는 마이SQL을 전문적으로 기술 지원하는 퍼코나(Percona) 버전에 포함돼 있었으며, 기존 대비 1/8 수준으로 데이터를 줄일 수 있었다. 특히 마이SQL 담당 인력이 2명밖에 안 돼 95%를 자동화 구성하고, 서비스 튜닝 포인트를 찾고 있다.


그는 “카카오은행은 ‘금융 어벤저스’라고 부를 정도로 다양한 백그라운드를 가진 사람들이 모여있다”며 “그렇다보니 기술의 어려움보다는 금융 레퍼런스 부재로 인한 신뢰 확보, 상용 솔루션만 고집하는 문화나 공감할 수 없는 점들이 많았다”고 말했다.


그는 이어 “레퍼런스가 중요한 환경에 레퍼런스가 없다는 것이 이렇게 힘든 일인줄 몰랐다”며 “금융 서비스도 결국 하나의 서비스인 만큼, 오픈소스라는 기술을 잘 엮어서 상용 제품 못지 않게 안정성을 높기고, 스스로가 레퍼런스가 돼 보자는 것이 목표”라고 덧붙였다.




※ 본 내용은 (주)디지털데일리(http://www.ddaily.co.kr)의 저작권 동의에 의해 공유되고 있습니다.

Copyright ⓒ 디지털데일리. 무단전재 및 재배포 금지


[원문출처 : http://www.ddaily.co.kr/news/article.html?no=161221]

맨 위로
맨 위로