개요

결론

CPU 집약적인 작업 + 초고부하 작업이 아니라면 Go, Python 어떤 것을 쓰던지 성능은 크게 차이가 나지 않는다.

테스트 시나리오

Go Topic = upbit-krw-ticker-go, Python Topic = upbit-krw-ticker-py. PARTITION=3

Go Topic = upbit-krw-ticker-go, Python Topic = upbit-krw-ticker-py. PARTITION=3

Python vs Go 성능 테스트 결과

“Confluent Kafka” - 전체 업비트 마켓

<aside> <img src="notion://custom_emoji/845a6cfa-ad4b-4505-8350-960c9f51a87a/168954da-c755-8023-8dcf-007afaa4b2e6" alt="notion://custom_emoji/845a6cfa-ad4b-4505-8350-960c9f51a87a/168954da-c755-8023-8dcf-007afaa4b2e6" width="40px" />

Kafka 에는 크게 Apache Kafka, Confluent Kafka 두 줄기가 있는데 자바로만 개발하면 Apache Kafka 로 충분하지만 그 외 언어를 사용해야 할 때는 Confluent Kafka 를 쓰는게 보편적임

(Confluent 라는 실리콘밸리에 있는 회사가만든 Kafka 라고 함)

</aside>

테스트 개요

항목 내용
테스트 시나리오 Upbit WebSocket을 통한 실시간 거래 데이터 수신 및 Kafka로 전송
테스트 대상 업비트 전체 마켓 (KRW, BTC, USDT 등 모든 거래쌍)
테스트 시간 182.1초 (3분)
Python Kafka 라이브러리 confluent-kafka-python
Go Kafka 라이브러리 confluent-kafka-go
동기화 5의 배수 초에 동시 시작하여 동등한 테스트 환경 보장

테스트 환경 요약

항목 Python Go
CPU 약 1% 약 1%
WebSocket 연결 전략 마켓 20개당 1개 연결 마켓 20개당 1개 연결
전체 마켓 수 479개 479개
WebSocket 연결 수 24개 24개

주요 성능 지표ㅁ