티스토리 뷰



앞서 '동접의 의미' 에서 실시간 메시징 서비스의 동접에 대해 개괄적으로 이야기하였다.  본 글에서는 래셔널아울 서비스를 이용하는 것이 왜 비용적인 측면에서 최선인가에 대해서 이야기하고자 한다. 즉, 래셔널아울 홈페이지에 내걸린 '기술이 합리적인 가격을 만듭니다.'란 문구에 대해서 설을 한번 펴보고자 한다.




먼저, 일반적으로 실시간 모바일 서비스를 만드는 몇 가지 방법에 대해서 살펴보자.



Node.js Socket.io로 쉽게 개발?


래셔널아울 서비스를 개발할때와 서비스를 소개할때 Node.js와 Socket.io로 쉽게 실시간 모바일 서비스를 개발할 수 있는데 돈 주고 굳이 사용할 필요가 있나? 라는 질문을 들은 적이 있다. 


그래서 내가 그럼 동접은 얼마나 처리해 봤나?라고 반문하면 최대 2천까지 동접 처리 가능하다는 이야기를 들었다.


우리가 실시간 모바일 서비스를 서비스하고자 할때는 상용으로 서비스가 활성화되고 사용자 증가로 인한 서버 운영비를 고려해야 한다. 즉, 이러한 기반으로는 프로토 타입이나 학교 프로젝트 규모의 데모로는 상관이 없으나 상용으로 서비스하기에는 무리다. 즉, 10만 동접 환경만 되어도 동접 처리로만 최소 50대의 서버를 운영해야한다. 비용으로만 최소 월 1500만원 이상이 서버 유지비로 지출해야 한다는 의미다.


물론 앞으로 Node.js, Socket.io의 성능이 좋아질 수 있지만 그것에 의존하기는 무리가 있다.


MQTT, XMPP 기반으로 개발?


앞서 '동접의 의미' 글에서도 언급했는데 이는 오픈소스로도 또 상용으로도 이용되고 있는 검증된 메시징 프로토콜임에는 틀림없다. 그러나 이를 통해 완성한 메시징 서비스의 품질은 실시간 메시징이라고 하기에는 전송 속도가 느리다는 치명적인 한계가 있다. 즉, 이를 기반으로 실시간 모바일 서비스를 개발한다는 것은 기반 소스를 분석하여 튜닝하는 작업, 인력 투입, 개발 기간등 많은 자금과 시간이 필요하지만 그 결과물의 품질을 보장 받기 어렵다는 근본적인 문제를 내포한다. 이는 십수년 동안 해당 프로토콜로 만들어진 제품들의 성능이 대변하고 있다. 즉, 전송속도로 대변되는 메시지 품질의 해결 여부, 충분한 동접처리를 통한 서버 운영비용 절감에 대한 보장이라는 큰 산이 가로막고 있다.


TCP 소켓을 통한 생개발?


개인적으로는 앞서 두 선택보다는 나은 선택이라고 생각한다. 가장 일반적이고 고전적인 방식이다. 그러나 이 방법은 카톡이나 대형 게임사처럼 오랜 기술과 노하우를 축적한 곳을 제외하고는 인력, 비용, 시간, 품질에 대한 위험부담을 감내해야만 한다. 스타트업이나 중소기업에서는 시간, 비용, 인력에 대한 투자의 결과로 나온 서비스의 품질이 받쳐주지 못하거나 서비스 운영비가 매출보다 클 경우 회사의 존립과 직결된다.



100만 사용자가 이용하는 모바일 메신저 운영비는 얼마나 될까?


만약 100만 사용자가 이용하는 실시간 메신저를 개발한다고 가정할 때 서버 운영비를 생각해 본 적이 있나요?


사용자가 증가할 수록 실시간 데이터 처리, 동기화 처리등 기술적, 성능적인 측면, 서비스 개발 기간, 개발 인력 검증, 개발비 등의 문제 해결도 결코 만만치 않을 것이다. 


그러나 이를 논외로 하고, 순수하게 서버 운영비 측면에서만 보자. 


서비스 성격에 따라서 기술 노하우의 축적 정도에 따라서 천차만별의 결과가 나올수 있다. 


예전에 100만명 사용자가 이용하는 온라인 게임을 운영하다 한달 서버 운영비가 수십업씩 발생하여 매출이 발생함에도 적자로 고전하다 게임운영을 접은 케이스를 전해들은 적이 있다. 


이런 사태의 가장 큰 원인이 바로 동접에 있다.  


100만 사용자 중 10%가 동접 상태라 가정시 이러한 비용이 나올려면 서버를 수천대 운영해야만 가능한 비용이다. 즉, 서버 1대가 백단위의 동접을 처리해야만 나올수 있는 비용이다.


위의 예는 실시간 서비스 운영의 나쁜 예이다. 그러나 실제로 주위에서 실시간 모바일 서비스 운영 업체를 보면 동접이 수천정도가 태반인 것이 현실이다.  자칫하면 나쁜 예가 될 수도 있다는 의미다.  


여러분이 만약 100만 사용자가 이용하는 모바일 메신저를 개발한다고 가정했을 때 서비스 운영비가 얼마나 발생할지를 생각해 본적이 있나요? 


동접 처리를 위해서 몇 대의 서버를 운영해야 할지는? 


메신저의 경우는 게임보다 피크 타임 동접률이 높을 것이다. 그래서 최소 20~30%의  피크타임 동접율을 가정하여 운영해야 할 것이고 기술 노하우에 따라 편차는 있을테지만 2천~3천 동접을 처리한다고 가정시 동접처리용으로 최소 100대의 서버를 운영해야 할 것이다. 


래셔널아울 서비스를 이용하여 실시간 메신저를 개발한다고 가정해보자. 메시지 품질보장, 개발 기간 단축, 개발의 편이성 제공, 인건비 감소 등의 잇점은 차치하고라도...


서버 운영비에 포커스를 맞추어보자.


래셔널아울 메시징 서버는 동접처리를 대신한다. 따라서 동접처리를 위해 별도의 서버를 구성할 필요가 없다. 다만, 래셔널아울 서비스를 통해 단말앱과 데이터를 수/발신할 앱서버를 몇 대 등록하면 된다. 그 뒤 메시지 수/발신은 API호출과 이벤트로 실시간 처리해 준다. 즉 앱서버를 2~3대만 운영해도 되어 운영하는 서버수를 95%이상 줄일 수 있고 이는 곧 비용절감으로 이어진다.

댓글