출처 Flash Game Revolution! | 갬메이커
원문 http://blog.naver.com/zencraft/150000928727
작성일 : 2004년 08월 20일
작성자 : 김호광 (testcode@korea.com)


백섭이 뭔가요?
방학이 된 우리 미란이는 늦은 아침 식사 후에 온라인 게임을 즐기고 있었다. 몇 시간 게임을 즐긴 끝에 그 게임에서 나오기 힘든 “와장창 무지 강한 검” 아이템을 얻게 되었다. 이 아이템은 현금 거래도 되고 매우 희귀했기 때문에 미란이는 너무나 기뻐했다. 하지만 잠시 후 갑자기 서버가 끊겼다는 메시지가 나면서 게임 접속이 안됐다. 몇 시간 후에 온라인 게임 서비스가 정상으로 돌아오자 미란이는 바로 게임에 접속해 게임을 플레이 했다. 그런데 자기가 획득한 “와장창 무지 강한 검”이 없는 것이 아닌가?

놀란 미란은 게임 웹 페이지로 접속하여 항의하려고 했다. 이미 게시판은 백섭이라며 폭동에 가까운 상태였다. 결국 아이템은 복구되지 않았고 미란은 백섭이 뭔지는 모르지만 무지 나쁜 기억을 가지게 되었다.

오픈 베타 온라인 게임이나 프리 온라인 게임을 즐기다 보면 갑자기 게임 서버가 다운되는 현상이 있다. 이 경우 유저들이 서버가 다시 오픈될 때까지 있다가 게임에 접속했을 때 자기 아이템이 없어졌거나 애써 레벨업 한 자기 캐릭터의 능력치가 몇 시간 혹은 하루나 이틀 전까지 되돌아간 경우 그 온라인 게임의 홈페이지는 아수라장이 된다. 개발사는 사과 공지와 선별적인 구제 혹은 침묵으로 일관하고 다시 이런 일은 뫼비우스의 고리처럼 재현된다.

왜? 백섭이라는 현상이 일어날까? 이에 대한 사항을 이야기해보도록 하자.

백섭이란 약자를 좋아하는 한국 게임 유저의 특성에 맞춘 약어이다. 정식 용어는 Back Service라는 말로 일정 서비스 시간 이전의 데이터로 되돌아갔다는 의미이다. 간단히 말하면 오늘 정보가 아니라 어제 정보나 한 달 전 유저 정보로 돌아간다는 것이다.

온라인 게임 유저들이 오픈 베타 게임을 즐길 때 빈번하게 나타나는 현상이 바로 백섭 (Back Service)이다 이런 현상이 왜 일어나는지에 대해서 알아보자.

MMORPG나 온라인 게임은 한 명이 즐기는 게임이 아니기 때문에 개인 정보를 서버 (Server)에 둔다.

서버란 영어 단어 그대로 서비스를 제공하는 주체이다. 서버는 유저의 정보를 저장하는 공간과 프로그램을 갖는데 이를 DB(Daatabase)라고 말한다.

온라인 게임은 인간이 만든 것이기 때문에 버그가 일어난다. 우리가 윈도우를 사용하다보면 인터넷 익스플로어의 다운 현상이나 프로그램의 다운 현상을 자주 살펴볼 수 있듯이 아무리 잘 만든 온라인 게임이라도 비정상적인 실행이나 운영체제(Windows, Linux 등)의 실행 버그, 해킹, 온라인 게임 서버 프로그램의 오류로 인해 온라인 게임 서비스가 중단되는 상황이 발생한다.

이 경우 게임 서버는 갑자기 다운되는 상황이기 때문에 게임 DB에 정상적인 유저 정보를 저장하지 못하고 다운된다. 이 때 짧게는 몇 초에서 길게는 하루 사이의 유저 정보가 비게 된다. 유저 정보의 백 서비스 현상이 몇 초의 정보에서 하루 이틀 사이의 정보가 되는 이유는 게임 서버가 유저 정보를 언제 저장하느냐에 따라 다르다.

1. 유저 정보가 변경될 때마다 DB에 저장한다. -> 짧은 시간의 백 서비스
2. 유저가 로그 오프하고 나갔을 때 DB에 저장한다. -> 긴 시간의 백 서비스
3. 일정 시간 DB에 저장한다. -> 시간에 따른 백 서비스

일반적으로 게임 서버가 안정하다는 가정에서는 유저가 로그 오프되었을 때 DB에 저장하는 것이 서버와 DB에 대한 효율이 좋다. 그러나 베타 상태의 온라인 게임에서 잦은 서비스 패치와 안정성 문제로 인해 실질적으로 이런 온라인 게임 서버 구조로 이행하기 힘들다.

따라서 유저 정보가 변경될 때마다 혹은 일정한 정보를 가졌을 때 저장하는 방식이나 일정 시간마다 저장하는 방식을 사용하는 경우가 많다. 많은 게임의 경우 위 3가지 방식을 섞어서 사용하는 경우가 많다.

 

백 서비스 문제에서 가장 유저들의 비난을 받는 부분이 획득한 아이템을 잃어버리는 사태이다. 많은 상용 온라인 게임의 경우 아이템 거래 정보나 아이템 획득 정보를 별도의 DB나 로그 파일 (일정 정보를 저장하는 파일)로 남겨서 아이템 사기나 백 서비스 문제가 일어났을 때 아이템을 되돌려 줄 수 있도록 하고 있다.

그렇다면 독자 여러분이 의문을 제기하는 사항이 있을 것이다!

“그럼 내가 즐기는 온라인 게임은 왜 백섭이 나타나서 아이템을 잃어 먹으면 꿀 먹은 벙어리인가?"

이유는 대략 3가지로 정리할 수 있다.

첫째, 로그 정보를 분석하고 처리하는데 너무 많은 인력이 들어 무시한다.
둘째. 게임 서버에서 별도 로그 정보를 안 남기고 있다.
셋째, 로그 정보가 완벽하지 않다.

로그 정보는 온라인 게임 서버가 실행될 때 유저 정보의 아이템 정보가 각종 디버그 정보(게임 버그를 잡기 위한 정보)를 담고 있기 때문에 파일 용량이 수 십 메가에서 수 백 메가의 용량을 자랑한다.

불행하게도 우리 개발자들이 주 5일 근무 시대에 주 7일 근무와 야근, 특근을 가리지 않고 개발하더라도 절대적인 개발 시간이 더 필요한 실정이다. 상용화 경험이 매우 풍부한 게임 개발사가 아니라면 대부분의 게임 개발사의 온라인 게임은 제대로 된 운영 툴이 없다. 데이터 백업 툴, 로그 분석 툴, 운영자 툴 등의 각종 툴을 개발할 새도 없이 오픈 베타로 내몰린 상태이다. (운영자는 그런 열악한 상태에서 게임 화면을 보면서 유저의 각종 불만을 몸으로 때우며 열정으로 운영의 원활함을 위해 노력하고 있을 것이다.) 따라서 로그 파일을 남겼더라도 로그를 분석할 툴이 열악하거나 없을 수도 있는 것이다.

이럴 경우 정책적으로 혹은 인력의 한계로 인해 잃어버린 아이템을 되돌려줄 생각을 못하는 것이다. 열성 유저의 경우 강력한 항의로 일부 선별 구제되는 경우가 있긴 하지만 현실적으로 수만 명에서 수 십만명의 유저 정보에서 최종 아이템 정보를 추출하여 유저 정보 DB에 되돌려주기는 정말로 끔찍한 작업에 속하기에 개발사 입장에서는 며칠 게시판과 전화, 메일로 욕을 먹더라도 침묵하게 되는 것이다.

로그 정보를 안 남기는 경우는 대부분 서비스 준비가 완벽하지 않은 상태에서 급하게 오픈 베타를 연 신생 게임 업체나 초보 개발자의 경우에 종종 발생하는 경우이다. 이 경우에는 어느 시점이 되면 개발자의 필요와 회사 내부, 운영자의 요청으로 인해 로그 파일과 로그 분석 툴 등이 만들어진다. 그 동안은 베타 유저들이 조마조마한 마루타가 된 기분으로 게임을 즐길 수밖에 없다.

마지막으로 로그 정보가 부정확할 경우는 로그를 남기는 기술적인 문제로 인한 것이다. 기술적 미비로 인해 온라인 서버 게임 프로그램이 다운될 때 파일이나 DB에 현재 메모리에 있는 유저 정보를 저장하지 못하고 다운되는 상황인 것이다.

온라인 게임 서버 프로그램이나 서버 OS가 다운되는 상황에서는 제아무리 로그를 남길려고 하더라도 제대로 로그를 남기기 힘든 것이 사실이다. 서버 개발자들 사이에는 불행한 1%라는 말로 잃어버리는 게임 아이템에 대한 이야기를 한다. 정말 개발자 입장에서는 어떻게 처리하기 난감한 상황이다.

최근 일부 온라인 게임에서는 이런 다운이 일어났을 때 유저가 가지고 있는 아이템에 대한 정보를 암호화된 파일로 남겨 놓아 백 서비스 문제에 대한 보완을 하려는 회사도 있다. 아무래도 현금 거래가 되는 아이템을 잃어버리는 상황은 메가톤급 폭발력이 있는 이슈이기 때문이다.

그런데 같은 온라인에서 서비스를 하는 은행, 증권사는 이런 문제가 신문 지상에 나오지 않는다. 이는 수십 년 된 노하우가 있기 때문이다. 금융권 서버 프로그래밍에서는 99.999% 가동률이라는 말을 사용한다. 1년 운영을 가정했을 때 시스템 장애로 서비스가 불가능한 시간을 0.001%로 낮춰야한다는 말로 시간으로 환산하면 1년에 5분의 장애 사항을 의미한다. (아무리 잘 된 온라인 게임 서버라도 한 달에 한번이나 분기에 한 두 번은 서비스 정검으로 리부팅을 해야 한다. 이는 나중에 칼럼으로 다룰 것이다.)

은행과 같은 금융 정보는 다운되어 고객 정보가 날아가면 돈이 날아가는 일이기 때문에 다운으로 인한 데이터 손실을 본질적으로 허용하지 않는다. 이런 금융권 서버의 기술 중 하나가 DB를 실시간으로 백업하는 기술 (미러링)과 로그를 실시간으로 백업하고 남기는 기술 등이 있다.

이런 기술은 엄청난 하드웨어 장비와 엄격한 프로그래밍이 요구되기 때문에 보통 게임 개발사에서는 시도조차 못하는 것이 일반적이었다. 대부분 유닉스나 IBM 메인 프레임 등에서 구현된 기술에서 구현되기에는 너무나 고사양 스팩이였던 것도 사실이다.

그러나 대중적인 서버를 모토로한 Windows NT와 Linux의 등장으로 기술의 장벽과 난이도는 낮아지기 시작했다. 즉, 고가의 유닉스 서버를 쓰지 않고, 고가의 유닉스 프로그램을 구매하지 않아도 되는 공짜 혹은 수백만원 때의 OS와 프로그램이 등장한 것이다. 덕분에 하이엔드 금융권 서버의 기술이 온라인 게임이나 저가형 웹 서버에도 도입될 수 있는 길이 열린 것이다. 그러나 이런 기술은 아직까지 기술적인 난이도나 많은 투자와 숙달이 필요하기 때문에 일부 고급 서버 프로그래머들과 엄청난 고스톱 머니와 포커 머니가 오고 가는 대형 포털에서 구현되고 있다

 

지금까지 백 서비스가 일어나는 상황에 대해서 이야기를 했다. 백 서비스가 일어나는 원인을 간단하게 정리해보자.

첫째, 온라인 게임 서버 프로그램의 불안정
둘째, OS의 불안정
셋째, 네트워크의 불안정
넷째, 서버 하드웨어의 불안정
다섯째, 해킹과 스피드 핵
여섯째, 이유를 알 수 없음

많은 경우가 바로 게임 서버 프로그램이 불안정하기 때문이다. 대단위 유저가 리얼 타임으로 접속하고 전투하고 퀘스트를 진행한다. 기획은 어찌나 더디고 미완성인지 새로운 기능은 거의 리얼 타임으로 업그레이드 된다. 웬만한 금융권 프로그래밍이나 기업 프로그래밍의 경우 완성 후 몇 달 동안 안정화 테스트를 거치고 사용자들이 서비스를 이용한다.

온라인 게임은 유저의 만족감과 완성도를 높이기 위해 수시로 패치가 진행되다 보니 버그나 잠재적인 버그가 속출하게 된다. 이런 버그 중 즉각 반응을 보이지 않고 있던 버그가 또 다른 버그와 만나면 상승 작용을 일으켜 다운되는 현상을 불러온다. 서버 프로그래머로써는 미치는 일인 것이다. 원래 정상적인 개발 플로우라면 Close Beta에서 내부자와 전문 디버깅 유저를 동원하여 대부분의 버그를 잡고 안정화를 해야 하는 것이 정상이다.

그러나 한국의 특수성으로 인해 오픈 베타라는 이름으로 고객을 상대로 버그가 잡힐 때까지 테스트를 하는 것이다. 고객이 게임을 무료로 즐기는 대가로 버그 발견을 유저의 손에 맡긴 것이다. 일부 개발사들은 테스트 서버를 두고 일정 시간 안정화가 확인된 후 패치를 올리는 식으로 안정화를 꾀하기도 하지만 많은 개발사는 베타 유저를 마루타로 삼고 있는 것이다.

OS의 불안정은 정말 끔찍한 상황이다. 운영체제의 버그로 온라인 게임이 죽는 경우를 몇 번 봤는데 이 경우는 개발자가 할 일이 거의 없다. 공개 운영체제인 Linux의 경우 커널 (운영체제의 핵심 구현부)를 볼 수 있다면 수정 가능하지만 윈도우나 상용 OS의 경우 버그 패치가 나올 때까지 땜빵 처방이나 운에 맡길 수밖에 없다. (프로그래머로서는 좌절감이 드는 순간이다.) 그러나 요즘 OS의 안전화로 이런 경우는 점점 더 줄어들고 있다.

네트워크 불안정의 대표적인 예는 모 IDC(온라인 게임 서버가 모여 있는 서비스 센터)의 정전 사태를 들 수 있다. 덕분에 모 IDC에 입주했던 온라인 게임은 돈으로도 환산할 수 없는 엄청난 피해를 입었다. IDC는 지진, 태풍, 정전에 대비하여 지어진 인터넷 서비스를 위한 건물이라 이런 사태를 피할 수 있어야 하지만 예외적인 상황으로 재앙에 가까운 사태도 맞을 수 있다. 이런 경우는 길을 가다가 벼락을 맞을 확률에 가깝긴 하지만 아예 없지는 않다.

IDC의 하드웨어 장비의 고장으로 서비스가 중지되거나 장비 셋팅의 실수로 네트워크가 느려지는 경우도 밖으로 알려지지 않지만 없지는 않은 백 서비스 원인 중 하나이다.

해킹과 스피드 핵은 정말로 개발자에게 생각조차 하기 싫은 상황 중 하나이다. 최근 자동화된 해킹 툴이 많이 나와서 전문적인 지식 없이 원 클릭만으로 게임 서버를 죽이거나 서비스에 지장을 줄 수 있게 되었다.

해킹 툴을 구하거나 해킹을 하는 방법에 대해서는 워낙 위험하기 때문에 정확하게 기술하지는 않지만 이는 매우 위험한 일이다.

경고한다!
첫째, 해킹 툴에는 트로이 목마처럼 수상한 기능이 숨어 있을 수 있다.
둘째, 바이러스에 오염되어 있을 수 있다.
셋째, 추적이 가능하다. 범죄자로 검거될 수 있다.

해킹 툴은 해커들이 만든 프로그램이다. 그런데 일부 불순한 해커들이 툴을 사용하는 순진한 초보 유저의 PC를 점거하거나 해킹의 중간 경유지로 사용하기 위해 악성 프로그램을 숨기는 경우가 있다.

이런 해킹 툴 속의 악성 코드는 전문가가 아니면 확인하기 힘들 뿐 아니라 순진한 ‘초보’ 해커에게 심각한 피해를 입힌다.

개발 중 너무 급하게 개발되어 에러 사항에 대한 예외 처리가 생략되어 있을 경우 과도한 스피드 핵에도 서버가 다운된다. 스피드 핵이란 사용자가 이동을 빠르게 하거나 공격을 빠르게 하기 위해 편법으로 사용하는 프로그램을 지칭한다. 서버가 초당 100번의 걷기 명령을 처리를 한다고 가정했을 때 10배로 빨리 걷게 만들려고 한다면 초당 일천 번의 걷기 명령 처리가 가능하다. 서버에서 이런 예외 처리 프로그래밍이 약하거나 네트워크 대역폭을 넘어 설 경우 서버는 다운된다.

이럴 경우 개발자와 개발사는 스피드 핵을 막기 위한 프로그램을 구매하거나 로직을 구현하는 방법으로 문제를 해결한다. 스피드 핵은 게임 서버 전체의 서버 성능을 떨어트리는 일이기 때문에 다른 유저를 배려한다면 하지 말아야 할 행동 중 하나이다. 위에서 이야기했듯이 이런 해킹, 스피드 핵 프로그램에는 트로이 목마형 해킹 프로그램이 숨겨져 있을 가능성도 많기 때문에 사용에 따른 손실은 유저 스스로가 책임져야 할 것이다.

마치는 말
백 서비스는 온라인 게임이 상용화되기 위한 진통이라고 볼 수 있다. 그러나 충분한 개발을 보장한다면 막을 수 있는 백 서비스가 많은 것도 현실이다. 오픈 베타 유저들도 언젠가는 돈을 내고 게임을 즐길 잠재적인 고객이다.

개발사들은 백 서비스에 대한 온라인 게임의 안정적인 처리가 오픈 베타 유저들을 위한 배려일 뿐 아니라 빠른 시간 내에 상용화로 가는 지름길이라는 것을 잊지 말아야 할 것이다.

'ETC > 게임 이야기' 카테고리의 다른 글

FF3 LV 테이블 및 JOB 베이직 테이블  (0) 2010.10.13
FF3 난수 테이블  (0) 2010.10.13
FF3 기본 스텟 및 전투 시스템  (0) 2010.10.13
Final Fantasy 3 (FF3) 소개  (0) 2010.10.13
디아2 앵벌과 매찬  (0) 2010.10.13
안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스
,