Introduction to Azure
Introduction to Azure
Born only a few years ago, cloud computing is capturing the imagination of startups and large corporations alike. In its simplest form, cloud computing is an evolution of traditional hosting models; as such, it isn't necessarily a new technology. Rather, it's a new concept that offers new opportunities and challenges not found in existing business models. Much as agile programming provided a new software development paradigm, cloud computing provides a new delivery model for Internet-based solutions.
Introduction to Cloud Computing
Let's begin with what cloud computing has to offer compared to traditional hosting services. The following capabilities are generally expected from large cloud-computing providers:
- Automatic and unlimited scalability. The promise that if your service needs more resources, more resources will be provisioned automatically or with limited effort. For example, if you deploy a web service, and you experience a sudden surge in processing needs, your services will automatically expand to additional servers to handle the temporary surge and contract to fewer servers during off-peak activity.
- Unassisted deployment. The promise that if you need to deploy additional services or databases, you don't have to call anyone or open a service ticket. The cloud service provider will give you the necessary tools to perform self-service.
- Built-in failover. The promise that if one of your servers fails, no one will ever notice. For example, if the server on which your service is installed crashes, a new server immediately takes over.
- Grow as you need; pay for what you use. The promise that you only pay for the resources you use. For example, if your service experiences a sudden surge in processing needs for a day, but it scales down to its usual usage for the rest of the month, you're only charged marginally more than usual for the temporary surge.
Who Is Doing What in the Cloud?
Smaller companies, including startups, are building services that can run in the cloud, whereas larger companies are investing in building cloud-enabled infrastructure. Some corporations are building consulting services and offering to assist customers implement cloud-enabled solutions; others, like Microsoft, are investing in the core infrastructure and services that make the cloud a reality.
Microsoft has traditionally been a software provider, but the company has slowly moved closer to hardware solutions over the years. In the late 1990s, Microsoft engaged with Unisys, HP, Dell, and other hardware manufacturers to provide highly available Windows-based platforms (Windows Data Center Edition). At the same time, Microsoft invested significant resources to build its Microsoft Systems Architecture (MSA). This program was designed to help corporations plan, deploy, and manage Microsoft-based IT architecture. These initiatives, along with many others, helped Microsoft develop strong knowledge capital around highly available and scalable architectures, which are a prerequisite for building cloud computing platforms.
Amazon entered the cloud computing space with its Elastic Compute Cloud (EC2) services in 2005. A few years later, Google and IBM joined forces to enter this market, and Microsoft announced many of its cloud computing plans during 2009, including the Azure platform. As part of its Azure platform, Microsoft delivered a very unique component in its cloud computing offering: a transactional database called SQL Azure.
Typical Cloud Services
Generally speaking, cloud computing comes in one of three flavors:
- SaaS: software as a service. This delivery platform is usually in the form of web applications that are made available on the Internet for a fee. This model has been around for a few years.
- PaaS: platform as a service. This service offers a computing platform that facilitates the use and deployment of other services and scales according to the general expectations of cloud computing, such as scalability and pay-as-you-go.
- IaaS: infrastructure as a service. This offering provides the necessary infrastructure that offers the scalability typically associated with cloud computing.
SaaS, PaaS, and IaaS are considered the fundamental building blocks of cloud computing. Other acronyms are being manufactured to depict new flavors of cloud computing, such as desktop as a service (DaaS), hardware as a service (HaaS), and even research as a service (RaaS). Pretty soon, the entire alphabet will be consumed in describing the many flavors of services that can be created in the cloud.
Discovering the Microsoft Azure Platform
Let's discover the three major components of the Microsoft Azure platform, also called the Azure services: Windows Azure, Windows Azure AppFabric, and SQL Azure. All three offer unique capabilities that provide a complete array of services needed to build highly scalable and secure solutions:
- Windows Azure. A collection of virtual Microsoft operating systems that can run your web applications and services in the cloud. For example, you can create a web service that converts US dollars to Euros; then, you can deploy the service on Windows Azure and allow it to scale as needed. Note that Windows Azure can run .NET applications and other platforms as well, including PHP.
- Windows Azure AppFabric. A set of services that provide core capabilities such as federated identity for access control, and a service bus for a messaging-based subscriber/publisher topology.
- SQL Azure. Microsoft's transactional database offering for cloud computing based on Microsoft SQL Server 2008. For example, you can store your customer database in the cloud using SQL Azure and consume customer data using services deployed in Windows Azure.
Figure 1-1 shows a simplified corporate environment connecting to the Microsoft Azure platform and consuming all three services. This diagram is overly simplified, but it conveys an important message: Microsoft Azure is designed to extend a corporate environment securely for web applications, services, messaging, and data stores.
Figure 1 - Microsoft Azure platform overview
Why Microsoft Azure?
One of the fundamental questions that's frequently asked is, "Why?" Who's interested in developing applications in Windows Azure in the first place? To answer this question, let's look at the evolution of web platforms.
About 15 years ago, when the public Internet was all about bulletin board systems (BBBs), Gopher services, and $500 9600-baud modems, the question was, "Will the Internet stick as a technology?" That question has been answered, but many new concepts have grown since then, including web sites, hosting centers, and SaaS.
This evolution relies on a common theme: decoupling. BBSs decoupled public information from libraries; web sites decoupled user interfaces from computers; hosting centers decoupled hardware from a company's own infrastructure; and SaaS decoupled complex applications from corporate computers.
Cloud computing on Microsoft Azure is a natural evolution of computing flexibility in which the actual physical storage and implementation details are decoupled from the software solution. For example, deploying services in Windows Azure doesn't require any knowledge of the machine running the service or any of the core services (IIS version, operating system patches, and so on). You may never know which machine is running your software. Connecting to a Windows Azure server is performed through logical names, just like connecting to SQL Azure.
The ability to disassociate machines from data and services is very powerful in itself. Although it's still an early-stage platform, Microsoft's Azure environment allows multiple business scenarios to flourish, including these:
- Seasonal applications. Developing web sites or services that have a tendency to grow and contract over time provides potential savings opportunities because cloud computing uses a pay-as-you-use model.
- Short life span. Development of prototypes or applications with short lifespans is also attractive, such as event-registration sites. You can also build development and test environments for remote teams.
- Split storage. Certain applications need to keep storage in a safe location but may not require frequent access, or may require high availability. Designing or modifying an application so that the data is stored locally and in SQL Azure (or other data-storage formats) may make sense.
- 'Small companies and ISVs. Smaller companies that can't afford large and complex infrastructure to start their business can take advantage of the financial and inherent infrastructure benefits of Microsoft Azure. Independent software vendors (ISVs) can also benefit from cloud computing. For example, an ISV can use SQL Azure to store application logs or centralize reporting features from multiple disconnected locations.
About Geographic Locations
In order to provide high availability, Microsoft established regional data-center operations that allow customers to select geographically dispersed services. When you create your Azure servers, you need to specify which geographic location the servers should be provisioned in. This feature is called Windows Azure geolocation.
Initially, it may be tempting to choose your company's geographic location for improved performance. However, if the availability of your Azure services is more important than response time, you may need to pick another location. When selecting a geographic location, make sure to consider the following:
- Performance. When your data is closer to your users, network latency may be noticeably lower, improving customer experience.
- Disaster recovery. If ensuring the availability of your cloud platform is important, you may want to disperse your services and data across multiple regions.
- Legal factors. Consider the type of information that will be stored in the cloud, and ensure that you aren't bound by specific regulations and mandates that may prevent you from selecting remote geographic locations. Currently, you can select from one of the following geographic locations, each of which is supported by a regional data center:
- Anywhere Asia
- Anywhere Europe
- Anywhere US
- North Central US
- North Europe
- South Central US
- Southeast Asia
In addition, you can create an affinity group that lets you keep certain Azure services together. Such a group creates a geographic dependency between Windows and data services deployed in the Microsoft Azure platform. If Microsoft is obligated to move a service to another geolocation for regulatory reasons, the related services will likely move along. For example, if you develop an Azure service that depends on a SQL Azure database, you may want to ensure that they both reside in the same geolocation and that they belong to the same affinity group.
Additional locations will be added over time. As a result, you may need to reevaluate on a regular basis whether a service is deployed in the most appropriate geographic location.
Storing Data in Azure
As you can imagine, cloud computing is all about storing data in a simple yet scalable manner. The Microsoft Azure platform doesn't disappoint and offers a variety of storage models that you can choose from. This section summarizes the four ways you can store your data in Azure; three of these approaches are considered part of the Azure services.
Figure 2 provides an overview of the storage options and the available access methods. The set of storage options provided by Windows Azure is referred to as Windows Azure storage, which includes blobs, tables, and queues. Windows Azure storage can be accessed directly from a corporate environment using HTTP/S calls, providing a simple hook into the Microsoft Azure platform.
In addition to using Windows Azure storage, consumers can make requests directly to a SQL Azure database using ADO.NET or ODBC, because SQL Azure supports the Tabular Data Stream (TDS) protocol that SQL Server uses. As a result, applications and services connecting to a SQL Server database can just as easily connect to a SQL Azure database.
Figure 2 - Microsoft Azure data storage access
Following are further details of the four storage types:
- Azure services storage. The Azure services offer three distinct storage models that are tailored to specific needs:
- Table. A named value-pair storage that allows you to store very large amounts of data. This storage model includes automatic load balancing and fail-over. It's called a table because you can store multiple values in each row. However, this isn't a transactional storage mechanism; no indexing or table joins are possible. Also, the columns defined in a table have storage limitations. For example, a string data type is limited to 64KB.
- Blobs. An interface to store files, with a maximum limit of 50GB of storage for each blob. You can easily access blobs using a straight HTTP request through a Representational State Transfer (REST)) call.
- Queue. A highly available mechanism for storing messages for consumption by other applications or services. A typical usage of queues is to send XML messages. Certain limitations apply to queues, but you can access queues through REST as well.
- SQL Azure. SQL Azure is a transactional database that provides familiar data access through ADO.NET or other providers and gives you the ability to manipulate the data using standard T-SQL statements. Databases in SQL Azure are limited to either 1GB or 10GB, depending on the edition selected.
Scott Klein is co-founder of Blue Syntax, a consulting a training company specialized on the Azure platform. Scott has been working with SQL Server for nearly 20 years, working with companies large and small in fields such as medical, finance, and retail. Scott is a veteran author, having written a number of books including the soon to be released Pro SQL Azure. Scott is a SQL Server MVP and President of the South Florida SQL Server Users Group and the newly formed Azure PASS Virtual Chapter. Scott also organizes and runs the South Florida SQL Saturday and speaks frequently at SQL Saturday and .NET Code Camp events as well as user groups. He was lucky enough to speak at the 2008 European PASS conference and recently returned from Germany providing a 3-day deep dive training at the PASS Camp.
His online presences include: