Psnuser -

// Hystrix pattern @HystrixCommand(fallbackMethod = "getCachedFriendsList") public List<PSNUser> getFriends(String userId) return psnUserService.fetchBatch(userId.getFriendIds());

CREATE TABLE psnuser ( id UUID PRIMARY KEY, account_type ENUM('master', 'sub'), master_id UUID REFERENCES psnuser(id) NULL, monthly_spend_limit_cents INT DEFAULT 0, CHECK ( (account_type = 'master' AND master_id IS NULL) OR (account_type = 'sub' AND master_id IS NOT NULL) ) ); Note: In production, this is denormalized into a graph database (Neo4j or AWS Neptune) to avoid recursive joins. To guarantee the "PlayStation Experience," the psnuser service must expose specific Service Level Indicators (SLIs): psnuser

private List<PSNUser> getCachedFriendsList(String userId) // Return stale cache + emit degraded metric master_id UUID REFERENCES psnuser(id) NULL

| Sub-domain | Storage Technology | Consistency Model | | :--- | :--- | :--- | | | CockroachDB (Global, Strong) | Serializable | | Profile & Social | Cassandra + Redis | Eventual (Read-your-writes) | | Entitlements/Licenses | AWS DynamoDB (GSI over-specified) | Strong (for purchases) | | Telemetry/Trophies | Apache Kafka + S3 Data Lake | At-least-once | monthly_spend_limit_cents INT DEFAULT 0