Day 2 - 채팅 서버에 접속이 안되요!!
채팅 서버를 실서버에 반영하고 피로에 지쳐 잠이 들었다. 전지현과 손예진이 서로 나랑 사귀겠다며 싸우는 꿈을 한참 꾸고 있는데 전화가 왔다. 여자다.
전화 : "안녕하세요. 운영팀 김미영 팀장입니다. 12시 부터 게임에 접속 할 수 없다는 메시지와 함께 클라이언트가 다운 되고 있습니다. 조속한 조치 부탁드립니다."

젠장..접속이 안된다니. 게임에 접속해 보니(처음으로 우리 회사 게임에 접속했다!!) 정말 게임에 접속 할 수 없다는 메시지와 함께 클라이언트가 다운된다. 클라이언트 개발자에게 디버깅을 문의하니 채팅 서버에서 더 이상 접속을 받을 수 없다는 에러 코드를 리턴한단다.

우리 게임 평균 동접이 1만인데 채팅 서버는 동접 1천 밖에 받지 못 했던 것이다. 급하게 시스템 팀에 연락해 채팅 서버 10대를 추가 하고 운영팀에 문제 상황이 해결 되었다고 응답해 주었다.

시스템이 정상 동작 하는지 모니터링 하다 나도 모르게 다시 잠이 들었다.

30분 정도 잠들었나 싶었을 무렵 다시 전화가 울린다.
전화 : "안녕하세요. 운영팀 김미영 팀장입니다. 접속 할 수 없다는 메시지는 더 이상 뜨지 않는데요. 사용자들간에 채팅이 되지 않는다고 합니다. 확인 부탁 드립니다."

읭? 채팅이 되지 않는다고? 다시 게임에 접속해 클라이언트 개발자와 테스트를 해봤다. 어라..? 잘 되는데? 접속을 끊고 다시 테스트 해보니 이번에는 되지 않는다!! 서버 로그를 살펴 보니 해당 사용자를 찾을 수 없다는 메시지다. 분명히 접속 중인데..아..다른 서버에 접속 중이었다. 내가 만든 채팅 서버는 서버간 메시지 전송 기능이 없던 것이었다.

팀장님이 원래 채팅 시스템은 없던 서비스였기 때문에 아직 사용하는 사람들이 그렇게 많지는 않다고 하시며 어서 패치 하라고 하신다. 그래서 다음과 같은 설계도를 그렸다.

채팅 메시지를 받고 로컬 머신에서 전달 대상을 찾지 못하면 전체 시스템으로 브로드캐스팅 하는 방식이다. 채팅 메시지를 받은 서버는 로컬에 있는 사용자면 메시지를 전달 하고, 사용자가 로컬에 없는 경우에는 메시지를 무시 한다. 
브로드캐스팅 기능만 추가 하는 것이기 때문에 금방 끝날 줄 알았는데 의외로 개발하는데 시간이 많이 걸렸다. 결국 다시 아침을 뜬 눈으로 맞았다.

간단한 테스트 후 시스템 팀에 연락하여 새로운 서버를 서비스에 반영했다. 이제 어떤 채팅 서버에 접속하던지 메시지를 못 받는 상황이 해결 되었다. 입사 이틀 째, 집에 가지 못한 시간도 이틀째..피곤하다..집에 가고 싶다..ㅠㅠ
 
[발로 그리는 분산 시스템] - 발로 그리는 분산 시스템 #Day 1 - 발로 그리는 채팅 시스템

Posted by kukuta

댓글을 달아 주세요