© Pranab Mazumdar, Sourabh Agarwal, Amit Banerjee 2016

Pranab Mazumdar, Sourabh Agarwal and Amit Banerjee, Pro SQL Server on Microsoft Azure , 10.1007/978-1-4842-2083-2_1

1. Introduction to Microsoft Azure

Pranab Mazumdar, Sourabh Agarwal1 and Amit Banerjee1

(1)Bangalore, Karnataka, India

Electronic supplementary material

The online version of this chapter (doi:10.​1007/​978-1-4842-2083-2_​1) contains supplementary material, which is available to authorized users.

The cloud has become an important consideration in any meeting that you have with an IT decision maker. The benefits of having a cloud-based system make it attractive to adopt a private, public, or even a hybrid cloud. However, it is interesting to note that the cloud as it’s known today existed decades before the word “cloud” became fashionable!

Microsoft provided a large number of cloud services even before the cloud became the cloud, for example an e-mail platform like Hotmail. This was and still is a cloud-based personal e-mail service. Another service that Microsoft still hosts is its Xbox Live gaming service, which provides gamers with multiplayer gaming options, profile management, and social gaming experiences.

In this chapter, we will talk about cloud computing and how the concepts relate to Microsoft Azure. We will also look at the different service models and offerings available in Microsoft Azure and discuss some of the common services used with Azure SQL Server deployments.

Cloud Computing Overview

Cloud computing is an innovative platform that is revolutionizing the way we do computing. Cloud computing is based on the key principle of “pay-as-you-go,” whereby you don’t invest in the hardware or the software for your computing needs, but instead rent the computational power, storage, software, and other resources you need from a vendor. This reduces the overall investment needed. Cloud computing helps users and enterprises get global, highly available, request-based access to compute, storage, and software services. These cloud-based resources (compute, storage, or the software services) are based on the principles of resource sharing in order to provide a consistent and cost-effective solution.

Cloud computing relies heavily on the concept of virtualization, where physical computing resources can be divided into multiple independent virtual devices, each of which can be utilized to perform some sort of computing task. Virtualization helps create a highly scalable and agile system of computing units, which can be allocated and utilized on demand. Virtualization also helps reduce the hardware infrastructure related costs by better utilizing the existing hardware resources.

One of the most important design principles for any cloud computing environment is to make the best, effective, or optimal use of the shared resources. Since cloud resources are shared by multiple users and have the flexibility of being allocated on demand, effective use of these resources is of paramount importance. The ability to effectively utilize the shared resources reduces the overall cost to run and maintain the cloud computing environment.

Cloud computing provides a shift from the traditional CAPEX (capital expenditure) model, where organizations invest in acquiring fixed assets that depreciate over time, to an OPEX (operational expenditure) model, where the organization invests in operational expenses incurred during usage of services relying on a shared infrastructure. The phrase “migration to cloud” indicates this movement from the CAPEX to the OPEX model. The key points driving this migration to cloud infrastructure are:

  • Cloud computing helps businesses reduce initial costs of setting up data centers or other server environments as required so they can instead focus the time and energies on their core business and projects.

  • Since cloud computing resources or services can be provisioned and adjusted on demand, it helps reduce the “go-to-market” time for organizations and to meet the fluctuating demands of their business.

Characteristics of Cloud Computing

The key characteristics of any cloud computing environment are:

  • Agility: Cloud computing platforms are characterized by the agility with which new features and services can be introduced and how a new computing resource or a service could be spun out and become consumable.

  • Cost: Cloud computing platforms enable an organization to transition from a CAPEX model to an OPEX model. This helps reduce the initial cost for setting up a computing platform or in adopting newer technologies. A majority of the vendors that provide a cloud computing platform offer a pay-as-you-go model, which means consumers only pay for what they use.

  • Device and location independence: Cloud computing enables users and organizations to access their resources over the Internet, meaning the resources can be accessed from anywhere, regardless of which data center the resources are located in.

  • Maintenance: Since most of the maintenance is managed by the cloud computing vendor, consumers do not need to invest time and resources in maintenance.

  • Resource sharing: Since cloud computing is built on the principles of resource sharing, it allows the vendors to:

    1. Centralize their infrastructure in geographical locations with lower costs for real estates, electricity, etc.

    2. Effectively and efficiently use the computing resources.

  • Scalability and elasticity: Cloud computing allows for dynamic, quick and near real-time provisioning of resources and services. This helps users scale up or down their use in accordance with their business needs.

  • Reliability: Cloud computing platforms use multiple redundant sites. both local (same data center) and geo redundancy to provide for better business continuity and disaster recovery.

Service Models

As shown in Figure 1-1, most cloud computing providers provide services in the following service models : platform, infrastructure, and software.

A371128_1_En_1_Fig1_HTML.jpg
Figure 1-1. Representational view—service models

Platform as a Service

While the SaaS model can be the perfect solution for a majority of the software needs of an organization, the absence of the ability to customize and change the services as per the business needs make it unusable for some organizations. Since there is no customization available, SaaS services sometimes don’t fit the needs of every aspect of a user’s business. In such cases, businesses have to invest time and resources in building software capabilities to address these gaps. Thankfully, cloud computing provides the Platform as a Service (PaaS) model, which can fill this gap and allow consumers to create and run custom applications. PaaS offers cloud-hosted application servers with very high scalability and elasticity.

In the PaaS model, the cloud vendors provide a pre-configured, virtualized application server environment, to which organization or users can deploy their custom in-house build applications. The cloud vendor ensures the maintenance, patching, and availability of the app servers, and the organizations need to manage and maintain the custom applications running on the app servers. During deployment of these applications, the developers define the resource requirements (CPU, network, memory, and so on) for these applications. The cloud computing provision engine consumes this resource requirement definition (most as part of a configuration file) and creates and binds the necessary infrastructures needed to run the application. PaaS is an ideal solution for new applications being built by the customers, as migrating legacy applications might require extensive application redesign to comply with the rules of the PaaS model.

Infrastructure as a Service

The Infrastructure as a Service (IaaS) model provides hosted server environments, which can be used to deploy and run software services. IaaS is very similar to what organizations have been traditionally doing, where they build physical or virtualized servers on-premises and run their software on these servers. The difference between IaaS and the traditional approach is that, in the IaaS world, the servers are hosted in vendor’s data centers, rather than the enterprise’s data center. This can be perceived as a rent-a-server model, where the organizations pay for the use of the servers on an as-needed basis. In the IaaS model, users have full control over what software runs on these servers, the DR and high availability requirements, and the customization needed for the software. Depending on the vendor, the users may also have the flexibility to upsize or downsize the servers as per demand. Additionally, depending on the vendor and the type of server provisioned, the server may include additional software, such as the operating system, an Exchange server, or an RDBMS server.

Given the flexibility and ability to customize the provisioned server, IaaS can be used to migrate legacy applications easily to the cloud, but build a cloud server that mimics the on-premises server configurations.

Software as a Service

The Software as a Service (or SaaS) model helps users consume software services hosted by a cloud computing vendor. In the SaaS model, cloud computing vendors host a software service or application and make it accessible to customers in a subscription-based model. The customers use these services on a pay-as-you-go basis. Given that SaaS is based on a subscription-based usage model, the users have a choice to suspend, stop, reduce, or increase their use of the services.

In the SaaS model, the software service configuration and the underlying hardware infrastructure are not accessible to the end users. As such, users cannot change the services or features offered. SaaS offers a highly sharable multi-tenant environment, where thousands and millions of users can operate at the same time, in a mutually exclusive and highly secure context. SaaS also offers a very agile platform, which can help users reduce their “go-to-market” time and help them focus on their core business projects without worrying about the IT challenges of managing and maintaining an environment for their IT needs.

Microsoft Azure

Azure is a cloud computing platform developed by Microsoft for creating, deploying, and managing applications and services through a global network of Microsoft managed or Microsoft partner hosted data centers. Azure provides cloud-based services in all the three service models: Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS).

Azure provides a cloud-hosted server and the other infrastructure resources like storage, network, and other integration infrastructure for creating, deploying, and running applications. Azure relies on massive groups of commodity, off-the-shelf hardware in providing the cloud computing environment. Figure 1-2 shows a representational Azure resource model where application servers along with storage, network, and other compute resources are provisioned on demand by the policies set during deployment. The Azure Fabric Controller, with its dedicated set of highly redundant and highly available servers and software, is the intelligence behind the entire Azure environment.

A371128_1_En_1_Fig2_HTML.jpg
Figure 1-2. Representational resource model—Microsoft Azure

Azure compute resource pool consists of a very large pool of commodity hardware resources, which are configured in a highly redundant and highly available setup. This high availability and redundancy is maintained and managed by the Azure Fabric Controller.

The Fabric Controller is designed to detect any kind of failures and take necessary action to mitigate the risks of those failures. These actions could include spawning new resources and migrating the resources to a different pool of hardware resources. The Fabric Controller is also responsible for upsizing or downsizing the resources based on user requests.

Azure Services

Azure offers a plethora of services , which are grouped together in different categories, as illustrated in Figure 1-3. Some of the services that are used commonly or are needed with SQL deployments in Azure are discussed below.

A371128_1_En_1_Fig3_HTML.jpg
Figure 1-3. Azure services

Compute Offerings

Microsoft Azure provides three important compute offerings , which can be utilized to run web sites and applications. The Azure web sites and Azure Cloud Services use Azure Virtual Machines to run the web sites and applications, while abstracting the tasks of managing the creation and administrations from the users. These two services provide PaaS offerings, while the third option—Azure Virtual Machine (VMs)—provides full control to the users, to create and manage their VMs. Azure Virtual Machines provides an IaaS offering.

Virtual Machines

Azure Virtual Machines provides users with complete control over the creation, configuration, and management of the virtual machines and the applications running on them. Azure Virtual Machines allows for creating of VMs using VHDs uploaded to Azure or by leveraging VHD images available in the Azure VHD gallery, as illustrated in Figure 1-4. Azure provides a plethora of VHDs for different editions/versions of Windows, Linux, and other server applications, such as SQL Server, BiTalk, Oracle, etc.

A371128_1_En_1_Fig4_HTML.jpg
Figure 1-4. Azure Virtual Machines

Azure Virtual Machines allows configuration and addition of multiple virtual disks to a VM. These disks can be configured either on the Standard Storage or the Solid State Devices (SSDs) based Premium Storage.

Azure WebApps (Formerly Azure Websites)

Azure WebApps , formerly Azure Websites, provides a managed web environment using the Azure Management portal as well as APIs. Apart from the ability to create new web sites on the cloud, Azure WebApps also allows for the migration of any existing web sites to the cloud. WebApps provides the ability to upsize or downsize the resources on demand. Creating an Azure WebApps service basically creates a VM with IIS and associated storage, as illustrated in Figure 1-5. The creation and management of these VMs is encapsulated from the end users.

A371128_1_En_1_Fig5_HTML.jpg
Figure 1-5. Azure WebApps

Azure WebApps is available in both a Share Tenant model, where resources are shared between multiple web sites, and a Standard model, which provides dedicated resources to the web site. The ability to upsize or downsize the instances is only available with Standard model.

Cloud Services

As with Azure Websites, Azure cloud services use VMs to execute workloads, while providing the users with some control over the configuration of the VMs. For example, the VMs can be accessed remotely and additional software can be installed on the VMs. Azure Cloud services provide two different variants of VMs. Instances of web roles run a variant of Windows Server with IIS, while instances of worker roles run the same Windows Server variant without IIS. A cloud services application relies on some combination of these two options.

Data Management Offerings

Windows Azure provides several ways to store and manage data. This diversity of services allows users to utilize Azure to address a variety of business requirements and problems. Azure provides the following four major data management offerings .

SQL/Oracle Running on Azure VM

Azure VMs allow the users to configure an instance of Microsoft SQL Server, Oracle, or any other Database Management System. As earlier mentioned in the section on compute offerings and Virtual Machines, multiple images are available in the Azure marketplace, and they can be used deploy a SQL Server instance (SQL 2012, SQL 2014 and SQL 2016 RC releases, as of writing this book) or an Oracle instance. Moreover, other DBMS environments can be created using a customized VHD, which can be uploaded to Azure.

Azure SQL Database

The Azure SQL Database is a relational database as a service, which provides all the important features of an RDBMS, including transaction consistency, data integrity, and multi-user concurrent data access system. Azure SQL Database is built on the same principles as the Microsoft SQL Server and provides comparable features. For users who are already familiar with SQL Server, adapting to Azure SQL Database won’t be difficult. Azure SQL Database employs a PaaS Service model, where the consumer controls the access patterns, while the platform takes care of other administrative work. Azure SQL Database provides automatic backups and point-in-time restore for the databases. Depending on the service tier being used, Azure SQL Databases also provide high availability options at a reasonable cost.

Azure Blobs

Azure Blobs (“blob storage” and “storage blobs” are the same thing) is a cloud-based inexpensive storage solution for storing unstructured binary data (Figure 1-6). Consider Azure Blob storage as a file store for binary files, with a maximum file size limit of 1TB. Applications can also make use of Azure drives, which let blobs provide persistent storage for a Windows filesystem mounted in an Azure instance. The application sees ordinary Windows files, but the contents are actually stored in a blob.

A371128_1_En_1_Fig6_HTML.jpg
Figure 1-6. Azure storage blobs

Blob storage is used by many other Azure features (including Virtual Machines), so it can certainly handle your workloads.

Azure Table Storage

Tables provide a NoSQL/key-value storage . Tables provide fast, reliable, and simple access to large amounts of loosely structured and unstructured data. Tables provide non-relational or NoSQL storage.

Networking

Azure provides several options to set up private networks , virtual private networks, and network load balancing. The most commonly used options are described next.

Virtual Network

Azure Virtual Network (VNet) is a logical partitioning of the Azure cloud dedicated to the subscription. Administrators have full control over the IPs, the DNS settings, and the security policies for the network. It can be compared to a private network of an organization, which runs behind a firewall. Azure VNets allow you to create subnets, which can be used to further segment the network, depending on requirements. Azure allows users to connect the VNet to their on-premises networks using one of the many connectivity options available with Azure, as illustrated in Figure 1-7.

A371128_1_En_1_Fig7_HTML.jpg
Figure 1-7. Azure Virtual Network

VPN Connection Options

Connectivity options allow users to connect their on-premises networks with their Azure networks. These options include:

  • Point-to-site VPN connections

  • Site-to-site VPN connections

  • ExpressRoute connections

Point-to-Site VPN Connection

A point-to-site VPN lets users create a secure connection to their Azure Virtual Networks from a client computer in their on-premises networks. Point-to-site connections have to be configured individually on each client computer that needs to connect to the virtual network. Point-to-site connections do not require a VPN device, but use a VPN client that needs to be installed on each client computer. The VPN is established by manually initiating the connection from the on-premises client computer.

Site-to-Site VPN Connection

A site-to-site VPN allows users to create a secure connection between their on-premises network and and their Azure Virtual Network. Site-to-site VPN connections require a VPN device located on the on-premises network and must be configured to create a secure connection with the Azure VPN Gateway. Once the connection is established, resources on the on-premises network and in the Azure Virtual Network can communicate directly and securely. Unlike the point-to-site VPN connection, site-to-site connections do not require the establishment of a separate connection for each client computer on the local network to access resources in the virtual network.

ExpressRoute Connection

Azure ExpressRoute allows the users to create a private connection between Azure data centers and their on-premises networks. ExpressRoute connections do not go over the public Internet, but instead use a dedicated Internet channel and thus offer more reliability, better security, and lower latencies compared to the typical connections over the Internet. As illustrated in Figure 1-8, ExpressRoute does not use the public Internet to connect your on-premises environment with Azure.

A371128_1_En_1_Fig8_HTML.jpg
Figure 1-8. Azure ExpressRoute

Developer Services

Azure provides several services that can be leveraged by developers to write optimal and performant code. In addition to providing several features to write code, Azure also provides methods to automate testing and capture telemetry while running their applications.

Visual Studio Team Services

Visual Studio Team Services provides a service to develop and ship applications, share codes with the team, track application development, and load-test applications, written in any language

Application Insights

Application Insights is an extensible analytics service that allows users to monitor live performance of their applications. It can help detect and diagnose performance issues and provide telemetry data for applications. Developers can use the service to continuously improve the performance and usability of their application code. Application Insights works with web-based and standalone applications developed using .Net, J2EE, and hosted on on-premises or on the cloud, as illustrated in Figure 1-9.

A371128_1_En_1_Fig9_HTML.jpg
Figure 1-9. Azure Application Insights

Identity and Access

Windows Azure Active Directory provides robust and secure identity services that help control and manage directory and access management in the cloud. It also provides a seamless sign-in experience to Azure resources and enhanced security with multi-factor authentication.

Active Directory

Azure Active Directory (AAD) is an identity and access management solution that provides organizations with the ability to manage users and groups, just like an on-premises active directory solution. AAD helps provide secure access to resources on-premises and on the cloud. AAD is available in three service tiers: Free, Basic, and Premium.

Backup

Azure provides a plethora of simple and reliable backup services that can be utilized to ensure business continuity and disaster recovery whenever needed.

Azure Site Recovery

Site Recovery is an Azure service that contributes to your business continuity and disaster recovery (BCDR) strategy by orchestrating replication of your on-premises servers and virtual machines to a secondary on-premises data center, or to Azure. Site Recovery handles the replication, and you can kick off failover and recovery with a simple click.

Summary

In this chapter, we learned the basic principles of cloud computing and the different service models available with cloud computing. We then discussed the Microsoft Cloud Computing platform, which included Azure and some of the key services available with Azure.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset