Just a few thoughts on concepts needed to give mobile users of your SOA infrastructure the best, fastest User eXperience possible:
- If you care about speed & scalability, your web service will always check the distributed cache before querying the database.
- If you have to get your answer from your database, make sure to add the answer to your distributed cache concurrently with returning it to the user.
- Don’t ever call your primary database directly. Call one of your horizontally-scaled relational or NoSQL replicas.
- Use download-only replication to create as many read-only replicas as you need. Your replicas can contain complete copies of the primary database or just shards of data as appropriate.
- When sending data up from the clients to your servers, never let your web services insert, update, or delete directly against the primary database or the replicas.
- Have your web services drop that uploaded data in a queue and update the distributed cache while letting worker processes perform those DML operations against the primary database.
- Use peer-to-peer replication to maintain more than one read/write primary database at the top of your hierarchy.
- Remember to create and maintain more than one hierarchy in different geographies using the same peer-to-peer replication to provide even more availability, scalability, and performance to your mobile users all around the world.
- Your mobile users will be connecting to your service via slow, intermittent, unpredictable wireless data networks so always use small, efficient wire protocols like REST and data serialization like JSON.
Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany