Maple Tech

메이플스토리 서버 보안관, 시스템 엔지니어의 패치 이야기

2022.03.30

유저 의견을 반영해 게임에 숨을 불어넣어 주는 패치는 온라인 게임에서 없어서는 안 될 필수 요소 중 하나입니다. 그만큼 중요한 패치 작업에서 메이플스토리 시스템 엔지니어는 패치 당일 라이브 서비스를 안정적으로 오픈해 단풍마을의 평온함을 지켜내고 있는데요.
이번 글에서는 메이플스토리 시스템 엔지니어의 패치 날 일과를 그려보며 전반적인 패치 과정과 비하인드 스토리에 대해 들려드리고자 합니다.
 
메이플스토리 패치 기본 정보
메이플스토리 패치는 크게 메이저 패치, 마이너 패치, 점검 세 가지로 나눠볼 수 있습니다.
  • 메이저 패치: 버전 값 전체가 바뀌는 작업으로 클라이언트 파일, 서버 파일 전체가 변경됩니다.
  • 마이너 패치: 클라이언트 파일 중 Maplestory.exe 파일과 서버 단에 필요한 파일들이 변경되는 작업입니다. 
  • 점검: 클라이언트 변경 없이 서버 파일만 변경하거나 확인 작업을 위해 진행되는 경우에 해당됩니다. 
메이플스토리에서는 매달 한 번의 메이저 패치를 기본적으로 진행하고 있는데요. 메이저 패치를 진행하고 나서 한 달에 많게는 6번의 마이너 패치로 추가 작업을 진행하다 보면 어느새 한 달 그리고 일 년이 훌쩍 지나가게 된답니다.
 
패치 당일 수행하는 7단계 작업
대부분의 패치 작업은 유저들의 동시접속이 가장 적은 시간대에 진행되기 때문에 담당자는 패치 당일 칠흑 같은 어둠 속 새벽공기를 가르며 출근하는데요. 졸음과의 사투를 벌이며 고요한 사무실에 불을 켜고 작업 준비를 시작할 때는 묘한 긴장감을 느끼며 결의를 다집니다.
패치 과정은 시간순으로 나열해 보았을 때 1) 서비스 종료 2) DB 전체 백업 및 DB 적용 작업 3) 서버 바이너리 교체 4) 서버 전체 리부팅 5) 내부 오픈 6) 유저 오픈 7) 서비스 모니터링 총 7단계로 구분됩니다.
Stage 1: 서비스 종료
먼저 서비스 종료 단계는 패치 작업을 진행하기 위해 모든 서비스를 종료하고 유저들의 최종 데이터를 안전하게 저장하는 작업입니다. 서비스 종료 작업이 시작되면 유저들이 접속 중인 서버들을 순차적으로 종료하게 되는데요. 게임서버, 샵서버, 소셜 등과 같은 서버를 종료한 후 각 서버의 미들웨어에 해당되는 서버들을 종료합니다.
유저들의 최종 데이터를 안전하게 저장하기 위해서는 서비스가 순차적으로 종료되어야 해서 보통 30분에서 1시간가량의 시간이 소요됩니다.
Stage 2: DB 전체 백업 및 DB 적용 작업
서비스 종료 이후 콘텐츠 패치 단위를 적용하기 전 유저들의 최종 정보에 대한 전체 백업을 수행합니다. 전체 백업이 완료되면 추가되는 콘텐츠로 인해 영향을 받게 되는 DB 적용 작업이 순차적으로 이뤄집니다.
보통은 백업 1시간 30분 DB 작업에 1시간 이내로 소요되지만, 성수기와 같이 패치 양이 많거나 추가되는 콘텐츠의 DB 영향도에 따라 작업 시간이 더 늘어나는 경우도 있습니다. 작업 소요 시간을 예측하기 위해 데이터베이스 관리자와 논의를 진행하는데요. 유사 환경을 만들어 미리 작업 테스트를 진행하여 예상 시간을 산정합니다.
Stage 3: 서버 바이너리 교체 
메이저 패치의 경우 클라이언트 버전도 변경이 되지만 해당 버전과 짝을 맞춰 서버 파일들의 버전도 변경이 되어야 하므로 모든 서버 바이너리 파일들도 버전에 맞춰 새로 빌드하는 전체 변경이 필요합니다.
서버 바이너리 교체 작업은 사전 내부 테스트가 완료된 상황에서 릴리즈 파일을 기준으로 라이브 서비스에 해당되는 모든 장비에 파일을 배포하게 됩니다. 해당 작업은 DB 작업과 병렬로 처리되어 30분에서 1시간가량 시간이 소요됩니다.
Stage 4: 서버 전체 리부팅

[메이플스토리 물리서버 이미지] 

서비스를 안정적으로 운영하기 위해서는 주기적으로 물리서버 리부팅 작업을 해주어야 합니다. 메이플스토리는 한 달에 한 번씩 메이저 패치를 진행하고 있어 보통 해당 주기에 맞춰 전체 서버를 리부팅하는 작업을 수행합니다. 서버 리부팅이 한 번에 깔끔하게 진행된다면 가장 좋지만 그렇지 않은 경우들도 종종 발생해 리부팅 후 이상 유무와 서버 정상화를 체크하기 위해 30분 정도의 시간을 할애합니다.
Stage 5: 내부 오픈
유저에게 서비스를 오픈하기 전 마지막 단계로 내부 오픈을 시행합니다. 당일 패치 작업을 통해 추가되거나 변경된 콘텐츠들에 대한 기본적인 내부 테스트를 진행하게 되는데 이때부터 예상치 못한 버그 출현과 함께 난관을 마주하기도 합니다. 기본적으로 내부 테스트는 2시간 정도 진행되지만, 성수기 패치와 같이 콘텐츠 규모가 방대한 경우 3시간이 산정되기도 합니다.
Stage 6: 유저 오픈
우여곡절 끝 드디어 약속된 시간에 유저 오픈이 시작됩니다. 간혹 패치 작업 도중 발생한 문제가 빠르게 해결되지 않아 약속드린 시간 내에 오픈을 하지 못하는 경우도 발생하는데요. 진땀 흘리며 연장 작업을 끝내고 오픈했을 때 정상적으로 게임이 잘 작동하고 유저분들이 패치에 대해 만족해하시면 정말 큰 보람을 느낀답니다.
Stage 7: 서비스 모니터링 

[서비스 서버 성능 모니터링 화면] 

[CDN 모니터링 화면] 

유저 오픈을 마친 후 내부에서는 서버 성능과 CDN(Content Delivery Network) 다운로드 이상 유무를 체크하면서 서비스 모니터링을 이어갑니다. 넥슨 전체 모니터링 툴인 별도 사이트와 Akamai 등을 통해 로그와 그래프를 확인하면서 유저들이 게임을 진행하는 데 문제가 없는지 평소와 다른 사항이 있는지 확인하고 이슈가 발생할 경우 바로 대응 조치를 취합니다. 하지만 운명의 장난처럼 문제가 없음을 확인하고 퇴근하면 마치 기다렸다는 듯이 장애가 발생하는 경우가 종종 있어서 이 시기에는 늘 오분 대기조 모드를 갖추고 있답니다.
이렇게 평균적으로 6시간에 걸친 패치 작업이 정상적으로 종료되고 라이브 서비스에 안정적으로 반영됐습니다. 수많은 기획, 아트, 개발자분들의 고민이 담긴 작업물들이 패치 과정을 통해 게임에 무사히 담기고 유저분들이 기쁘게 플레이해주시는 모습을 보면서 무거운 책임감과 또 한편으로 굉장한 보람을 느낍니다. 하나의 패치가 마무리되고 나면 개발자와 기획자분들이 다음 패치 콘텐츠를 점검해 볼 수 있도록 내부 테스트를 지원하며 또다시 준비를 시작합니다.
 
시스템 엔지니어의 또 다른 업무
시스템 엔지니어는 앞서 설명해 드린 메이플스토리 라이브 게임 서비스 패치 외 이뤄지는 모든 서버 점검을 준비하고 진행합니다. 라이브 서비스 도중 물리 서버나 서비스 자체에 장애가 발생했을 때 서버가 아프지 않고 유저분들이 기다리지 않도록 바람처럼 달려가 긴급 대응을 하고 지원하는 것 역시 시스템 엔지니어의 몫이랍니다.
이 밖에도 게임 서비스의 비즈니스 로직을 파악해 메이플스토리 내부 조직원들이 사용하는 개발 대역 서버나 기타 지원 툴 그리고 프로그램 세팅과 같이 동료들의 업무 편의를 높여 주기 위한 시스템도 관리하고 있습니다.
그렇기 때문에 시스템 엔지니어는 상황에 대한 종합적인 검토 및 분석 능력과 함께 책임감과 꼼꼼함이 필요합니다. 기술적인 부분에서는 Windows Server와 MS SQL Server에 대한 지식 보유와 시스템 운영관리에 필요한 기본적인 Script 사용이 가능해야 하고 시스템 성능 지표와 벤더 모델별 하드웨어 특성에 대한 이해 능력을 갖추고 있어야 합니다. 여기에 Web 서버 운영이 가능하거나 파이썬이나 C#, C++ 언어도 할 줄 안다면 큰 도움이 되고 메이플스토리를 사랑하는 마음까지 겸비했다면 더할 나위 없답니다.
마지막으로, 시스템 엔지니어는 늘 유저분들이 안정적인 환경에서 즐거운 플레이를 이어나갈 수 있도록 의견에 귀 기울이며 문제를 해결하기 위해 발 빠르게 움직이고 있다는 사실을 알아주신다면 여한이 없을 것 같습니다. 또한 메이플스토리를 애정하고 시스템 엔지니어라는 직무를 꿈꾸시는 분이 계신다면 꼭 도전하셔서 저희와 함께 메이플스토리 서버를 지켜 나가는 날을 맞이하시길 기원하겠습니다.

 

22년차 시스템 엔지니어 임채구