This is a very open-ended question, and you can choose your architecture for optimization for different things (for example, cost, availability, speed). You will need to decide whether to create a single-user or multi-user application. The first, perhaps, is simpler and simpler in terms of each client, since there is actually one client (or church) per deployment; however, this can be costly to run, as during off-peak hours you are likely to have unoccupied roles in the network / employee. The multi-tenant app allows you to better use common calculations, but you will need ways to measure each tenant. Even when using the application with multiple tenants, you can still work with the database with one tenant, if necessary.
You might want to consider a tiered pricing model based on some unit of operation (or a certain number of users per church). To help with the measurement, you can:
- Look at the storage analytics (this provides detailed logging of available blocks / tables / queues, including accurate access to resources, at what time).
- Build your own performance counters and run them with Windows Azure Diagnostics.
- Look at the consumption of SQL Azure SQL ( including dynamic controls )
For the base price: consider a few things:
- For SLA and overall uptime reliability, you need at least 2 copies
- Always go with the smallest instance size you can work with, and reduce the number of instances with increasing load.
- Suppose you are optimizing the cost, so you run all the processing / scheduling / queuing scheduling / etc in your instances of the web role without any instances of the worker role.
- For this exercise, suppose you have to calculate multiple tenants and a database with one tenant (Web Edition, average and 100 MB per tenant). This results in $ 5 for each tenant in the database.
- Suppose, say, 5 churches. Assume 2 minimal Small copies and suppose that they break up to 4 copies within 12 hours during the day. This is an average execution speed of 3 copies, or $ 260 per month.
- Assume some bandwidth costs, oh, $ 10 per month.
- Suppose that some storage costs for queues, drops, diagnostics, for example, 25 US dollars per month.
With the assumptions above (fully composed to give you a straw to start):
- DB: $ 5 x 5 tenants: $ 25 per month.
- Calculate: $ 260 per month
- Bandwidth: $ 10 per month
- Storage: $ 25 per month
- Total points: $ 300-400 per month.
Now: this is fully compiled, and I don’t know how much data or bandwidth your application will store / generate. But hopefully this gives you a general idea of how to start predicting value. Please note that I did not consider storage transactions in the estimates. I think this is just background noise.
source share