피드로 돌아가기
Building a Replay-Tested Interactive Brokers Client in Go
Dev.toDev.to
Backend

Callback 제거와 Replay-Testing 기반의 Go-idiomatic IBKR 클라이언트 설계

Building a Replay-Tested Interactive Brokers Client in Go

Thomas Marcelis2026년 4월 15일8advanced

Context

기존 IBKR Go 라이브러리들이 Java의 EWrapper/EClient callback 구조를 그대로 답습하여 Go의 동시성 이점을 활용하지 못한 한계 존재. Request ID의 수동 관리와 비동기 응답 처리를 위한 복잡한 동기화 로직이 개발 생산성을 저해하는 병목 지점으로 작용.

Technical Solution

  • Callback 구조를 제거하고 Typed Return 및 Channel 기반의 Go-idiomatic API로 전환하여 인터페이스 단순화
  • 내부적으로 Request ID 관리 및 응답 상관관계(Correlation) 처리를 캡슐화하여 사용자 레벨의 복잡성 제거
  • TCP 패킷 경계에서의 메시지 분할 및 순서 보장을 검증하기 위한 Replay-Testing 프레임워크 구축
  • 실제 프로토콜 트랜스크립트를 기록하고 재생하는 방식을 통해 Mocking의 한계를 극복한 결정론적 테스트 환경 구현
  • 연결 유실 시 Silent Reconnect를 배제하고 명시적인 Lifecycle Event를 제공하여 상태 제어권 강화
  • LLM 기반 개발 효율성을 높이기 위해 Go의 단일 구현 철학을 반영한 일관된 구조 설계

1. 외부 API 래퍼 설계 시 Callback 구조를 Channel 또는 Promise 형태로 변환하여 호출부 단순화 검토

2. 복잡한 상태 기반 프로토콜 테스트 시 Mocking 대신 실제 트래픽 덤프를 활용한 Replay-Testing 도입 고려

3. 네트워크 라이브러리 설계 시 자동 재연결보다 명시적인 상태 이벤트 제공을 통해 상위 제어 로직의 예측 가능성 확보

원문 읽기