A 2025 RMIT Digital Commerce study found that 68% of Australian consumers are more likely to return to a digital product that includes a live, real-time social element — a live chat, a shared leaderboard, a collaborative board, or a head-to-head game. Yet only 12% of Australian SMB apps include any real-time functionality.

The gap exists because real-time apps are genuinely harder to build. A standard app can be thought of as a series of requests and responses: user taps button, server replies, screen updates. A real-time app inverts this model. The server pushes data to multiple users simultaneously. State changes need to reach every connected user within milliseconds. The architecture required is qualitatively different — and the cost of getting it wrong is immediate and visible, unlike a bug in a checkout flow.

We recently completed a significant architecture milestone on Suite of Spades — a multi-tenant, real-time card game platform serving concurrent live multiplayer sessions across multiple game variants (Gin Rummy, Indian Rummy, Teen Patti, Seep). The backend runs across 8 separate microservices on AWS ECS, coordinated through a real-time WebSocket game server. The lessons from that build are directly applicable to Australian businesses that want to build any kind of live, multi-user experience — not just games.

What “Real-Time” Actually Means Architecturally

Most developers understand that real-time apps require WebSockets rather than standard HTTP. What’s less understood is that WebSockets fundamentally change how you design every other part of the system.

With standard HTTP:

  • Client sends a request. Server responds. Connection closes.
  • State is rebuilt on every request from the database.
  • One server can handle thousands of requests per second because connections are short-lived.

With WebSockets:

  • Client opens a persistent connection. The connection stays open for the duration of the session.
  • The server holds state in memory for every connected user.
  • When one user takes an action, the server immediately pushes the update to every other user in the room — without waiting to be asked.

This sounds simple. The complexity appears when you ask: what happens when the WebSocket server restarts? Where does in-flight game state live? How do you prevent cheating when the client knows what cards are in play? What happens when two users make conflicting moves simultaneously?

Every one of these questions has a right answer and several wrong answers. Getting the right answer requires designing the entire system around real-time constraints from day one, not adding WebSocket support to an existing app.

What real-time actually means architecturally -- standard HTTP request-response vs WebSocket persistent connection, and the true architectural challenges: server restarts, cheating prevention, and conflicting moves

The 8-Service Architecture We Built (and Why)

Suite of Spades runs eight independently deployable services on AWS ECS (Elastic Container Service), each containerised with Docker and deployed via CI/CD through GitHub Actions and ECR:

ServiceResponsibilityWhy separate?
Auth serviceJWT issuance + verification, app tenant claimSecurity boundary; keeps auth logic out of every other service
Profile serviceUser data, preferences, game historySlow-changing; can cache aggressively
Lobby serviceMatchmaking, room creation, join-by-codeDecoupled from live game — an outage doesn’t kill in-progress sessions
Realtime game serviceWebSocket connections, in-memory game state, move validationHigh CPU/memory; needs separate scaling policy
AI bot serviceAutomated players for cold-start matchmakingComputationally different; runs ML inference
Payment serviceIAP verification, entitlements, subscription managementPCI-scope isolation; never co-runs with game logic
Patience serviceSingle-player card game engineDifferent traffic pattern (async vs real-time)
Analytics serviceEvent ingestion, session trackingWrite-heavy; should not share DB connections with transactional services

The separation isn’t about microservices for microservices’ sake. It’s about failure isolation. If the analytics service has a memory leak, it shouldn’t affect a live game. If the payment service goes down for Apple receipt verification, players already in a game session should stay in their game. Each service has its own health check, its own scaling policy, and its own deployment pipeline.

For a business commissioning a real-time app, this architecture has a direct translation:

  • A pub quiz app would separate the question engine, the WebSocket broadcast server, the leaderboard service, and the payment/subscription service.
  • A live auction platform would separate the authentication, the bid engine, the notification broadcaster, and the payment service.
  • A collaborative design tool would separate user management, the WebSocket sync layer, the file storage service, and the subscription service.

The pattern is the same regardless of domain.

The Multi-Tenant Problem: One Backend, Many Brands

One of the most technically complex things we solved in Suite of Spades was hard multi-tenant isolation — the ability to run multiple distinct apps on the same backend infrastructure, with an absolute guarantee that a player in one app cannot see or interact with data from another.

The solution has four layers:

1. Server-vouched JWT tenant claim: Every auth token carries an app claim that is stamped server-side, not by the client. The client cannot forge or modify this claim. Every service validates the app claim on every request before touching any database.

2. Namespaced realtime rooms: WebSocket game rooms are prefixed with the app identifier (seep_ghar::room_123 vs suite_of_spades::room_123). A Seep Ghar player physically cannot join a Suite of Spades room — the namespace prevents it at the protocol level.

3. App-scoped database queries: Every database query that returns data scoped to a user (entitlements, lobbies, clubs, device tokens) includes the app identifier as a mandatory WHERE clause. Missing it is a compile-time error in our query layer.

4. Cross-tenant boundary tests: We wrote actual integration tests that provision users in tenant A and verify that they cannot see tenant B’s lobbies, entitlements, or clubs — and vice versa. These tests run in CI on every commit.

For an Australian business, multi-tenancy matters when you want to run the same app infrastructure for multiple brands, franchisees, or clients. A gym chain running a loyalty app across 12 locations; a pub group running a quiz app across 6 venues; a franchise network running a customer app for each franchisee. Multi-tenant architecture means one engineering team maintains one backend, and each brand gets full data isolation.

The multi-tenant problem: one backend, many brands -- how Suite of Spades solved hard multi-tenant isolation with server-vouched JWT claims, namespaced realtime rooms, app-scoped database queries, and cross-tenant boundary tests

The Cold-Start Problem: Why Real-Time Apps Need AI Bots

Real-time multiplayer apps face a problem that single-player apps don’t: users need other users to play. On day one of a multiplayer app, there are no other users. A new user who joins, finds no game to join, and leaves is a user you’ve lost — possibly permanently.

The standard solution is AI bots — automated players that fill game sessions when human players aren’t available. Done badly, bots feel hollow and players leave anyway. Done well, bots are indistinguishable from humans and create genuine engagement during low-traffic periods.

Suite of Spades’s AI bot service handles:

  • Monitoring lobby state for sessions that would stall due to insufficient players
  • Spinning up bot players that follow realistic behavioural patterns (timing variance, play style variation, error rates matching human play)
  • Graceful exit when a human player joins (bot leaves the session without disrupting the game)

The bot service is deliberately isolated from the realtime game service. Bots use the same WebSocket protocol as human players — from the game engine’s perspective, a bot is just another player. This means the bots exercise the exact same code paths as real sessions, which catches bugs that a unit test of the game engine wouldn’t find.

The cold-start problem: why real-time apps need AI bots -- the cold-start trap, AI bot functions in Suite of Spades (monitor lobby state, realistic behaviour, graceful exit), and business applications for live quiz, auction, and collaborative tools

For businesses: a live quiz app needs bots. A live auction platform needs bots in early sessions. A collaborative tool might need bot-generated “example projects” to fill a blank slate on first load. The cold-start problem is universal to any social or multi-user application, and solving it architecturally from the start is far cheaper than retrofitting it later.

Provably-Fair Game Mechanics: The Trust Architecture

One of the requirements that distinguishes a real-time gaming app from a real-time quiz app is trust. When money or reputation is at stake, players need evidence that the game is fair — that cards aren’t stacked, that the server isn’t cheating for the house, that other players can’t see your hand.

Suite of Spades implements provably-fair dealing:

  • Card order is determined by a server-side seed before the deal
  • The seed is committed (hashed) and published to players before the deal
  • After the game, players can verify the hash against the actual deal

This is the same cryptographic commitment scheme used by provably-fair casinos. The key insight: the server commits to the outcome before revealing it, so any post-hoc manipulation would break the hash. Players can verify this independently.

For non-gaming contexts: provably-fair mechanics apply anywhere trust is critical. An Australian business running a prize draw via an app could use the same commitment scheme to prove the draw wasn’t manipulated. A live bidding platform could use it to prove bid timestamps weren’t altered.

Zero-Downtime Deployment: The Expand/Contract Pattern

Deploying updates to a live multiplayer app is genuinely risky. Players are in active sessions. The game state lives in memory. A restart during an active game session breaks that game for those players.

Suite of Spades uses two techniques that any Australian business running a live app should understand:

Rolling ECS deployments: Rather than stopping all instances and starting new ones simultaneously (which causes an outage), ECS brings up a new task, waits for its health check to pass, then terminates an old task. Players on the terminating instance finish their session; new connections go to the new instance. With multiple instances running, a deployment has zero visible downtime.

Expand/contract database migrations: When a database schema changes, a naive migration might rename a column — which breaks old code that still references the original name. Expand/contract solves this: in the first deploy, add the new column alongside the old one (expand). In subsequent deploys, migrate data into the new column. In a final deploy, remove the old column (contract). At no point does old code fail because a column it expects doesn’t exist. We ran these migrations against a production-schema replica before deploying to confirm they worked correctly under real conditions.

For an Australian business: if your app will have users during an update, zero-downtime deployment matters from your first release, not from your tenth. Build it in from the start.

What It Costs to Build a Real-Time Multiplayer App in Australia

Real-time apps cost more than standard apps because of the architectural complexity, the infrastructure requirements, and the testing depth required.

App typeBuild timelineCost (AUD)
Simple real-time feature (live chat, live leaderboard, live notifications)8-12 weeks$18,000-$35,000
Real-time multi-user experience (quiz, auction, collaborative tool)14-20 weeks$40,000-$75,000
Full multiplayer game engine with matchmaking and bots20-32 weeks$70,000-$130,000
Multi-tenant platform (multiple brands on one backend)28-40 weeks$100,000-$200,000+

These figures include architecture design, backend microservices, iOS and Android client apps, AWS infrastructure setup, CI/CD pipelines, load testing, and 3 months post-launch support. Australian GST applies.

Infrastructure costs are separate and ongoing. A production AWS ECS cluster running 8 services, an RDS PostgreSQL instance, and associated networking costs approximately AUD $800-$2,500/month depending on instance sizing and traffic. This is the cost of real-time infrastructure — it doesn’t sleep.

What Your Developer Quote Should Include for a Real-Time App

When evaluating quotes, a complete scope for a real-time app should explicitly address:

ItemWhy it matters
WebSocket server (not just HTTP API)Real-time push; without it you have polling, which breaks under load
In-memory state managementGame/session state lives in memory between moves
Reconnection handlingUsers drop connections; the app must gracefully reconnect them to their session
Bot/placeholder usersSolves the cold-start problem
Load testing to concurrent user targetsReal-time apps fail in specific ways under concurrent load
Zero-downtime deployment planRolling deploy strategy defined before first release
Database migration strategyExpand/contract pattern or equivalent
Separate staging environmentProduction-schema replica for migration testing
Monitoring and alertingPrometheus/CloudWatch + alerting on connection counts, error rates, latency

Any quote that doesn’t address these items explicitly will encounter them as scope creep. Real-time complexity is well-understood — it just needs to be scoped honestly from the start.

For the cloud infrastructure layer — AWS ECS, RDS, ECR, and managed DevOps for your real-time app backend — Cloud Geeks designs and manages AWS infrastructure for Australian software businesses, including production ECS clusters and CI/CD pipelines.

Ash Ganda covers how Australian businesses are applying real-time AI and automation architectures to build competitive digital products in 2026.

Part of the Ganda Tech Services family, Awesome Apps builds iOS and Android applications for Australian small and medium businesses.


Frequently Asked Questions

How much does a real-time multiplayer app cost to build in Australia? A focused real-time feature (live chat, live leaderboard) costs $18,000-$35,000 AUD. A full multi-user real-time experience with matchmaking costs $40,000-$75,000. A complete multiplayer game platform with AI bots, multi-tenancy, and a mobile client sits at $100,000-$200,000+. Ongoing AWS infrastructure adds $800-$2,500/month.

What’s the difference between a WebSocket app and a standard app? A standard app uses HTTP — the client asks the server a question and the server answers. A WebSocket app maintains a persistent, two-way connection. The server can push data to the client at any time without being asked. This is necessary for real-time experiences where multiple users need to see the same state update simultaneously within milliseconds.

Do I really need microservices for a real-time app? Not always. A simple real-time feature added to an existing app doesn’t require 8 services. But when real-time is the core product — especially with multiple user types (players, bots, observers), multiple subsystems (auth, payment, game state), and uptime requirements — separating services by failure domain becomes important. It’s the difference between an analytics bug taking your game down or not.

How do you handle users who lose their internet connection mid-session? Reconnection logic is a first-class architecture concern. When a client disconnects, the server preserves the session state for a configurable window (typically 30-90 seconds). The client attempts to reconnect with the same session token. If successful, the server replays the state delta — all moves made during the disconnection are delivered in sequence. If reconnection fails, the session is gracefully terminated and other users in the room are notified.

What’s a multi-tenant app and does my business need one? Multi-tenancy means one backend serving multiple isolated brands or clients. You need it when: you’re building a platform (franchises, venues, white-label clients) where each customer gets their own isolated instance of the product, you’re launching in multiple markets under different brands, or you want to run multiple apps without maintaining separate backends for each. For a single-brand app, multi-tenancy adds complexity without benefit — skip it.

Ready to build your app?

Talk to a Sydney app developer — free.

30 minutes. We'll tell you what your app needs, how long it takes, and what it costs. Real answers, no sales pitch.

Book Free App Strategy Call →

Free · 30 minutes · No obligation