A lot of people who talk about getting started with Azure but don’t know where to begin. They think that Azure “is just Virtual Machines sitting in a data center somewhere”. But, as you’ll see, Azure has so much more to offer, regardless of your project needs.
Windows Azure’s compute offerings fall into three main categories: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Let’s take a side-by-side look at each offering compared to the traditional On Premises model.
Infrastructure as a Service – Azure Virtual Machines
I will start with IaaS since it is what people are most familiar with. In short, IaaS gives you a server in the cloud (virtual machine) that you have complete control over. With an Azure VM, you are responsible for managing everything from the Operating System on up to the application you are running.
This mode of operation will feel most like a typical on premises virtual machine where you remote desktop into the server to manage it instead of sitting down in front of a physical keyboard and mouse.
If you need a solution that requires custom third party software or multiple applications running on a single machine, then IaaS might be for you. You can learn more about Azure IaaS here.
Platform as a Service – Azure Cloud Services
An Azure Cloud Service consists of two components: your application files (source code, DLLs, etc.) and a configuration file. Together, these two elements will spin up a combination of Web Roles and Worker Roles to execute your application. With Cloud Services, Azure handles all of the tedious Operating System details for you, so you can focus on what matters – building a quality application for your users.
A Web Role is an Azure VM that is pre-configured as a web server (running IIS) and will automatically have your application loaded on it by the time the server fully spins up. This will create the public endpoint for your application – usually a website, but it could also be an API or something similar.
Worker Roles run alongside your Web Roles and are responsible for performing computing functions to support your application. Typically, the Web Role will accept some sort of user input and queue up an action for the Worker Role to process at a later time. This allows the Web Roles to be more responsive and to fire-and-forget tasks to be processed later.
You can pre-configure the number of Web and Worker Roles you want to start your application with and Autoscale to add or remove additional resources depending on demand.
You can get started with Cloud Services here.
Platform as a Service (Light) – Azure Websites
Azure Websites are, by far, the easiest, cheapest, and fastest method of getting your application to the cloud. Websites give you the least amount of configuration control over your application, which is perfect for simple web applications that do not require more complex configurations for scaling and data processing.
Deploying your application to an Azure Website is mind-numbingly easy. You can use your favorite IDE or configure source control (Git, GitHub, Bitbucket, CodePlex, TFS, and DropBox) to push to your website and let Azure take care of the rest for you. Continuous Integration, built in, right out-of-the-box.
You can even include a MySQL or SQL Server database when provisioning an Azure Website through the Azure Management Portal. Once your Website has been configured, simply update your Web.config (or similar) with your new database’s credentials, and you are good to go!
Software as a Service – Basecamp, Salesforce, Office 365, Azure Websites
Finally, Software as a Service applications are built and hosted through 3rd party vendors who typically charge for a certain level of service – $30/month for X projects and Y users.
Azure Websites can serve as a SaaS offering as well. You can configure a WordPress, Drupal, OpenX, or even phpBB site with a single click. No code, no deployment hassles, and minimal configuration. Azure Websites lets you stand up the service you need in minutes, not hours or days.
Most SaaS applications today are built on a cloud platform due to the low cost of entry – with prices continually falling – and the ability to scale up as your customer base grows. If Dropcam, SmugMug, or Netflix got one million new customers tomorrow, their infrastructure (Amazon Web Services) would be able to accommodate them.
While each Azure Compute offering has their pros and cons, I personally prefer to build my projects around PaaS – Cloud Services. With PaaS, you get the maximum possible amount of flexibility before you have to start worrying about the tedious world of OS maintenance, versions, security, patches, etc.
Regardless of your application’s demands, Azure’s robust range of Compute options will allow you to custom tailor a solution that fits your needs perfectly.