실제 서비스 운영을 고려

MSA를 적용하여 확장성과 안정성을 강화하고자 하였습니다.

근거는 다음과 같습니다.

  1. 저희의 MVP(Minimum Viable Product)는 멀티 모드였습니다. 처음 기획할 때 목표는 멀티 모드를 빠르게 배포하여 서비스를 운영하면서 추가 기능을 독립적으로 개발하고자 하였기 때문에 MSA를 적용해야겠다고 생각했습니다.

  2. 장애 격리를 목표로 하였습니다. 각 게임 모드를 독립적인 서비스로 분리하여, 하나의 서비스에 장애가 발생해도 다른 게임 모드는 정상적으로 운영되면 좋겠다고 생각했습니다.

    예를 들면, LOL을 할 때 랭크 게임에 문제가 발생해도 일반 게임이나 칼바람의 나락은 정상적으로 플레이 할 수 있는 것과 같이 구현하고 싶었습니다.

    Monolithic방식에서 서버에 장애가 발생하면 멀티 모드와 배틀 모드가 모두 불가능하다.

    Monolithic방식에서 서버에 장애가 발생하면 멀티 모드와 배틀 모드가 모두 불가능하다.

    MSA로 설계할 경우 멀티 모드 서버에 장애가 발생하여도, 배틀 모드는 정상적으로 동작한다.

    MSA로 설계할 경우 멀티 모드 서버에 장애가 발생하여도, 배틀 모드는 정상적으로 동작한다.

  3. 수평적 확장(Scaling Out)을 고려하였습니다. 만약 여러 게임 모드 중 특정 모드에 트래픽이 집중된다면, 해당 모드에 대한 서버만 확장하여 효율성을 얻을 수 있겠다고 생각했습니다.

    멀티 모드 서버에만 트래픽이 집중된다면

    멀티 모드 서버에만 트래픽이 집중된다면

    멀티 모드 서버만 Scale Out하여 트래픽을 분산시킴

    멀티 모드 서버만 Scale Out하여 트래픽을 분산시킴