“전문 통신”에 관하여
카테고리: FEP
0. 글 원본
박준하 on LinkedIn: 금융권에서는 여러 회사끼리 연동을 하기 위해서 대부분 전문 통신을 하고 있습니다.
“전문 통신”에 관한 글을 읽고 개인적인 생각을 남깁니다. 잘못된 내용에 대한 지적은 언제든 환영합니다.
많이 부족한 글이지만, “전문 통신” 방식의 대외계(FEP) 업무에 대한 이해를 높일 수 있는 설명이 되었으면 좋겠습니다.
1. “전문 통신”은 전 세계 자본 시장에서 활발하게 사용되고 있는 통신 방식입니다.
가장 대표적인 프로토콜로는 FIX(Financial Information eXchange)가 있습니다.
세계 정상급의 증권거래소(NYSE, NASDAQ 등), 선물거래소(CME 등) 뿐만 아니라 유럽, 일본, 홍콩 등 선진시장에서도 사용하는 국제표준이자 시장표준 프로토콜입니다. 매일 전 세계의 거래소에서 수천 개의 회사가 수백만 건의 거래를 완료하는데 사용하고 있습니다.
자세한 설명은 아래의 링크에서 확인하실 수 있습니다.
[FIX Trading] What is FIX? • FIX Trading Community
[Wikipedia]Financial Information eXchange
물론 한국거래소는 이 FIX 방식을 도입하지 않았지만, 비슷한 방식으로 주문 및 시세 데이터를 송수신하고 있습니다.
2. “전문 통신”의 장점은 HFT(High Frequency Trading) 및 Low Latency 구현에 있습니다.
“전문 통신”의 대표적인 특징은 Fixed-length data, 즉 전문의 길이가 고정되어 있다는 것입니다.
예를 들면, 주문시간 12자리(090010157345), 종목코드 6자리(005930), 수량 8자리(00000010), 가격 12자리(000000070000)를 하나의 plain-text (09001015734500593000000010000000070000)로 전송하는 구조인 것이죠. (물론 실제 전문은 저것보다 훨씬 많은 내용을 담고 있습니다.)
자세한 설명은 아래의 영상에서 확인하실 수 있습니다.
[Toss SLASH 23] 새로운 은행을 위한 Modern 대외 연계 시스템 구축기
key값 없이 value값만을 나열한 plain-text를 전송하면 당사자 간 협의한 전문 스펙을 통해 전문을 decoding할 수 있어 비교적 적은 byte의 데이터를 송수신 할 수 있다는 장점이 있습니다. 또한, 전문 스펙과 어긋난 길이 및 형식의 전문이 수신되면 빠르게 오류를 판단할 수 있기 때문에 “전문 통신” 방식은 HFT 및 Low Latency 달성에 가장 적합한 프로토콜이라 할 수 있습니다.
3. 세션 연결 방식은 신뢰성 있는 서비스를 제공하는데 큰 역할을 합니다.
주식 거래를 할 때 가장 중요한 정보는 무엇일까요? 저는 단언컨대 주문과 시세라고 말씀드릴 수 있습니다.
시세 데이터는 가장 최신의 호가 및 체결 내역이 중요하기 때문에 중간에 호가 내역이 한 두건 정도 유실되는 것은 크게 중요하지 않은 특징을 가지고 있습니다. (체결 내역은 투자자들의 의사 결정에 큰 영향을 미치는 정보라 유실되지 않는 것이 좋습니다.) 따라서 신뢰성 보다는 빠른 속도를 보장하는 UDP Multicast를 통해 수신합니다.
하지만 주문 데이터는 거래소에 내가 보낸 주문이 제대로 도착했는지, 체결이 제대로 이루어졌는지 확인하는 작업이 필수로 이루어져야 합니다. 따라서 장 시작 전에, TCP Connect를 통해 양자 간 세션을 생성하게 됩니다.
TCP의 특징에는 연결 지향과 신뢰성 있는 데이터 전송이 있습니다. 특정 주기마다 거래소에 Heartbeat를 보냄으로써, 세션에 이상이 있는지 끊임 없이 관찰합니다. 이를 통해 서비스 장애 발생 시, 빠르게 인지하여 조치를 취할 수 있게 됩니다.
또한, Seq Number와 Ack Number가 일치하는지 확인함으로써 내 주문이 거래소에 제대로 도착했는지 여부를 알 수 있게 됩니다. Seq Number > Ack Number일 경우에는 주문을 재전송할 것이고, 반대일 경우에는 내가 보내지 않은 데이터가 거래소에 도착한 것이니 거래소에 문의하여 빠른 조치를 취해야 할 것입니다.
4. 마무리
실시간으로 대량의 데이터를 송수신해야 하는 증권 업무의 경우에는 지금의 “전문 통신” 방식을 사용하는 것이 가장 적합하다고 생각합니다. 특히, 대형 공모주 상장일의 오전 9시 같은 경우에는 이보다 더 좋은 방식은 없을 것 같습니다. 반면 뱅킹 업무의 경우에는 실시간성이나 latency의 영향을 크게 받지 않기 때문에 HTTPS 통신 방식도 좋을 것 같다는 생각이 듭니다. 하지만 금융 서비스는 상호 간 연계가 되어있는 그물망과 같기 때문에 한국거래소(코스콤) 및 금융결제원이 시스템 전환을 주도하지 않는 한 각 금융사들이 먼저 나서서 굳이 바꿀 이유는 없을 것 같네요…(시스템을 바꾸는 것은 비용이 많이 들어가는 작업이고, 바꾼들 타사가 그 시스템을 쓰지 않으면 무용지물이겠죠?)
댓글 남기기