게임 서버 가지고 논쟁하는 거 자체가 좀 짜증스럽긴 하지만 한마디 하렵니다.
레토릭에 살짝 놀랐네요
그냥 빌더 internet socket으로 동접 천 넘게 붙일 수 있습니다. 그냥 쉽게 코딩해도... 그냥 all in one이라도
리눅스가 퇴출된 개발자의 선택 -> 성능에 대한 선택이죠. 당연히 퇴출 된 겁니다. 당시에 IOCP가 가장 좋은 효율을 보였네요. 처음 IOCP의 가능성과 성능을 리니지가 증명했습니다 그 이후 안정적인 네트워킹을 위해서 IOCP를 사용하게 된 겁니다. 리눅스 멀티 코어 지원 제대로 한건 얼마 되지 않습니다. 리눅스 커널 1.x 버전 때는 제대로 멀티 코어도 지원 못했죠.
게임 서버 하나 제대로 돌면 10년도 돌아야하는데 개발 안정성이 없는 리눅스에서 참 짜증나는 사건들 많았습니다. 이걸 열거하자면 몇몇 게임 회사들 이야기를 스터디 케이스로 해야하는데 말하기도 짜증스럽네요
IOCP 코딩이 지저분해진다고 하는데 어떻게 짜면 지저분해지는지가 궁굼하네요 worker thread model이나 제대로된 프레임워크 없이 막코딩하는건 아닌지 우려되네요
------------
많이 담아보겠다고 쪼개고 쪼갰다가, 플레이어 하나의 접속이 비정상적이라 프로세스가 행잉되었을때 모두 나가떨어지는 서버를 만든다면, 혹은 일주일에 한번 이상씩 수시간 점검하며 컴팩션해야 하는 시스템을 만들었다면, 사용자들은 자연히 빠져나감과 동시에 손배를 요구하게 됩니다. 기존엔 서비스사의 이용약관에서 한계를 우기면 되는식이었지만, 요즘은 소비자고발/보호시스템에 의해 그들의 요구를 많이 따라야 하구요.
>> 동접이라.. 황당한 상황은 모르겠지만, 한계 상황은 모두가 아는 상황이라 어느 정도 밀어 넣을지 모르겠네요 mmorpg 평균 물리적인 서버 당 4000 ~ 5000 정도 넣는데 이게 문제인 경우는 많이 못 봤네요 빌더 인터넷 소켓도 그것보다 효율이 좋습니다
FreeBSD나 솔라리스를 써보셨는지 모르겠는데, IDC에서 누가 유지보수할까요? 퍼블리셔에서 유지보수해야하는데 요즘 ls 치는 것조차 손을 벌벌 떠는 분들이 많지요. 유지 보수 자체가 안되는 겁니다
그리고 최근 기술의 발전으로 BSD나 솔라리스의 네트워킹이 좋아졌다고 하더라도 그 동안 잘 만들고 레퍼런스 넉넉한 윈도우에서 다른 OS로 갈 수 있을까요?
캐주얼 게임이던 MMORPG던 BP는 모든 게임이 다릅니다. 한 300억 들어간 테라의 수익 분기점이 동접 얼마일가요? 일괄적으로 이야기하는 건 애매하네요
-----------------------------------------
게임 서비스에 있어서 캐쥬얼 게임이라면, 기존의 기획들에서, 동접 2000명이 손익분기점쯤 됩니다. MMORPG라면 3~4000은 되어야 될테구요 (투입자금이 많았다면 이 또한 유동적이죠). 물론 충성심높은 소수의 돈많은 플레이어를 확보하고 그들에게 수억씩 뜯어낼 수 있는 기획을 실현해 낸다면 이 또한 해당사항 없는 이야기겠죠. 위의 동접수를 다른 말로 해석하면, 500명 수용가능한 서버 12대만 가져도 어느정도 벌이는 할 수 있단 얘기구요. 이 이야긴 그냥 참고하시면 되겠습니다.
>> 중국이나 동남아 수출해서 안정화 해본 경험이 있는 이야기인지 모르겠지만, IDC 자체가 비싸기 때문에 서버 당 동접이나 안정성을 고려 사항으로 삼습니다. 동접 5만이라면 -;; 500짜리 서버로 가정해서 100대 넣으면 되겠네요. 이거 유지 보수 제대로 될 거 같나요?
-----------------------------------------
Windows기반 서버가 기존의 Application 개발자들에게 많은 편의를 제공하는 부분이 더 큰 메릿이었을것 같구요.
>> 윈도우 서버가 무슨 메리트가 있었을까요? 개발자에게 무슨 편의를 제공했을까요? IOCP로 했을때 서버가 잘 안죽고 잘 버텨준 것이 마음을 사로잡았던 것 같은데요
제가 컴맹이라 잘 모르지만 커널 콜로 열심히 퍼포먼스를 올리다가 커널 버전 올라가면 아득해진 경험이 있네요 히피의 개발 환경인 것은 인정하는데, 엔터프라이즈 환경에서 왜 리눅스가 올라가지 못하는 것이고 왜 BSD가 게임 서버 주류 OS가 되지 못하는지를 잘 생각해야할 겁니다.
|
모든 비동기 처리에 IOCP를 애용하는 저로서는 별로 납득이 안가는 이야기입니다만,
게임 서버의 성능에 OS가 미치는 영향은 그리 크지 않다는 의견에는 동감합니다.
저희도 7년 째 IOCP를 사용하는 게임서버를 돌리고 있지만,
리눅스에서 select 가지고 8천명 붙이는 분도 계시거든요.
MMX-166 에 5천명을 받아 처리한 일화로 유명한 채성훈님이죠.
서버 개발 초창기에 제 멘토셨습니다.
2005년 쯤 잠시 함께 일할 때, 붙어서 꼬물거리는 걸 제 눈으로 실제 봤으니...
말씀대로 리눅스에서 관리는 쉽지 않습니다만,
윈도의 관리도 일일이 원격 터미널을 열어야 한다면 만만치 않죠.
서버란 게 어차피 바탕화면에 노출되는 것도 아니고 적절한 외부 인터페이스를 제공해야 하는데,
저희는 오히려 Cygwin이 제공하는 Posix 환경에서 ssh를 사용한 한 방 제어를 선호하고 있습니다.
요즘에는 xmlrpc 에 맛들려 심지어 웹페이지로도 건드릴 수 있게 만들었습죠.
이런 경우 서비스가 굴러가는 환경이 리눅스냐 윈도냐는 별 의미가 없어지게 됩니다.
마치 PC 조립을 부탁받을 때와 비슷할 것 같아요.
그냥 대기업 물건 사서 AS 잘 받으라고 이야기 하죠.
하지만 제가 서비스할 서버를 구성한다면 리눅스를 선택하겠습니다.
2006년 쯤 윈도 게임서버를 적용한 업체에 MS가 제시했던
EC 라이센스도 많이 당황스러웠고요.
그리고 퍼블리셔 소속 SE 들의 시스템 활용 능력은 정말 대단하더군요.
함께 일하며 많이 배우게 됩니다. rsync 를 사용한 게임서버의 자동패치환경까지 제시하는데...
ls 명령어 겁내는 수준 절대 아닙니다. 덕분에 SE 라는 직업이 위대해 보이기 시작했어요.
아무튼 저보다 훨씬 다양한 경험을 하신 분의 의견이시지만 그래도 감히 덧붙이면,
서버선택은 어디까지나 편의성이지 소켓의 성능 때문은 아니라고 생각합니다. ^^;;