본문 바로가기
쉽게 배우는 금융전산 매뉴얼 | 황금 호박마차 쉽게 배우는 금융전산 매뉴얼 | 황금 호박마차

분산 DB 금융 트랜잭션 2단계 커밋 알고리즘

읽는 시간 약 7분

돈을 다루는 기술의 숨은 공신 분산 데이터베이스

우리가 스마트폰으로 송금을 하거나 카드로 결제를 할 때 은행 서버에서는 보이지 않는 엄청난 일들이 일어납니다. 현대의 금융 시스템은 단 하나의 컴퓨터가 모든 데이터를 처리하지 않습니다. 수많은 사용자의 요청을 감당하기 위해 전 세계에 퍼져 있는 여러 대의 컴퓨터 즉 분산 데이터베이스를 활용합니다. 서울에서 부산으로 돈을 보낼 때 송금하는 사람의 계좌에서 돈이 빠져나가는 동시에 받는 사람의 계좌에 돈이 채워져야 합니다. 만약 이 과정에서 중간에 서버가 다운되거나 네트워크가 끊어진다면 어떤 일이 벌어질까요. 누군가의 돈은 사라지고 누군가는 돈을 받지 못하는 대참사가 일어날 수 있습니다.

이러한 문제를 해결하기 위해 금융 IT 전문가들이 사용하는 핵심 기술이 바로 분산 트랜잭션 관리입니다. 여러 곳에 흩어져 있는 데이터베이스가 마치 하나의 데이터베이스처럼 정확하게 동시에 움직이도록 만들어주는 기술입니다. 이 기술이 없다면 우리는 매 순간 내 잔고가 안전한지 불안해해야 할지도 모릅니다. 금융의 신뢰를 지탱하는 보이지 않는 힘에 대해 자세히 알아보겠습니다.

두 단계에 걸쳐 거래를 확정하는 2단계 커밋 알고리즘

분산 환경에서 여러 데이터베이스가 완벽한 조화를 이루도록 돕는 가장 대표적인 방법이 2단계 커밋 알고리즘입니다. 이름 그대로 거래를 확정하는 과정이 크게 두 가지 단계로 나누어져 진행됩니다. 모든 참여자가 거래를 준비할 수 있는지 확인하고 그 결과를 바탕으로 최종 실행을 결정하는 구조입니다.

첫 번째 단계는 준비 단계라고 부릅니다. 거래를 총괄하는 조정자 역할을 하는 서버가 참여하는 모든 데이터베이스 서버에게 질문을 던집니다. 지금 이 거래를 처리할 준비가 되었는가 하고 묻는 것입니다. 각 데이터베이스 서버는 자신의 상태를 점검합니다. 디스크 용량은 충분한지 다른 작업 때문에 잠겨 있지는 않은지 확인한 뒤에 문제가 없다면 준비 완료 응답을 보냅니다. 만약 문제가 있다면 거부 응답을 보냅니다.

두 번째 단계는 커밋 또는 중단 단계입니다. 조정자는 모든 참여자로부터 받은 응답을 확인합니다. 만약 모든 서버가 준비 완료라고 대답했다면 조정자는 최종 승인 명령을 내립니다. 이 명령을 받은 모든 데이터베이스는 동시에 거래를 영구적으로 기록합니다. 하지만 단 한 대의 서버라도 거부 응답을 보냈거나 응답이 없다면 조정자는 모든 서버에게 거래 취소 명령을 내립니다. 이 과정을 통해 모든 데이터베이스의 데이터가 완벽하게 일치하는 상태를 유지할 수 있습니다.

실생활 금융 거래에서 만나는 2단계 커밋의 모습

이 알고리즘이 우리 일상에서 어떻게 쓰이는지 살펴보면 이해가 훨씬 쉽습니다. 인터넷 쇼핑몰에서 물건을 사고 신용카드로 결제하는 상황을 가정해 보겠습니다. 이 거래에는 최소한 쇼핑몰의 주문 데이터베이스 상품 재고 데이터베이스 그리고 카드사의 결제 데이터베이스가 참여합니다.

주문 시스템이 작동하면 2단계 커밋 알고리즘이 조용히 움직이기 시작합니다. 준비 단계에서 쇼핑몰은 주문 정보를 기록할 준비가 되었는지 묻고 재고 시스템은 해당 상품의 수량이 남아 있는지 확인하며 카드사는 고객의 한도가 충분한지 심사합니다. 모든 시스템이 이상 없다고 답하면 비로소 주문이 완료되고 재고가 줄어들며 카드 결제가 승인됩니다. 만약 그 사이에 상품이 품절되거나 카드 한도가 초과되었다면 준비 단계에서 걸러지기 때문에 주문이 자동으로 취소되어 돈이 잘못 빠져나가는 일을 막을 수 있습니다.

흔히 오해하는 사실과 진실

이 기술에 대해 잘 모르는 사람들은 분산 데이터베이스와 2단계 커밋이 완벽하기 때문에 절대 오류가 나지 않을 것이라고 생각합니다. 하지만 기술의 세계는 그리 단순하지 않습니다. 자주 오해하는 부분들을 짚어볼 필요가 있습니다.

많은 이들이 이 알고리즘을 사용하면 속도가 매우 빨라질 것이라고 기대합니다. 그러나 실제로는 여러 서버가 서로 대화를 주고받고 응답을 기다리는 과정이 필수적이기 때문에 단일 데이터베이스를 사용할 때보다 처리 속도가 느려집니다. 네트워크 지연이 발생하면 전체 시스템이 멈춰 선 것처럼 답답해질 수도 있습니다. 따라서 무조건 도입하기보다는 정확성이 속도보다 훨씬 중요한 금융 거래 영역에서 신중하게 선택하여 적용해야 합니다.

또 다른 오해는 조정자 서버만 안전하면 시스템 전체가 안전하다는 생각입니다. 조정자 서버에 문제가 생겼을 때 참여 서버들이 어떤 상태로 멈춰 있어야 하는지에 대한 고민이 반드시 필요합니다. 조정자가 응답 없이 사라져 버리면 참여 서버들은 거래를 진행해야 할지 취소해야 할지 알 수 없어 무기한 대기 상태에 빠질 수 있습니다. 이를 블로킹 현상이라고 부르며 현대의 금융 시스템은 이러한 단점을 보완하기 위한 다양한 추가 기술을 함께 사용합니다.

비용과 성능의 균형을 맞추는 현명한 접근법

분산 데이터베이스 시스템을 구축하고 유지하는 데는 상당한 비용이 들어갑니다. 완벽한 일관성을 추구하는 2단계 커밋은 성능 저하를 동반하기 때문에 기업 입장에서는 고민이 깊어질 수밖에 없습니다. 예산을 효율적으로 쓰면서도 시스템의 안정성을 확보하려면 몇 가지 전략이 필요합니다.

모든 데이터에 무조건 2단계 커밋을 적용하는 것은 피해야 합니다. 예를 들어 사용자의 단순한 프로필 조회나 게시물 좋아요 같은 기능은 굳이 엄격한 분산 트랜잭션이 필요 없습니다. 이런 부분은 성능이 빠른 방식을 선택하고 오직 돈이 오고 가는 계좌 이체나 결제 시스템처럼 반드시 일관성이 지켜져야 하는 핵심 영역에만 집중적으로 적용하는 것이 바람직합니다.

클라우드 환경을 적극 활용하는 것도 좋은 방법입니다. 직접 고가의 물리 서버를 구축하고 관리하는 대신 클라우드 서비스 제공업체가 제공하는 분산 데이터베이스 관리 시스템을 이용하면 초기 투자 비용을 크게 아낄 수 있습니다. 전문가들은 비즈니스의 성장에 맞춰 서버의 규모를 유연하게 조절할 수 있는 아키텍처를 설계하는 것이 장기적으로 가장 비용 효율적인 길이라고 조언합니다.

자주 묻는 질문

네트워크가 끊어지면 거래는 어떻게 되나요

네트워크 단절이나 시스템 장애가 발생하여 2단계 커밋이 완료되지 못하면 참여 서버들은 안전을 위해 기존 상태를 유지하거나 안전한 대기 상태로 들어갑니다. 조정자가 복구되거나 타임아웃 규칙에 따라 전체 거래를 취소하여 데이터의 모순을 방지합니다.

블록체인 기술과 2단계 커밋은 어떤 차이가 있나요

2단계 커밋은 신뢰할 수 있는 중앙 조정자의 지휘 아래 여러 데이터베이스가 합의를 이루는 방식인 반면 블록체인은 중앙 조정자 없이 참여하는 모든 노드가 탈중앙화된 방식으로 합의를 이룹니다. 금융권의 핵심 장부는 여전히 속도가 상대적으로 빠른 2단계 커밋 기반의 시스템을 많이 사용합니다.

모든 금융 기관이 이 알고리즘을 반드시 쓰나요

대부분의 전통적인 은행과 결제 대행사는 데이터의 정확성이 생명이므로 강력한 일관성을 보장하는 방식을 사용합니다. 다만 최근에는 속도를 높이기 위해 약간의 지연을 허용하는 최종적 일관성 모델을 혼용하는 곳도 늘어나고 있습니다.

파이낸스 HM
복잡하고 딱딱한 금융 시스템을 일반인의 눈높이에 맞춰 쉽고 재미있게 풀어내는 황금 호박마차입니다.
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.