에브리타운 for Kakao 프로젝트시에 아키텍처를 잡을때 NoSQL 도입을 검토했었는데 당시 CouchBase를 제외하고는 딱 이거다 싶은 솔루션은 없었던거 같다.
물론 Redis를 캐쉬서버 및 보조 Persistence용도로 사용하긴 했지만 결국 메인 저장소는 Mysql을 사용했고 대신 Scale up을 위하여 HandlerSocket을 사용했었다.
HandlerSocket이 뭔지 궁금하신 분은 아래 링크 클릭!
https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL
에브리타운 개발시에 개발 언어가 PHP이었기 때문에 Connection Poolling도 사용하지 않았고 (SQLRelay 등의 솔루션이 있긴 했지만 그닥 믿음이 가지 않아 사용하지 않음) ORM등의 사용도 하지 않은 상태였기 때문에 Handlersocket코드로 바뀌는데 크게 교체 비용이 들어가지 않았었다.
대신 읽기가 어려운 코드가 되 버렸고 DBA의 모니터링 및 관리가 어려운 서비스가 되 버리는 단점이 있긴 했는데 그정도 단점은 충분히 커버할만큼의 성능상의 잇점이 있었다.
Handlersocket 개발자의 벤치마크 처럼 엄청난 성능상의 잇점은 없었지만 대략 1.8배 ~ 2배 정도의 속도 향상은 있었었다. ( 그정도가 어디냐 ㅋㅋ )
현재 작업중인 새로운 게임 서버에서도 사용을 검토하고 있는데, 현재는 주 개발 언어가 java가 될것 같다.
에브리타운 때와는 좀 다르다고 생각되는 점은 일단 java에서는 기본적으로 PHP보다 성능이 좋으므로 handlersocket 사용시와 아닐때의 차이가 크지 않을것 같고 대신 다른 단점들 - 코드 readablility , DBA 관리 측면 - 이 더 커지게 되는것은 아닌지 고민이 된다.
또한 handlersocket 프로젝트가 지속적으로 업데이트 되지 않는 부분도 불안감이 더해진다.
'프로그래머로 살아가기 > mysql' 카테고리의 다른 글
mysql에 대용량 데이터 import 하기 (0) | 2009.06.08 |
---|