LMAX 거래소가 게임서버 아키텍쳐에 주는 계시 #1

LMAX Exchange 란 무엇인가?

2010 년에 영국 런던에서 창립되였는데 첫 온라인 외환거래소라고 합니다. 영국에서 성장이 가장 빠른 핀테크 업체이기도 하답니다. [1] [2]

LMAX 거래소가 최근 기술영역에서 주목받게 된 이유는 LMAX 가 업계 최고 성능을 자랑하는 마켓 엔진 아키텍쳐를 발표했기 때문인데요, 도대체 얼마만큼의 성능이 되냐구요?

비교대상으로 우리가 익숙한 고성능 시스템을 살펴봅시다.

  1. VISA 는 평균 2,000 TPS 성능으로 돌고있다고 합니다. [3]
  2. NASDAQ 의 자료에 의하면 NASDAQ 의 전대 엔진의 성능은 10,000 TPS 였고 그때는 그걸로 자랑을 했었습니다. [4]
    지금의 NASDAQ 는 35,000 TPS 부하로 돌고있다는 것을 들은 적 있는데 출처는 찾지 못하겠습니다. 이건 그냥 그럴 수도 있겠거니 정도로 들어주시면 됩니다.
    현재 최신의 NASDAQ 마켓 엔진도 고성능 솔루션을 연구하여 백만 TPS 의 성능을 낼 수 있다고 합니다. [5]
  3. redis 의 set 성능은 100,000 TPS 입니다. pipeline 모드를 켜면 400,000 TPS 입니다. [9]

그건 그렇고 오늘 말하려고 하는 LMAX 의 스루풋 절대수치는 얼마인가요?
무려 600 만 TPS 에 이른다고 합니다. [8]

LMAX 를 알게 된 것은 Bitshares 를 통한 것인데요. [6] [7] 

Bitshares 가 LMAX 의 아키텍쳐를 참조했다고 합니다.
LMAX 의 아키텍쳐는 업계에 공개되여있습니다:
http://martinfowler.com/articles/lmax.html

콘퍼런스에서 아키텍쳐를 소개하는 강연 영상은 아래 링크에서 보실 수 있습니다:

LMAX Exchange 의 아키텍쳐 포인트들을 아주 간략하게만 짚어본다면 아래와 같은 것들이 있습니다.

  1. 싱글 스레드.
  2. JVM

그래서,

Conclusion

앞으로 연재에서도 풀어볼 것이지만 어쨌거나 1차 연재에서 말하고 싶었던건 LMAX 와 그 아키텍쳐 소개 외에는 그것이 게임서버 설계에 아래와 같은 계시를 주는게 아닌가 하는 생각입니다.

1. 싱글 스레드. 멀티 스레드의 필요성이 정말 충분히 검토 되였는가?
2. JVM. 네이티브 코드만 믿겠다는 고물덩어리가 되여 Java 와 .Net 만 까고 그러는 신사물 거부하는 사람이 되지 맙시다. 젊은 마음을 가지십시오.

1번에 대해서는 좀 더 논의가 필요하기도 한데. 예를 들어서 게임의 특성상 게임의 비즈니스 로직 프로세서는 단순 거래의 비즈니스 로직 프로세서와 비교가 안되는 측면들이 있습니다. 이런 측면들은 역시 결론에 어느 정도 변수를 주지만, 이번 연재 1편의 결론의 주된 흐름은 개변시키지 않을 것이라는 겁니다.

즉 멀티스레드를 반대하는건 아닙니다. 너무나 섣부른, 그리고 자제되지 않은 (스레드를 너무 많이 쓴다든지), 그릇된 방식의 스레드 사용을 반성해봐야 할게 아닌가. 등등을 말하고 싶었던 겁니다. 역시 이 점으로 2 편을 이끌어내고 싶은데 맘이 바뀌어 다른 것을 실을 수도..

References:

[1] https://en.wikipedia.org/wiki/LMAX_Exchange
[2] https://www.linkedin.com/company/lmax-exchange
[3] https://en.bitcoin.it/wiki/Scalability
[4] http://www.nasdaq.com/services/intlmag/issue_44/44_market_matters.pdf
[5] http://www.phlx.com/Trader.aspx?id=Latencystats
[6] http://finance.yahoo.com/news/bitshares-claims-100-000-transactions-232000522.html
[7] https://bitshares.org/technology/industrial-performance-and-scalability/
[8] http://martinfowler.com/articles/lmax.html
[9] http://redis.io/topics/benchmarks

Advertisements

댓글 남기기

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s