많은 유저가 사용하는 대용량 서비스입니다.
유저한명이 컨트롤 하는 오브젝트가 수천개 있습니다. 그리고 각 오브젝트는 매초마다 상태를 바꿉니다.
그리고 오브젝트들의 상태가 서버에 저장됩니다.
클라이언트의 요청 -> 서버에 전달 -> 오브젝트의 상태 변경 -> 클라이언트에 전달 -> 디스플레이
이런식으로 작동된다고 했을때
최대한 많은 유저의 요청을 효율적으로 처리하려면 어떻게 해야할까요?
메모리 관리 위주로 이야기 해주시면 감사하겠습니다.
많은 유저가 사용하는 대용량 서비스입니다.
유저한명이 컨트롤 하는 오브젝트가 수천개 있습니다. 그리고 각 오브젝트는 매초마다 상태를 바꿉니다.
그리고 오브젝트들의 상태가 서버에 저장됩니다.
클라이언트의 요청 -> 서버에 전달 -> 오브젝트의 상태 변경 -> 클라이언트에 전달 -> 디스플레이
이런식으로 작동된다고 했을때
최대한 많은 유저의 요청을 효율적으로 처리하려면 어떻게 해야할까요?
메모리 관리 위주로 이야기 해주시면 감사하겠습니다.
게임이야?
게임 아닙니다. 유저의 정보가 다른 유저에게 전달될 필요는 없습니다. 그리고 한 유저가 관리하는 객체는 유저 종속적입니다. 다른 유저가 엑세스 하지 않음.
일단 Data Oriented Programming 에 대해 조금 조사해 보는게 좋을 것 같아.
오브젝트의 데이타를 어떻게 효율적으로 길이 압축하는가 하는 이슈도 고민해야 할거야.
화면에 보이는 오브젝트의 개수가 전체가 아니라면, 클라이언트에서 캐시를 구현하고 서버에선 cache miss 일때만 내려주는게 좋겠지.
오브젝트의 개수가 빈번하게 늘고 준다면 메모리 풀을 사용해야 할테고, 인스턴스 최대치가 몇 천개를 넘지 않고 전체 메모리 사용량이 크지 않을땐 그냥 정적으로 가는게 좋아.
오브젝트가 어떻게 생겨먹었고 어떻게 화면에 representation 되느냐에 따라 dirty rectangle 이든 여러가지 자잘한 테크닉이 있을 수 있음.
네 조언 감사합니다. 저도 지금 설계단계라 이것저것 생각하고 있는데 다른 분들의 아이디어를 들으면 좋겠다고 생각해서 글을 올렸는데 질문자체가 너무 모호했네요.
ㅇㅇ 오브젝트의 구조를 모르고는 눈 튀어나올 조언은 힘들지
하지만 대답은 도움이 되었습니다 감사합니다.