블록체인 개발을 처음 배울 때 많은 사람들이 같은 오해를 한다. “스마트컨트랙트를 실행하면 결과가 시스템에 전달되겠지.” 그런데 그렇지 않다. 블록체인은 알려주지 않는다.
오늘 교보생명 보험 시스템 개발자들에게 이 개념을 설명하면서, 이것이 단순한 기술 디테일이 아니라 금융 시스템 전체 아키텍처를 결정하는 핵심이라는 것을 다시 확인했다.
블록체인은 왜 알려주지 않는가
전통적인 웹 서버는 이벤트를 발생시키면 다른 서버에 알릴 수 있다. 결제가 완료되면 결제 서버가 주문 서버에 “결제 됐어”라고 HTTP 요청을 보낸다. Push다.
블록체인은 다르다. 블록체인 노드는 누가 물어봐야 답한다. 먼저 연락하지 않는다.
결제서버: POST /order-server/payment-confirmed { orderId, amount }
주문서버: “알겠어, 처리할게” → 즉시 응답
// 블록체인의 방식
스마트컨트랙트: mint() 실행 → 블록 기록 → 아무것도 안 함
오프체인 시스템: ???
← 이 간극을 우리가 직접 메워야 한다
가장 직관적인 해결책 — 폴링, 그리고 왜 안 되는가
“그러면 1초마다 물어보면 되잖아?”
맞다. 그리고 많은 초기 블록체인 시스템이 이렇게 만들어졌다. setInterval로 1초마다 “새 이벤트 있어?” 질문을 반복하는 방식. 동작은 한다. 그런데 금융 시스템에서 쓰면 안 된다.
| 문제 | 금융 시스템에서의 결과 |
|---|---|
| 최대 12초 지연 | 앱에는 NFT가 생겼는데 원장에 없는 상태 12초 유지 → 민원 |
| 서버 재시작 시 누락 | 재시작 20초 동안 발행된 NFT는 영원히 원장에 기록 안 됨 |
| 불필요한 RPC 호출 | 이벤트 없어도 24시간 86,400번 호출 → 인프라 낭비 |
| 확장 불가 | 컨트랙트 10개 감시 → 폴링 10배 → 선형 비용 증가 |
올바른 해결책 — 이벤트 드리븐 아키텍처
블록체인이 먼저 연락하지 않는다면, 우리가 WebSocket 연결을 열고 “이벤트 생기면 알려줘”라고 구독을 거는 것이다. 이것이 이벤트 드리븐 아키텍처의 핵심이다.
ChainEventListener.start():
1. DB에서 마지막 처리 블록 조회
2. 재시작 구간 missed event 복구 (queryEvents)
3. WebSocket 구독 시작 (subscribeEvents)
이벤트 발생 시:
노드 → WebSocket push → handler 즉시 실행 → 원장 기록
지연: ~200ms. 재시작 후 복구: 자동. RPC 낭비: 없음.
세 가지 신뢰성 원칙 — 금융 시스템이 요구하는 것
단순히 이벤트를 빠르게 받는 것만으로는 부족하다. 금융 시스템에서 요구하는 신뢰성은 세 가지 원칙으로 구성된다.
왜 이것이 금융 시스템 설계의 핵심인가
전통 금융 시스템은 수십 년에 걸쳐 이 문제들을 해결해왔다. 메시지 큐, 이벤트 소싱, CQRS 같은 패턴들이 그 결과다. 블록체인 시스템은 이 모든 과정을 다시 겪어야 한다. 다만 훨씬 빠른 속도로.
블록체인은 DB가 아니다. 이벤트 로그다.
비즈니스 로직은 오프체인에 있다.
신뢰성(복구·멱등성·재시도)은 우리가 만들어야 한다.
이 아키텍처가 만드는 미래
이 구조가 완성되면 무엇이 가능해지는가. 교보생명 사례로 보면: 고객이 만보 걷기를 달성하는 순간 스마트컨트랙트가 NFT를 발행하고, 이벤트 파이프라인이 즉시 수신해 원장에 기록하고, 고객에게 알림이 간다. 사람이 개입하지 않는다. 실시간이다. 변조 불가능한 기록이다.
이것을 보험료 할인, 헬스케어 리워드, 행동 기반 금융 상품에 적용하면 전혀 새로운 금융 서비스 모델이 만들어진다. 블록체인이 기록하고, 이벤트 드리븐 아키텍처가 그 기록을 비즈니스 가치로 전환한다.
정리 — 오늘 깨달은 것
블록체인 기술을 가르칠 때 가장 중요한 것은 “스마트컨트랙트 코드 작성법”이 아니다. “블록체인이 하지 않는 것”을 먼저 이해하는 것이다.
블록체인은 기록만 한다. 알리는 것, 연결하는 것, 처리하는 것 — 이것은 전부 우리 코드가 해야 한다. 그 코드를 어떻게 신뢰성 있게 만드느냐가 블록체인 시스템 엔지니어링의 본질이다.
블록체인 ≠ 데이터베이스
블록체인 = 변조 불가능한 이벤트 로그
비즈니스 시스템이 이 로그를 어떻게 구독하고, 복구하고, 처리하는가 —
그것이 블록체인 시스템 아키텍처의 전부다.