Maple Tech

메이플스토리의 방대한 데이터를 책임지는 사람, 메이플 DBA 이야기

2022.01.07

서비스 기간 19년, 국내 회원 수 2,400만여 명. 서비스 기간과 회원 수 만으로도 메이플스토리가 가지고 있는 어마어마한 데이터를 짐작해볼 수 있죠. 장기간 라이브 서비스를 하면서 시즌마다 대규모 업데이트로 신규 콘텐츠들을 대량 추가하는 메이플스토리에서 DBA로 일하는 것은 수많은 도전과 위기, 성장의 반복이기도 한 것 같습니다. 그렇다면 과연 DBA가 어떤 일을 하는지, 왜 중요한지, 그리고 메이플스토리 DBA는 왜 더 특별한지가 궁금하신 분들을 위해, DBA 직무에 대한 이야기를 들려드리려고 합니다.

DBA, 도대체 어떤 일을 하나요?

먼저, DBA란 Database Administrator, 즉 데이터베이스 관리자를 말합니다. 데이터베이스 관리에는 DB 설계, 쿼리 튜닝, SSIS, 각종 통계 작업과 유저 문의 확인, 오류 발생 시 대상자 추출 및 복구 작업, 로그 확인, 데드락, Slow Query 확인, 신규 월드 추가/제거, 월드 통합, 데이터 최적화 등 정말 다양한 업무가 포함되지요.
기본적인 업무 프로세스를 간단히 설명 드리면, 통계자료 요청, 데이터 수정 등의 업무 요청이 들어온 건에 대해 업무 할당을 하고, 세부 내용을 파악해 쿼리를 작성하고, 테스트와 검증을 거쳐 커밋과 테스트 서버 반영을 한 이후에 본 서버에 반영하게 된다고 보시면 됩니다.
이 과정에서 요청의 세부 내용을 파악하는 단계에서는 담당자와 조건을 직접 명확하게 다시 한 번 확인하는 과정이 매우 중요하고, 요청자가 미처 예상하지 못했을 수 있는 문제가 발생할 수 있는 가능성 등을 확인해 안내하고, 이에 대한 처리 방안을 확인하는 과정 역시 필수입니다.
이후 쿼리를 작성하고 테스트를 진행하면서는 전/후 값이 의도와 다르게 변경된 부분이 없는지 요청자와 처리자가 각각 확인한 후, 이상이 없으면 반영할 쿼리의 버전 관리를 위해 커밋을 합니다. 이 과정에서 특히 더 복잡하거나 중요도가 높은 쿼리의 경우 다른 DBA가 추가 검수를 진행하기도 하고요.
그리고 나서 여러가지 경우의 샘플 캐릭터를 세팅해서 테스트 월드에 반영해보고, 게임 내에서 이상이 없는지를 확인합니다. 이 모든 테스트 과정에서 문제가 없다면, 본 서버에 데이터를 반영하고, 오픈하기 전 마지막으로 내부 계정을 활용해 확인하는 과정을 거칩니다.
또한, 단순 데이터 변경이 아닌 신규 콘텐츠 추가의 경우에는 DBA가 해당 콘텐츠의 기획 단계부터 참여해 함께 논의하고, 관련 DB 설계 및 모든 쿼리 작업을 직접 진행합니다.
캐시 통계 작업 흐름

메이플스토리 DBA가 더 특별한 이유

DBA의 역할에 대한 기본적인 설명을 드렸으니, 이제 ‘메이플스토리’의 DBA로 일하는 것은 무엇이 다른지, 특별한 점은 무엇인지, 또 제가 겪었던 어려움은 무엇이 있었는지 등에 대해 말씀드려 보려고 합니다.
우선, 메이플스토리 DBA로 일하면서 가장 와 닿는 장점은 바로 ‘데이터가 많다’는 점입니다. 올해로 서비스 18년차를 맞이한 메이플스토리는 정말 방대한 양의 데이터를 자랑하는데요, 지금까지  이렇듯 데이터의 규모가 크다 보니 아무래도 대용량 데이터를 다루는 데 익숙해지게 되고, 정말 다양한 쿼리를 사용하고 튜닝할 기회가 많다는 점이 큰 이점인 것 같습니다. 예상하지 못했던 일들도 다양하게 발생하는 만큼, 다채로운 업무 경험을 할 수 있는 부분도 있고요.
또, 월드 추가, 월드 통합, 이벤트 월드 생성과 같은 월드 변화가 매년 발생하기 때문에, 기존 대용량 데이터 운영 뿐만 아니라 신규 세팅 및 소규모 데이터도 관리하면서 동일한 구조에서 데이터의 차이에 따라 비교도 가능하고요, 월드 변경 작업을 통해 각 데이터의 유기적 구조에 대한 논리적 사고를 할 수 있다는 점 역시 메이플스토리 DBA만이 경험할 수 있는 특별한 부분인 것 같습니다.
메이플스토리 DBA는 게임 속 모든 데이터 구성을 숙지하고 있어야 합니다. 스탯과 같은 캐릭터 정보와 캐시, 장비 옵션 등 아이템 정보, 경매장 정보 등의 기본적인 데이터에서부터 크고 작은 콘텐츠 정보에 이르기까지, 게임 속에서 사용되고 저장되는 모든 정보가 어디에 어떤 방식으로 저장되는지를 알고 있어야 업무 요청을 받았을 때 해당 데이터의 조회가 가능한지, 어디에서 어떻게 조회할 수 있는지를 알 수 있습니다.
오랜 기간 쌓여온 방대한 양의 데이터를 관리하다 보니 물론 어려운 부분도 있습니다. 서비스 기간이 긴 만큼 데이터 구조도 오랜 시간 변화해 왔기 때문에, 테이블 구조 파악이 어려운 경우가 있기도 하고, 데이터가 복잡하게 축적되어 있어 수정이 어려울 때도 있습니다. 또 월드 통합을 진행하는 경우 여러 월드를 한 번에 통합할 때에는 (많게는 12개 월드를 통합해본 적도 있습니다) 작업 시간이 굉장히 오래 소요되어서 힘들었던 경험도 있었어요. 예전에 통합된 적 있는 월드를 또 한 번 통합했던 적도 있는데, 이전 통합에서 변경된 데이터들을 다시 맞추는 매우 까다로운 작업을 했던 것도 기억에 남습니다.
대부분의 DB 작업은 점검 중에 진행되기 때문에, 종종 새벽 출근을 해야 하는 점도 어려운 부분 중 하나입니다. 특히 여름과 겨울 성수기에는 패치가 자주 진행되거든요. 하지만 모든 DBA가 항상 새벽에 출근하는 것은 아니고, 서로 돌아가면서 적절한 수준으로 진행하고 있답니다.

DBA를 꿈꾸는 이들을 위한 조언

DBA로 근무하기 위해서는 무엇보다 관련 업무 경험이 중요한 편입니다. 방대한 데이터를 직접 다루는 일이다 보니 실수를 최소화해야 하고, 다양하게 발생하는 이슈에 대한 유연한 대응이 필요하기 때문인데요, 그렇다 보니 신입보다는 경력자를 선호하는 경향이 있는 것 같습니다.
제 경우에도 메이플스토리 DBA로 근무하면서 가장 중점을 두는 부분이 바로 명확하고, 정확하고, 꼼꼼하게, 이 세 가지입니다. 진행하는 업무가 왜 필요한지, 더 나은 방법은 없을지를 항상 고민하고, 내가 놓친 부분은 없을지 끊임없이 확인하고 스스로를 의심해보는 자세도 필요합니다. 늘 이러한 마음가짐으로 근무하다 보니, 약간의 직업병(?)이 생기는 것 같기도 해요. 예를 들면 궁금한 부분이 생기면 어떻게 해서라도 이해를 해야만 직성이 풀리고, 무슨 일이든 문제가 발생할 수 있는 상황을 먼저 생각해보게 되더라고요. 일상생활 중에 사소한 이벤트를 접해도 어뷰징 가능성을 먼저 떠올린다든지 말이죠. ^^;;
하지만 이런 자세는 DBA 업무에 큰 도움이 됩니다. DBA 업무에서는 사소한 조건 하나로 결과가 크게 달라질 수 있기 때문에, 항상 쿼리 조건을 명확하게 확인하는 자세가 필요합니다. DBA에게는 ‘당연한 것은 없다’라고 생각을 해 주시면 좋을 것 같습니다. 모든 조건을 명확하게 확인하고, 간단한 것 같은 쿼리도 꼭 사전 테스트를 진행해야 합니다. 테스트를 진행할 때에는 다양한 상황을 만들어서 다방면으로 확인을 해야 하고요. 모든 작업은 문서화해서 관리하고, 쿼리도 모두 버전 관리를 진행하면서 히스토리를 쌓는 것도 중요합니다.
물론, 모든 DB 작업은 점검 중에 처리하게 되고, 정말 긴급한 이슈가 아닌 경우 라이브 DB에서 작업을 하는 경우는 드물지만, 긴급 이슈가 발생해 급한 처리가 필요할 경우 더 실수하기가 쉽기 때문에 신경을 더 많이 써야합니다. 실수를 방지하기 위해 사전 테스트로 쿼리를 확인하고 반영 전 검수도 꼭 진행하지만, 그래도 사람이 하는 일이다 보니 작업 과정에서 실수가 발생하는 일도 있습니다. 실수가 발생했을 때 가장 중요한 부분은 가능한 빨리 동료와 선배들에게 이야기해야 한다는 점입니다. 간혹, 본인의 실수에 당황해서 숨기려고 하시는 분들이 계시기도 한데요, 그럴 경우 문제는 더욱 심각해지게 됩니다. 문제가 발생한 즉시 상황을 정확하게 말씀해주시면 다 함께 해결 방법을 찾을 수 있다는 점을 꼭 기억해주시면 좋겠습니다.
문제가 발생하거나 실수를 한 상황이 아니더라도, 업무를 진행하면서 막히는 부분이 있을 땐 언제든지 동료들과 의견을 나누며 도움을 받을 수도 있고, 개선하고 싶은 업무 처리 방식 등이 있다면 자유롭게 의견을 내고 제안할 수 있다는 점이 바로 메이플스토리 DBA 업무의 장점인 것 같습니다.
DBA 업무에 도움이 되는 스킬을 꼽아보자면 기본적으로는 T-sql과 SSIS 사용이 가능해야 하고, 트랜젝션, 인덱스 등의 개념을 명확하게 이해하고 계시면 좋을 것 같습니다. 꼭 필요한 것은 아니지만 파이썬이나 C++ 등의 언어도 할 줄 안다면 도움이 될 것 같고요. 그리고 당연하지만 게임에 대한 이해도 필수입니다. 아무래도 일을 매끄럽게 하기 위해서 캐릭터, 아이템, 맵 등 게임 콘텐츠를 비롯한 다양한 데이터가 어디에 어떻게 구성되어 있는지 머릿속에 펼쳐져 있어야 하기 때문에 평소 게임을, 특히 메이플스토리를 많이 접해보신 분이라면 더 좋겠고, 게임 DBA 경력이 있는 분이라면 최고일 것 같습니다.
마지막으로, DBA라는 직무와 별개로 메이플스토리를 만들어가는 사람 중 한명으로서 메이플스토리가 앞으로도 오랜 기간 큰 사랑을 받으며 서비스 30주년, 50주년을 맞이할 수 있게 되었으면 좋겠다는 마음으로 이 글을 마무리하고 싶습니다. 이 글을 읽으시는 분들 중에서도 메이플스토리를 사랑하는 마음과 데이터에 대한 열정으로 메이플 DBA를 꿈꾸시는 분이 계시다면, 꼭 그 꿈을 이루실 수 있게 되기를, 그래서 저와 함께 즐겁게 메이플 월드 DB개발 작업을 하시는 분이 나올 수 있기를 바라면서요. 읽어주셔서 감사합니다.
 
12년차 DBA 채승희