develop custom_top_html:no
default debug random = 0 / type = READ / detected = READ

맥스 나우..

요즘 참으로 핫한 거래소죠..

자신들은 php 도 안쓰고, NoSQL , Oracle 조차 안썼다고 자랑하는..

오로지 C++라고 자랑하길래..

한번 뜯어 보았습니다 (...)


뭐 뜯는다고 해킹까진 아니고 헤더를 좀 보았을뿐입니다.

Server 는 평범한 NginX 에 전송은 gzip으로 합니다.


자신들의 말고 헤더만으로 간단히 추측이 가능하네요.

( 저랑 다른 의견 가지신 분들은 댓글 주세요 )


맥스나우의 구조는 프론트에 NginX로 되어있는 시스템뒤에서 php 나 jsp와 같은 웹 언어 대신 단지 C++로 모듈을 개발한것으로 보입니다.

당연히 C++로 했으면 데이터 처리는 DB보다는 C++상에서 메모리에 저장하는게 개발이 편하겠지요..

(빠르기도 하구요)


그냥 현재로써는 제 추측은 여기까지입니다.

NginX를 이용하였고, 백단에는 C++로 된 모듈을 이용하고, 그 뒤에는 거래의 일부만 어딘가에 저장하는..

기본적으로 오픈소스가 아닌 모듈을 사용하니 해킹이 상대적으로 어려울 수도 있겠지만, 반대로는.. 예상치 못한 버그 & 메모리 릭이 존재할 수 도..


뭐 그냥 그렇다는겁니다.

워낙 맥스 나우가 다른 거래소들과 비교하길래..

저도 분석좀 해봤습니다.

사실 저도 거래소를 만들면 Node.js 를 활용 할 생각을 했습니다.

Socket.io 를 활용하구요.

어차피 기본적으로 하나의 언어로 통일 할 필요는 없어 보이고, 프론트 단은 PHP로 처리하고 , 백단의 거래 트랜젝션 부분들만 Node.js로 활용 하면 된다고 생각하는데....


다른 개발자 분들의 고견이 듣고 싶습니다 ^^;

3

calmlake79님의 서명

CCnex

당신의 인생과 인류의 미래를 바꿀

그 놀라운 경험


댓글 13
  • ?
    맥스나우 저도 좀 뜯어 봤는데요..
    제가 예측하기로는 웹 페이지 자체는 파이썬을 썼을 가능성이 높습니다. 파이썬이라는 언어가 C++로 만든 모듈을 쓰기가 편하거든요.
    그리고 시스템 백단은 예상대로 C++로 로직을 제작했을 거에요. 그리고 그걸 파이썬 모듈로 활용했을 거 같네요.
  • @묵향9
    헤더에 NginX라고 되있는건 게이트웨이일뿐일수도 있겠네요
  • ?
    @calmlake79
    예.. 게이트웨이 맞습니다.. 요즘 nginx를 그 용도로 많이 쓰죠.. 안정성이 짱이거든요.
    그리고 뒷단에 fastcgi 형태로 구성되어 있을거에요. (파이썬,PHP,Ruby,Node.js 등등이 지원)
    요즘 대형 사이트는 거의 다 이렇게 구성되어 있습니다.. 시스템 아키텍쳐상으로 구성하기도 용이하고 성능도 꽤 잘 나옵니다.
  • @묵향9
    전 주로 Node.js 를 선호해서요 ㅎㅎ;
    페이지 구성 자체는 Apache + PHP 로 개발하고,
    백단의 데이터 혹은 Ajax 처리는 Node.js 로 처리하면 개발도 편리하고, 성능도 만족스럽구요 ㅎㅎ;
  • ?
    @calmlake79
    Apache 대신 Nginx 를 써보시길.. ^^
    제가 테스트 해본 결과로는 대략 30-50% 퍼포먼스 업그레이드 가능합니다. (물론 상황에 따른 설정도 필요)
  • @묵향9
    제 판단으로는..
    NginX 가 정적인 파일( ex: css,gif 등등..)에서는 그 이상의 성능향상도 있다고 알고 있지만.
    우선은 아직 저런 규모 있는 서비스를 하지 않아서 그냥 편리하게 아파치 쓰고 있어요 ㅎㅎ;
    거래소가 터질만큼 사람들이 몰리거나, coinhighway가 그렇게 몰린다면..
    바로 넘어갈지도요. ( 그전에 HAProxy 써보고 싶습니다 ㅋㅋ )
  • 아직 뜯어보진 못했습니다만...
    주식거래소가 결국은 가장 완성된 형식이 아닐까요?
    나스닥, 코스피, ... 등의 거래소에선 안정성 및 빠른 속도를 위해서
    java 계열의 프로그램 대신 c/c++ 계열의 프로그램으로
    운영되고 있는것으로 알고 있습니다.
  • @duckking
    네.. 그게맞죠.
    다만 아직 전세계적으로 암호화폐의 시장이 그정도 규모가 안되기에..
    대부분은 PHP로 버티는거고 이제 하나둘 나오기는 하는데..
    제가 JAVA를 별로 좋아하진 않지만, 기존 금융권에서도 많은 회사들이 JAVA로 돌아가긴 합니다.

    제가 거래소를 만든다면 ( 꿈은 꿉니다.)
    아마, 기존 금융시스템에 있던 많은 시스템들을 도입할꺼 같습니다 ^^;
  • ?
    node.js나 python으로 웹페이지를 개발하더라도 앞에 게이트웨이로 nginx 많이 씁니다. php를쓰기위해서 nginx를 쓰는게 아니죠..
  • ?
    웹페이지를 php, python, node.js등등 어떤걸 쓰냐가 문제가 아니라 거래를 처리해주는 엔진을 C++ 로 직접 짰다는게 핵심이죠. mysql 같은 데이터베이스를 쓰게되면 거래소를 구현하기에 너무 많은 기능이 있지 않습니까? 필요한 부분을 C++로 직접짜서 구현하고 웹페이지는 다른 스크립트언어를 기반으로 개발했을거 같습니다.
  • 제가 잘 몰라서 그러는데 DB를 안쓰고 메모리많은로 저렇게 방대한 데이터를 저장할수가 있는건가요?
    그럼 프로세스를 재 시작하면 DB정보들은 어떻게 되는건가요?전 이부분이 궁금하네요..제가 메모리DB는 사용을 해밨는데...
    그리고 Back단은 c++로 하던 java로 하던 그외의 언어로 하던 큰 차이는 없다고 생각되네요..(나중에 선물옵션과 가튼 정말 0.0001초 차이의 거래를 위한 API를 제공하거나 그런 경우가 아니라면요..
  • ?
    @fourseam
    방대한 데이터가 몇기가의 데이터를 말하는지 잘 모르겠습니다만 수십기가의 메모리를 가지는 서버도 흔합니다. 저정도 거래 데이터면 몇기가 안될거 같은데요. 자주 참조되지 않는 로그등은 파일로 남길거고 자주 액세스되는 데이터만 메모리에 저장할것입니다.
    메모리디비의 프로세스 재시작하는 경우는 어떻게 처리하냐면 redis 라는 key-value store의 경우에는 데이터를 입력하면 우선적으로 메모리에 저장을 하고 파일 시스템에 로그를 남깁니다. 그리고 주기적으로 전체 데이터를 파일로 백업하고 그 이후를 다시 로그로 남깁니다. 도중에 프로세스가 종료되고 다시 실행되면 전체 데이터가 남겨진 파일을 우선 읽고 남겨진 로그를 기반으로 순차적으로 데이터를 복구해나갑니다. 그래도 100% 데이터가 안전한건 아니구요. 더 안전하게 하려면 똑같은 데이터를 2중 3중으로 나눠서 미러링하면 됩니다. 더 안전하게 할수록 접근 속도는 떨어지고 더 빠르게 할수록 안전성은 떨어집니다. 적정선에서 타협봐야죠.
  • @카디
    답변 감사합니다~~
default debug random = 0 / type = READ / detected = READ

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
1841 개발 이얍 첫글이다! 개발자 공간이라 합니다... 첫 글로 올려 봅니다. 많은 개발자 분들끼리의 외계어를 공유해보도록 해요.. 어찌하면 Heap Memory를 이쁘게 컨트롤 할 수 있을지 생각해 봐요 ㅋㅋ 7 0 2320
calmlake79
2014.02.12
1840 개발 개발자 게시판이군요!!!!! 근데 Tech 메뉴에서 좀 아래로 내려가는게 좋을거 같네요. 이런 게시판 누가 관심을 가진다고 맨 위에 있는지ㅋ 아무튼 우리 개발자들 만세! 3 0 2214
coincoin
2014.02.12
1839 개발 [질문] Wallet Daemon 에서.. 코인의 총 발행량을 확인하는 방법이 있을까요? 제목대로입니다. 데몬에서 rpc로 통신할때.. 코인의 총 발행량을 확인하는 정석의 메커니즘이 혹시 있나 궁금합니다. 사실 기본적으로는 블럭당 코인 * 블럭수 ( Block height ) 을 해서 반감기 ... 6 0 2529
calmlake79
2014.02.13
1838 개발 채굴기 모니터링 프로그램 개발 채굴기 cgminer를 원격에서 제어하는 프로그램을 개발 중에 있습니다. 지금 목표는 채굴기의 목록을 관리하는 서버와 채굴기에서 agency 역활을 하는 클라이언트 프로그램을 개발 하려고 합니다.... 7 file 0 5282
데포라쥬
2014.02.13
1837 개발 개발자 게시판이 생긴김에 화두를_ 멀티풀! api를 이용한 풀 선택 방법이 있고, 서버에서 마이너에게 날리는 방법이 있고... http://www.ddengle.com/board_free/364240 이 게시물을 참고 하시면, 풀 선택을 웹에서 조정 가능합니다. 해쉬 ... 4 0 2417
채플린
2014.02.13
개발 개발자적 측면에서 한번.. 맥스나우를 뜯어 보았습니다 (...) 맥스 나우.. 요즘 참으로 핫한 거래소죠.. 자신들은 php 도 안쓰고, NoSQL , Oracle 조차 안썼다고 자랑하는.. 오로지 C++라고 자랑하길래.. 한번 뜯어 보았습니다 (...) 뭐 뜯는다고 해킹까진 ... 13 0 2897
calmlake79
2014.02.15
1835 개발 mcxNow api 써보신분 계신가요? mcxNow 게시판에서 공개한 주소로 시세관련 데이터 request보냈는데,.. 돌아온 데이터가 현재꺼가 아니고 한참전꺼가 옵니다.. 그리고 가격이 변하지 않고 항상 현재가가 0.002356 이네요.... 먼... 10 0 2268
꿀맨
2014.02.18
1834 개발 mcxNow api 로 주문 넣어 보신분 계실까요? api 설명 페이지에 사용자를 구분하는 쿠키가 로그인할대 나오고,. api 이용시 이 값들을 쓰라고 되어 있는데... 로그인할때 어디에 나오는 건지.. 도대체가... 알수가 없네요.. 혹시 해보신분 ... 22 0 2041
꿀맨
2014.02.18
1833 개발 컴공 4학년 입니다. 안녕하세요  컴퓨터공학과 4학년인 대학생입니다. 친구의 권유로 코인관련 코딩을 시작하려 하는데요. 코인을 시세에 따라 사고 파는 프로그램을 만드려합니다. 어떤 개발환경에서 어떤 언어로 ... 7 0 4642
프로프리지
2014.02.24
1832 개발 웹호스팅 추천좀 해주세요~ 서버호스팅까지는 필요 없을거같고.. 저렴한 웹호스팅.. 안정적인데로다.. 추천좀 해주세요.. hostinger.com 여기 썼었는데 db계정이랑 ftp비번같은걸 평문으로 저장하는지.. 그냥 메일로 다 보... 5 0 3337
천루
2014.03.01
1831 개발 Transaction Malleability & Why It Didn’t Affect Cryptsy http://blog.cryptsy.com/ Transaction Malleability & Why It Didn’t Affect CryptsyI’m sure there are many of you wondering just how many platforms out there were affected by the m... 1 0 2113
채플린
2014.03.01
1830 개발 개발용 PC추천좀.. 개발용으로 쓸 PC를 한대 사려고 하는데요~ 그냥 보통 회사에서 주는 PC로만 개발을 해와서 개발용으로 PC에 대해서 어떤 부분을 보아야 할지 잘 모르겠네요~ 그냥 왠만하면 싼걸로 하려고요-0- ... 6 0 2675
fourseam
2014.03.03
1829 개발 신규 코인 개발하실분 있으신가요?      아직 독도코인 출시 초기라 시간적 여유가 없어 바로바로 답변은 못드리겠지만,    어느정도 안정화 되고 나면 향후 새로운 코인 개발하시는 분들께 도움을 드릴 의향이 있습니다 (혹은 오... 12 0 3771
dokdocoin
2014.03.04
1828 개발 Coinbase Bithackerton! http://bithackathon.com/get-started.html 4일남았네요. 진작알았으면 ㅠ 1 0 2325
더블유비
2014.03.13
1827 개발 넵 그렇습니다.. 개발자분들만 (...) 우선은 쉬운 문제 부터 나갑니다.. 5 file 0 2276
calmlake79
2014.03.21
1826 개발 VPS는 처음입니다.. 이제까지는 고전적인 방식의... PHP + MySQL + jQuery 조합으로 뭔가를 뚝딱 익숙하게 만들어서 Shared Hosting 에 올리는 것을 전문으로 하고 있었는데 이번에는 만들려고 하는것에 웹소켓을 꼭... 4 0 3071
굳모닝
2014.03.23
1825 개발 PCI슬롯순서와 버스번호 매칭이 가능할까요? cgminer가 GPU 마이닝시 OpenCL을 사용하고 온도나 팬속도, GPU/메모리 클럭 등 GPU 상태관리에는 ADL을 사용합니다.   문제는 Windows용 OpenCL 에서 AMD 확장옵션으로도 PCI버스번호를 얻어올 ... 2 0 4053
canelia04
2014.03.25
1824 개발 이런 코인이 생긴다면,.... 그냥 아침에 뜬끔없이 생각난건데요... # 코인명 : No Criminals Coin # 코인의 목적 : 범죄행위에 대한 사실 및 범죄자를 제보한 시민에게 제보내용 및 수준에 따라 무료로 지급 # 총발행량 : 1... 9 0 2799
꿀맨
2014.04.02
1823 개발 크롬 익스텐션으로 입력폼 값 넣기 음모를 꾸미느라 뭘 좀 하다가 도중에 막혀가지고 답답해서 여기서 의견 좀 구합니다. 뚫어줄수 있는 한두마디만 좀 얻고 싶어서요... 크롬 익스텐션 개발 방법에 대한 자세한 내용은 https://de... 5 file 0 3665
굳모닝
2014.04.05
1822 개발 아마존 클라우드(AWS)써보신 분 계신가요? 웹서비스를 운영 하려고 하는데  국내 웹호스팅,서버호스팅 서비스에 비해서 쫌 어떤지 궁금합니다ㅎㅎ 혹시 써보신분 계신가요~ 12 0 6715
fourseam
2014.04.29
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 93 Next
/ 93
default debug random = 0 / type = READ / detected = READ