1. 모바일 서비스
> 일반 서비스 개발과는 다르게 모바일은 고려할 사항이 많다. 서버 / 클라 측면에서 다음사항을 고려하여 프로젝트를 진행해야 한다.
- 다양한 OS에 대하여 대응해야 한다.
- 다양한 화면크기에 대응해야 한다.
- 작은 화면임을 고려하여 꼭 필요한 기능으로 화면을 구성해야 하며 사용자 이용 편의성을 최대한 고려한 직관적인 UI 설계가 필요하다.
- 전력소모를 고려해 화면 메인색상, 페이지 로딩 용량, 캐쉬 데이터 활용여부 등을 결정해야 한다.
- 이미지 로딩에 많은 시간과 데이터를 소모하지 않도록 크기, 용량, 형식을 적절히 한다.
- 이동하면서 사용이 가능 할 수 있어야 하므로 자주 끊기게 되는 상황을 고려한다.
- 아직까지 기기의 사양이 뛰어나지 못하므로 무조건 뛰어난 그래픽을 고려하기 보다는 적절한 수준의 퀄리티를 보여 주어야 한다.
2. 모바일 게임서버
> 시스템 설계는 항상 정확한 답이 없다. 아무리 잘 짜여진 architecture 라도 부족한점이 있고 이를 보완해 프로젝트 진행이 원활하도록 하는 것이 중요하다. 경험상 중요하다고 생각하는 몇가지를 적어본다.
- 응답성 향상을 위하여 서버 및 기타 서비스용 하드웨어 아키텍쳐를 반영하여 구성한다.
- 신속 정확한 서비스 개발 및 운영이 이루어질 수 있도록 배포시스템의 구성이 필요하다.
- 장애에 대비하여 시스템 이중화를 항상 고려해야 한다.
- 팀간 또는 팀원간에 원활한 커뮤니케이션을 위해 문서화 및 적극적인 회의참여를 유도한다.
- 효율적인 업무 협업이 될 수 있도록 형상관리툴을 적극 활용한다.
3. 모바일 게임서버의 일반적인 구성도
4. 디비서버
- 트래픽이 몰렸을 경우 가장 문제가 많이 발생하는 것은 디비이다. 테이블 설계시 인덱스를 잘확인하도록 해야하며 이중화하는 것을 잊지 말자.
- 관계형데이터 베이스로 작업시 유리한 점이 많지만 데이터량이 증가할경우 대응하는데 무리가 있을 수 있다. 이럴경우 NOSQL디비를 고려 하는것도 좋다.
5. 캐시서버
- 관계형데이터 베이스로 작업시 유리한 점을 그대로 활용하고 부하를 캐시서버로 분산시킬 수 있다. Redis, Memcached 등이 사용된다.
- 특히 redis의 경우 영구적인 데이터 저장 및 다양한 기능을 제공하므로 활용도가 높다.
6. 웹서버
- 로드벨런싱을 통해 여러대의 웹서버에서 부하를 분산시킨다.
- 웹서버의 경우 메모리를 많이 사용하지 않으므로 남는 메모리를 캐쉬서버의 용도로 사용할 수 있다. 이렇게 되면 서버 비용을 줄일 수 있다.
7. 채팅서버
- 게임에서 채팅이 필요할 경우 채팅 서버를 구축해야 한다. 접속자가 많아질 경우 채널을 분리해야 하고 타 채널끼리의 통신을 위해 중계서버를 두어야 한다.