기존 stateless web 방식

log partition, consumer, cache/DB, pub/sub, presence가 player별 순서와 push를 나누어 담당한다

기존 stateless web 방식 log partition, consumer, cache/DB, pub/sub, presence가 player별 순서와 push를 나누어 담당한다 Game Client · Architecture component Game Client Room Field · Architecture component Room Field Load Balancer · Architecture component Load Balancer Event Ingest API · Architecture component Event Ingest API Partitioned Log · Stateless Backend Partitioned Log Quest Consumer · Stateless Backend Quest Consumer State DB · Stateless Backend State DB Read Model · Stateless Backend Read Model Pub Sub · Stateless Backend Pub Sub Presence · Stateless Backend Presence Stateless Backend

기존 구성

  • • room/field가 gameplay event를 load balancer를 거쳐 ingest API로 보내고, API는 partitioned log에 append한다.
  • • quest consumer가 log를 읽어 player별 state DB와 read model을 갱신하고 pub/sub에 발행한다.
  • • presence가 pub/sub을 구독해 room/field로 push하고, room/field는 client에 전달한다.

GameQuest 대응

  • • GameQuest는 진행 tier에서 PlayerId를 global SpotId로 사용해 owner turn을 Framework에 맡긴다.
  • • QuestEventStore와 projection, reset/reconcile은 Application에 남는다 — Framework가 Kafka durability나 reward 지급 atomicity를 제공한다고 해석하지 않는다.