A Gentle Windows Azure Introduction
Cloud Infrastructure is a technology that’s here to stay. Different business models will factor into how its used. Start-ups will likely primarily use Cloud Infrastructure, while larger Enterprises will take a hybrid approach. In looking at the Windows Infrastructure, I feel Microsoft will be pouring more resources into making Azure the primary location for hosting Microsoft based applications. I think we’ll see more innovation and updates in Azure than anywhere else. If you haven’t already started looking at Azure, I’ve compiled my own Windows Azure Introduction.
If you currently have an MSDN Subscription, this offers you the best way to get started with Azure. MSDN Subscribers currently get a $150/month credit for Azure Services. Also you do not need to provide a credit card to setup. $150 goes a long way for non-production work. If you don’t have an MSDN Subscription you can still get a 30 day trial, but you have to supply a credit card.
Azure Components
Azure provides a number of components that span both IaaS and PaaS. Overall the Azure Portal is very intuitive and easy to work with. Its also very easy to see what’s happening in the background as you build VM’s or add new components. From a charge back perspective I found it very easy to see what your billing looks like and forecast out a monthly bill. Here’s an overview of the Azure Components available.
Compute Components
Web Sites is Azure’s simplest form of PaaS. Azure Web Sites is pure IIS8 hosting. There’s quite a bit of customization available, but you can also very simply get a site created and on the Internet. Of course this isn’t unique functionality. But the power comes from the ability to easily hook into the other Azure components. Most of the configuration that you can do native in IIS8 is available to configure. This includes the ability to create Virtual Directories and add Handler Mappings.
Virtual Machines give you the ability to create virtual servers on demand, with different levels of resources. This is the primary component for doing IaaS with Azure. Currently Windows 2008 R2, Windows 2012, and various flavors of Linux are available. Another option here is the ability create a VM from a Gallery of Server Images with preloaded software like SQL Server, Sharepoint, and also Oracle products.
Mobile Services is Azure’s Service for creating a Mobile Application backend quickly and easily. The goal is to create a black box for Apps to talk to, and front end developers don’t have to worry about building web services and databases. IOS, Android, and of course Windows Phone are supported. But also HTML/Javascript front ends are supported. Configuring different Identity providers like Google, Twitter, or Apple is also available.
Azure Cloud Services are a combination of WCF Services, Windows Services, and Console Applications. Cloud Services can communicate with Azure Databases and Services Buses. The purpose of Cloud Services is to provide back end processing that does not impact front end response time.
Data Services
SQL Databases gives you SQL Server Databases as a PaaS, versus creating an Azure VM running Windows and SQL Server. You don’t have to worry about managing the Server OS or SQL Server, just the databases you need. Azure guarantees a 99.9% SLA for any edition of SQL Databases by replicating every database between data-centers. By choosing the Premium edition you get access to Performance SLAs and database sizes up to 150GB. Other components will also create databases for you on the fly like Mobile Services. The Azure Portal provides a Web Admin GUI similar to SQL Management Studio. Keep in mind you can also connect on-premise apps to an Azure SQL Database, so this really opens up options for both Development and Infrastructure teams.
Azure Storage provides the backbone for many of the other components. Virtual Machine drives comes from a storage account. A storage account has 3 primary data types. Blobs, which are raw data files. Queues, which are Message Queues. Tables, are basically NoSQL Document Databases. Each of these data types of Client Libraries that allow you to interact with them from within the Cloud or from outside the cloud. I think Storage Tables offers functionality that was previously unavailable in the Microsoft stack.
HDInsight allows you to create Apache Hadoop instances for performing big data analysis. Its a good way to access this technology without having to build the infrastructure on premise.
The Cache Service allows you to create a distributed in-memory cache for your Azure Applications to utilize. Scalable from 128MB to 150GB, its a powerful solution to expand your application performance. This is very similar to AppFabric Cache for on-premise, or MemCached.
Recovery Services provides backup and restore functionality for Virtual Machines, SQL Databases, and Azure Storage.
App Services
Media Services provides Video Streaming Services and taps into Microsoft’s CDN to improve performance.
Service Bus is a recently added component, and offers really cool functionality for inter-application messaging. It is similar to Storage Queues but offers more flexibility and options. In addition to the Queue pattern you can also do Topic/Subscription, Push Notification, and Relaying with on-premise Queues. As with other components, the Service Bus can also be accessed directly from any where on the Internet. This is offers developers a ready to go messaging solution without having to stand up a Service Bus infrastructure.
Visual Studio Online is basically a hosted version of TFS. Again another option to get up and running without the infrastructure.
Biztalk Service gives you a hosted version of Biztalk. No huge difference between the on-premise version. But it gives you a ready to go EDI solution in the Cloud.
Scheduler is basically a cloud version of Task Scheduler. You can create a Job that fires on a certain schedule and either performs HTTP request to a certain endpoint or drops a message into a storage queue. This is the perfect solution for kicking off asynchronous processing in your Worker Roles.
Azure Directory lets you create an Application based User Directory. Similar in concept to ADAM, its designed to function as a directory for authentication and authorization into an application. Azure Directory is not a full fledged Active Directory. Most importantly you can not join Virtual Machines to it. To create a Windows Domain, you would need to setup a VM as a domain controller.
Network Services
Virtual Network provides two basic functions. First to create a VLAN to keep your Azure VMs and other components together. And second to setup connectivity back to your LAN via a VPN tunnel. If you want to get on-premise resources connected to Azure resources, this is key.
Traffic Manager enables you to configure advanced Load Balancing and Geo Redundancy rules. If you are working on a highly available solution, you will want to investigate this further.
Client Components
I’ve found managing and working with Azure to be very easy. The web Management Portal is very easy to work with. Visual Studio 2013 provides a high degree of integration with Azure. Not just from a development and deployment perspective, but also provides the ability to manage and create components. You’ll need to download and install the Azure SDK first. On that same page you can also download and install the Azure Powershell Modules. As I would expect, Microsoft provides a huge library of Powershell Cmdlets for managing Azure. You should be able to script and automate a lot of Azure setup in Powershell. More on that to come…