Most of you might know that Microsoft’s cloud database engine, SQL Database, implements throttling in order to avoid a rouge or poorly coded application from affecting performance of other applications that might be sharing the same cloud infrastructure.
Throttling is good because it promotes writing optimize code but it also helps to know the thresholds that define the size of the sandbox that the applications must remain in before the throttling kicks-in. I could not find concrete throttling thresholds and solid guidance until recently.
Microsoft just published some material on this topic; it covers not only the concepts (throttling, governance, etc.) involved in the resource management but also concrete throttling thresholds, best practices and code example. Check it out @ Resource Management in Windows Azure SQL Database
While watching API Design related presentations on InfoQ, I came across following books on Agile. These are kind of dated but still appear to have relevant information.
Scrum and XP from the Trenches – Download this book FREE (PDF)
Kanban and Scrum – making the most of both – Download this book FREE (PDF)
Watched this video on InfoQ about designing APIs for the mobile applications. Few good tips and insights I gathered after watching it are as follows.
- Things to consider while designing the mobile APIs
- Battery life
- Chunky vs. Chatty
- gZip data, especially JSON.
- Instead of loading everything in one go, think about loading data on events.
- Should the application (hence the APIs) be optimized for reading or writing or both?
- Have caching strategy in place. Cache, not only on the client side, but also on the server side.
- Granular, true REST interfaces are great but you might end up making several calls to get the data your screen needs. You might have to create screen specific APIs ( the APIs that provide data and services for one screen ) in order to reduce the # of calls made to the server.
- Pre-generate or pre-process and cache the data that you think the application might need.
- Offload work to the client.