RTT is brainCloud's new Real-Time Tech sub-system, which enables a whole new generation of features like real-time events, chat, messaging, online matchmaking, lobbies, and more.
RTT expands upon the brainCloud request+response architecture by adding a live bi-directional communications channel between the client and server portions of your app. This means that your service can push events to your client apps in real-time, without polling, enabling more exciting experiences.
As you would expect, adding these capabilities to brainCloud comes with new infrastructure costs - but as always, we have worked very hard to keep the costs to you very low and elastic.
RTT is completely optional. No change to pricing for apps that don't use it.
Pricing for apps using RTT is proportional to # of concurrent RTT connections (they use server resources) and the amount of traffic sent over those connections. Makes sense, right?
When enabled, RTT involves the following costs:
Incremental Plans. RTT support is included in the "Plus" plans, which are described here!
Bulk charge for pushing the RTT events to recipients (i.e. deliveries). We do so at a 100:1 bulk ratio - so basically 100 of these bulk RTT pushes = 1 API count. That's a pretty great deal!
Charge for peak concurrent RTT connections per hour. RTT plans include a certain amount of connections for free (it will vary by plan). Above this number, the developer will be charged 10 API counts per connection.
Let's try some numbers. We will use as our example an RTT-enabled app that recently launched on brainCloud. It is averaging about 35K daily active users, and 1.75M API calls per day (~50 API/DAU).
The devs have added group-based Chat and Messaging. Our stats are showing that the app is averaging about 500 concurrent RTT connections (CCx's), and that users are sending about 10,000 messages (chat + messaging) a day. This equates to about 1 message per 75 minutes that a player spends in the game. This seems like it's very little, but chat isn't the primary function of the app, and people spend much more time listening to chat than posting to it.
Groups in the app can have up to 50 players - but far less than 10% of players would be online at any time. For discussion purposes, we'll assume that each message sent gets received by 5 players. [That's probably way high, especially considering that this app's traffic is split between chat and messaging - which is point-to-point.]
Anyway, let's do the basic calculations:
RTT Deliveries = 10,000 x 5 recipients x 30 days = 1,500,000
RTT CCx = (500 - 100 free sessions) x 24 hours x 30 days = 288,000
So how many API counts does this add to the app? As you will recall, each additional CCx is 10 API calls, but deliveries are very inexpensive at 100 delivers per 1 api count:
RTT Deliveries API Counts = 1,500,000 / 100 = 15,000 API
RTT CCx API Counts = 288,000 x 10 = 2,880,000 API
Which totals out at of 2,895,000 API calls - which at ~$10 / M = $29.00* of RTT Usage.
Note: * Plus the cost of the RTT-enabled plan!
As you can see above, RTT costs are greatly affected by how you implement your app. Be smart about when and how you use RTT to lower system impact and reduce your costs!
Tips for keeping RTT costs low:
Enable / disable RTT as appropriate in your app to keep the concurrent connection charges low. To minimize costs, don't have it enabled in parts of your app where real-time events can't be viewed, acted upon, etc.
Bulk delivery charges are a bit of a wild card -- their cost is directly related to the # of recipients of each event. Chat, and especially global chat channels, are the most expensive features for bulk charges.
Tips for reducing Chat traffic:
Segment your traffic across multiple channels if you can - by topic, region, language, etc. Traffic in smaller, focused channels costs less - and is more engaging for the users to boot!
Connect / disconnect from channels dynamically. The brainCloud API is fast - use it! Avoid connecting simultaneously to a bunch of channels when only one can be viewed at a time!
If you have questions or comments on the planned RTT pricing model, be sure to hit us up on support chat! We would appreciate the feedback!