Cloud Solutions for .NET projects

Introduction

These days, cloud computing and cloud hosting are very popular topics and a lot of solutions already are cloud based. However, we still need to deal with some unanswered questions: what cloud provider to choose, what services we need to order, and how much it will cost. Today, we are going to explore the answers to all of these questions.

Why?

Why should we care about the cloud? What reasons lead us to choose any of the cloud computing or cloud hosting providers? From a business perspective, the main purpose of the cloud is to reduce IT operational costs by outsourcing hardware and software maintenance and support to the cloud provider. But, let’s start from the beginning. We often see abbreviations like IaaS, PaaS and SaaS when we talk about the cloud. What do they mean?

IaaS (Infrastructure as a Service) is a traditional model where service providers provide computing resources such as servers, storage, and other forms of low level network and hardware resources in a virtual, on demand fashion over the Internet. IaaS, in a general sense, provides the ability to demand resources in specific configurations at will and delivers value similar to what one might find in a traditional datacenter.

PaaS (Platform as a Service) is a model where service providers provision fully-functional computing and solution stacks on which applications are deployed. The provider provides the networks, servers, and storage for the environment, as well as manages varying levels of scalability and maintenance. Examples of PaaS include: Windows Azure Cloud Services, AWS Elastic Beanstalk, Cloud Foundry, Heroku, Force.com, Engine Yard, Mendix, OpenShift, Google App Engine, AppScale, OrangeScape and Jelastic.

SaaS (Software as a Service) is a software distribution model where a specialized software functionality is delivered over the Internet to users who intend to use the set of delivered functionalities to augment or replace real world processes. Examples of SaaS include: Google Apps, Microsoft Office 365, Petrosoft, Onlive, GT Nexus, Marketo, Casengo, TradeCard, Rally Software, Salesforce, ExactTarget and CallidusCloud.

If we look at the custom .NET solutions we are building for our clients, a good hosting option would be the Windows Azure Cloud from Microsoft as it provides PaaS for .NET. Actually, it provides both a platform as a service (PaaS) and infrastructure as a service (IaaS) and supports many different programming languages, tools and frameworks, including both Microsoft-specific and third-party software and systems. But, for the time being, let’s concentrate on .NET [link].

Keep it simple

Let’s take several projects and try to assemble components for them in the Windows Azure Cloud.

Project A

For the first example let’s look at a project where we need to build a simple brochure website with a database size up to 100MB. Redundancy is not critical, and the planned load is up to 500 unique users per day. What services do we need to order to host this solution on the Windows Azure cloud?

Web hosting:

1 Small Windows Azure Web Role Instance for $57.76/month

Database:

Windows SQL Azure database up to 100MB for $5.00/month

Extra services:

Bandwidth up to 15GB/month for $1.20/month

Total price per month would be $63.96/month.

Project B

The second example is a more complex project. We need to build a public web site with an administrative portal. A background worker should execute the same scheduled tasks and extra storage for generated PDF files is needed. A database is migrated from legacy SQL Server and can grow up to 10GB. A monthly mass mailing is planned for 20,000 customers. The planned load is up to 2,000 unique users per day. The redundancy is critical for the public web site. To host this solution on the Windows Azure cloud we need the following components.

Web hosting:

2 Small Windows Azure Web Role Instances for $115.52/month

Background worker:

1 Extra Small Windows Azure Worker Role Instance for $14.88/month

Database:

Windows SQL Azure database up to 10GB for $45.96/month

Extra services:

Mailing service from sendgrid.com. A Bronze Plan for $9.95/month

Storage as Windows Azure Geo Redundant Storage of 10GB for $3.80/month

Bandwidth up to 40GB/month for $4.20/month

Total price per month would be $194.31/month.

Project C

For our third example, let’s use an enterprise solution with a mobile device integration layer. We need to build a redundant public web site with a connected members area and an administrative portal. A background worker should execute heavy long running tasks. A REST Web API endpoint should be separately hosted and be redundant. A database is migrated from the legacy server and can grow up to 20GB. Extra storage is needed to store uploaded content. A monthly mass mailing is planned for 80,000 customers. The planned load is up to 12,000 unique users per day. Performance and load speed are critical.

That is an animal! To host this solution on the Windows Azure cloud we need the following components.

Web and Rest Web API hosting:

2 Medium Standard Windows Azure Web Sites Instances for $297.60/month

Background worker:

1 Large Windows Azure Worker Role Instance with configured cache cluster on it for $238.08/month

Database:

Windows SQL Azure database up to 20GB for $65.94/month

Extra services:

Mailing service from sendgrid.com. A Silver Plan for $79.95/month

Storage as Windows Azure Geo Redundant Storage of 120GB for $11.40/month

Bandwidth up to 122GB/month for $14.04/month

Total price per month would be $707.01/month.

What else?

Pricing

As you can see, the price variations between different project sizes are quite big. On the other hand, we are not talking about licenses or hardware maintenance costs as they are already covered with the price per month. The prices above are calculated with the default Pay as You Go plan. The Pay as You Go plan offers flexibility with no upfront costs and no long term commitment. The six and twelve month plans offer up to 29.5% savings. They can be applied if your expenses for Windows Azure cloud exceeds $500/month [link].

Backups

To draw a full image of the cloud solution we can add a backup subsystem to it. The Windows Azure cloud guarantees data protection after hardware fails. But, there is always the possibility of human fault - a customer or administrator or event application code can break your data. It’s a good idea to backup your database every night with the ability to rollback. One of the solutions could be a SQL Azure Backup Cloud Service from RedGate [link].

Project life-cycle

What we haven’t yet talked about is a project lifecycle. In most cases, a project doesn’t end with its release. Usually, we need to implement new features, make some changes, or fix a bug. Before releasing changes into production we need to show them to the client and do some testing. For this reason, a staging environment is required where all testing can be accomplished. The main point of the staging tier is that this environment should be as identical to the production environment as possible. Thanks to cloud possibilities, we can accomplish this very easily. The best part is that in a staging environment we have the ability to run for only a short amount time, which saves money.

SLA

A service-level agreement (SLA) is the part of a service contract where a service is formally defined. Let's take a Windows Azure SLA and see how we as consumers of the cloud services are protected in case of downtime [link]. For the Caching, CDN, Media Services, Mobile Services, Service Bus, SQL Database, SQL Reporting, Storage and Web Sites cloud services Microsoft guarantees an industry standard uptime of at least 99.90%. If we look at actual numbers, then a 99.90% uptime has a possibility of downtime per year of 0 days 8:45:35.99 hours or 0 days 0:43:11.99 hours per month.

For the Cloud Services, Virtual Machines and Virtual Network services Microsoft guarantees that at least 99.95% of the time services will be up. If we look at actual numbers, then a 99.95% uptime has a possible downtime per year of 0 days 4:22:47.99 hours or 0 days 0:21:35.99 hours per month.

Conclusion

That's it. We talked about the cloud in general and now we know the differences between IaaS, PaaS and SaaS. We also know our options for different cloud providers. We talked about pricing models for various projects for the Windows Azure cloud and have covered questions related to backing up, project lifecycles, and service-level agreements. I’d also like to mention that we at Devbridge have been working with Windows Azure Cloud for over a year and see great potential in the technology, tools, and environment. In fact, all new websites we have built in the past six months are hosted on Microsoft Windows Azure!