I recently got enrolled in the Windows Azure Advisors program. It is a group of Windows Azure architects, developers and the MS Azure teams to collaborate on ideas, to discuss upcoming features, and really to help out each other by asking and answering questions! Looking forward to more Azure learning and discussions.
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.
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.
The following case studies explain in detail how Microsoft IT is utilizing Windows Azure for their own applications. Makes an interesting read, especially the technical architecture diagrams in the case studies.
Recently Microsoft announced Premium Edition of SQL Database. In simple words, it allows you to reserve the capacity so that it is not shared with other tenants! Similar to having your dedicated SQL infrastructure minus the maintenance overhead that comes with it.
Caution – This could be a double-edge sword though. I believe that auto-throttling in cloud environments helps promote good architecture and coding practices, hence having a dedicated environment with elevated limits may be seen by some as a solution to bad architecture and coding problems; instead of fixing the code, they might be inclined to throw more capacity at it. Be careful!