단상: 서비스 운영

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:October 19, 2012

게임 프로그래머라 하면 뭔가 거창하고 멋질 거라 생각한다. 하지만 막상 프로그래머로 취업하고 나면 꼭 그렇지는 않다는 걸 알게 된다. 특히 온라인 게임 시장은 그렇다. 온라인 게임 시장이 성숙하면서 수익을 많이 거두고 사람을 그만큼 많이 고용하는 게임은 대체로 운영 기간도 길다. 해외 진출까지 고려하면 이제 한번 성공한 게임은 10년은 충분히 간다. 시장을 보면 신규 게임이 성공하는 사례보다 전에 잘 나가던 게임이 여전히 잘 나가는 기세가 훨씬 더하다. 그래서 삽질은 많아도 재미나다는 신규 프로젝트에 들어가기가 만만치 않다. 설사 신규 프로젝트에 들어갈 수 있더라도 당장 수익을 내고 그만큼 인센티브를 줄 여력이 되는 라이브 서비스도 만만치 않게 유혹적이다. 그래서 프로그래머는 뜻하지 않게 서비스 운영을 맡게 된다.

이렇게 서비스 운영을 맡게 되면 일이 생각만큼 재미있기는 힘들다. 온라인 게임의 특성상 주기적으로 소규모 또는 대규모 패치를 준비한다. 따라서 신규 컨텐츠 개발에도 참여하게 된다. 하지만 컨텐츠 개발이라 해도 대부분은 기존의 틀 안에서 코드와 리소스를 늘릴 뿐이지, 틀 자체를 바꾸는 혁신적인 업무는 많지 않다. 게다가 운영 기간이 길수록 기술 빚은 늘어간다. 초기에 빚을 쌓은 개발자가 다른 직무를 맡거나 팀 밖으로 나가고 새로운 엔지니어가 그 자리를 차지한다. 하나씩 개선해나가지만 그보다는 빚이 쌓이는 속도가 더 빠르기 마련이다. 그래서 기존 틀에서 컨텐츠 하나를 추가하는 것도 만만치 않은 일이 된다. 이쯤되면 위에서는 “별 것도 아닌데 왜 이리 더디냐?”라던가 “엔지니어의 역량이 부족한 것 아니냐?”라는 의문을 품게 되고 아래에서는 “왜 빚을 정리할 시간을 안 주나?” 라는 불만을 갖게 된다.

이게 끝이 아니다. 게임 개발을 한다고 하면 멋진 그래픽을 구현하고 수많은 접속자가 함께 게임을 즐기게 해주는 그런 업무를 떠올린다. 그야말로 흥미로운 지적 도전이다. 하지만 서비스 운영이란 그 뒤에 눈에 잘 안 띄는 자질구레하고 별로 티도 안 나고 흥미롭지도 않은 업무가 한 다발이다. 서버 프로그램만 잘 짜면 서비스가 돌아갈 것 같나? 서버 프로그램 하나 설치하려면 얼마나 많은 일을 해야 하는지 아는가? 퍼블리셔에게 이메일을 보내 머신을 사 달라고 한다. 어떤 사양의 머신을 몇 대나 살 것인지 권고안을 작성해 줘야 한다. 양 사의 방화벽 구성도 맞춰야 한다. 각종 보안 도구를 평가하고 설치를 도와야 한다. 인증 서비스나 데이터베이스 설치 등의 이슈도 있다. 프로그램 배포와 테스트는 어떻게 할 지 정해야 한다. 마케팅 계획 같은 업무야 다른 직군에서 맡아 한다 하더라도 말이지 일은 끝이 없다. 운영과 배포에 필요한 교육도 해줘야 하고 최소한의 지침서도 작성해 전달해야 한다. 이런 업무가 얼마나 많은지, 내가 속한 팀은 작년부터 약 일 년 간 운영에 필요한 문서를 적극적으로 작성해 왔는데 그 양이 얼마나 많은지 아는가? 일 년만 더 하면 백과사전 한 권 나온다. 그런데도 문서에 없는 자료가 많다고 다들 불만이다.

이렇게 힘든 게 서비스 운영이다. 그런데도 사람들은 신규 프로젝트를 완수해야 역량을 인정한다. 라이브에만 있던 사람은 어쩐지 무시하는 경향이 뚜렷하다. 이런 세태가 벌어지는 데는 여러 요인이 있다.

신규 프로젝트만 하는 개발자도 있다. 서비스 운영을 한번 진득하게 하고 나면 왜 그런지 이해는 된다. 하지만 신규만 찾는 이는 기술 빚의 위험성을 간과하며 다음 번 프로젝트에서도 재활용 안 되는 코드, 임시방편, 여전히 비체계적인 업무 방식을 유지한다. 그리고 재미가 없어질 때 쯤 이제 자신이 할 일은 끝났다며 다른 자리로 옮기거나 그동안의 업무 지식을 무기로 삼아 큰 변화 없이 하던 대로 일한다. 새로 온 개발자는 기존 업무 방식을 함부로 무시하거나 변경을 제안하기 어렵기 때문에 업무 개선은 매우 더디게 이뤄진다. 이렇게 업무 개선이 더디다 보니 신입 개발자가 운영부터 경험하게 되면 많이 배우지 못 한다. 특히 스레딩이나 메모리 관리 등 엔진에서 하는 일을 직접 손 보고 개발할 일이 거의 없고 반복적인 컨텐츠 개발 경험만 쌓이는 게 문제다.

서비스 운영은 개발 업무가 1/3 이고 의사소통, 회의,  유지보수가 2/3 이다. 그런 만큼 개발에 쏟는 시간은 준다. 그 대신 귀동냥으로 얻게 되는 돈벌이에 관련된 정보(저마다 다른 해외 시장의 특성, 통계를 활용한 매출 극대화), 의사소통 역량은 신규 프로젝트에서 과소평가되기 마련이다. 이러한 정보를 취합해 초기 기획부터 손을 봐야 한다고 믿지만 그런 생각을 하는 이는 역시나 운영을 겪어본 사람 뿐이라 조직 내에서 큰 목소리를 내기는 힘들 것이다.

이렇다 보니 신규 개발 역량만 크게 인정 받는 세태가 변하기란 쉽지 않아 보인다.

이제 온라인 게임 시장은 성숙 단계에 들어섰다. EA의 FIFA 시리즈처럼 매년 조금씩 개선해 나오는 콘솔 게임처럼 온라인 게임도 주기적인 패치를 통해 하나의 제품으로 시장 점유율을 유지하거나 높이는 전략이 주된 흐름이 되었다. 그럼에도 불구하고 서비스 운영의 노하우는 매우 단편적으로 흩어져 있다. 그 대표적인 경향은 해외 진출과 동시에 드러난다. 대부분의 조직이 하나의 게임을 지역별로 나눈 팀에게 맡긴다. 북미 팀, 유럽 팀 이렇게 나눠서 코드 분리가 일어난다. 각 지역의 요구에 기민하게 대응한다는 명분은 있지만 EA 같은 글로벌 기업에서는 무척 보기 힘든 일이다. 구글 같이 시스템 통합에 목숨을 거는 회사에서는 꿈도 꾸기 힘든 일이다. 물론 온라인 게임은 다르다고… 수많은 사람이 말한다. 하지만 그런 예외에 관한 이야기(내 기준에선 핑계)는 수도 없이 들어 식상할 뿐이다. 코드 분리가 일어나고 1년, 2년, 3년이 지나면 얼마나 괴로워지는지 아는가? 초과 근무가 엄격히 제한되는 나라라면 꿈도 꾸지 못할 일이다(브라질 같은 나라조차 노동법은 한국보다 훨씬 엄격하다). 이런 건 개인의 희생으로 이뤄지는 성과에 불과하다. 무엇보다 장기 역량을 확보해나가려는 노력보다는 임시방편에 만족해 하루하루를 살아가기 때문에 조직의 경쟁력은 해가 갈수록 떨어질 수 밖에 없다. 단순히 이론으로만 말하는 게 아니다. 현장에서 보고 듣고 경험한 사례를 하루 종일 말해줄 수도 있다.

신규 개발보다는 서비스 운영이 주를 이루지만 환경 개선은 더디다. 이렇게 된 데에는 성과 공유가 제대로 이뤄지지 않는 업계 분위기도 한몫 한다. 이 이야기는 또 다른 주제로 쓸 만큼 할 이야기가 많으니 오늘은 이쯤하자.

내가 하고 싶은 말은 글쎄… 뭐였을까? 그저 이런 상황을 개선하고픈 이가 모여서 혁신을 이뤘으면 하는 바람이다. 그런 분은 언제라도 만납시다! 만나서 멋진 미래를 그려봅시다!

그럼 오늘은 이만 안녕~

경고

이 글은 업계의 전반적인 경향에 관한 것이며 재직 중인 회사와 조직과는 무관함을 알립니다.

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments