Windows Azure - Quick Overview


Windows Azure is Microsoft's platform for supporting public cloud. We can use Azure to :

  1. Build a web application that’s runs in Microsoft Datacenters.
  2. Just to store data, used by application running on-premises
  3. To create virtual machines for development and testing to run SharePoint and other applications.
  4. To build massively scalable applications with lots and lots of users.

Getting to know the basics of Azure components gives good idea of Azure platform, so here are the Components of Windows Azure

  1. Execution Models -
    1. Virtual Machines - This approach is generally called IaaS (Infrastructure as a service), wherein we can create virtual machines on demand, which can be paid per hour of usage. Windows Azure VM can also be used as an extension of our on-premise datacenter, running applications like SharePoint. Its possible to create Windows domains in the cloud by running Active Directory in Windows Azure VMs
    2. Web sites - On of the most common usage of cloud is to host Website and application without the hassles of administration, which is what Windows Azure Websites provides. We can move an existing IIS web site into Azure website unchanged, or we can have a new one created directly in the cloud. Windows Azure Web Sites supports .NET, PHP, and Node.js, along with SQL Database and (from ClearDB, a Microsoft partner) MySQL for relational storage. It also provides built-in support for several popular applications, including WordPress, Joomla, and Drupal. The goal is to provide a low-cost, scalable, and broadly useful platform for creating web sites and web applications in the public cloud.
    3. Cloud services - Windows Azure Cloud Services is designed expressly to support scalable, reliable, and low-admin applications, and it's an example of what's commonly called Platform as a Service (PaaS). To use it, you create an application using the technology you choose, such as C#, Java, PHP, Python, Node.js, or something else. Your code then executes in virtual machines (referred to as instances) running a version of Windows Server. However, this VM is different than Windows Azure VM since here Azure manages VM itself in doing things like installing OS patches, rolling out new images, monitoring VMs, restarting any that fail etc. While creating instance one out of two roles could be selected - web or worker - difference is that web runs on IIS and worker not.
  2. Data management -
    1. SQL Database - For relational storage, Windows Azure provides SQL Database. For anybody familiar with SQL Server (or another relational database), using SQL Database is straightforward. But SQL Database isn't just a DBMS in the cloud-it's a PaaS service. You still control your data and who can access it, but SQL Database takes care of the administrative grunt work, such as managing the hardware infrastructure and automatically keeping the database and operating system software up to date. SQL Database also provides a federation option that distributes data across multiple servers. This is useful for applications that work with large amounts of data or need to spread data access requests across multiple servers for better performance.
    2. Tables - Tables is example of a NoSQL approach called a key/value store. Windows Azure Tables let an application store properties of various types, such as strings, integers, and dates. An application can then retrieve a group of properties by providing a unique key for that group. While complex operations like joins aren't supported, tables offer fast access to typed data. They're also very scalable, with a single table able to hold as much as a terabyte of data. And matching their simplicity, tables are usually less expensive to use than SQL Database's relational storage.
    3. BLOBs - The third option for data management, Windows Azure Blobs, is designed to store unstructured binary data. Like Tables, Blobs provides inexpensive storage, and a single blob can be as large as one terabyte. An application that stores video, for example, or backup data or other binary information can use blobs for simple, cheap storage.
  3. Business Analytics
    1. SQL Reporting - One of the most common ways to use stored data is to create reports based on that data. To let you do this with data in SQL Database, Windows Azure provides SQL Reporting. A subset of the reporting services included with SQL Server, SQL Reporting lets you build reporting into applications running on Windows Azure or on premises. The reports you create can be in various formats, including HTML, XML, PDF, Excel, and others, and they can be embedded in applications or viewed via a web browser.
    2. Hadoop - For many years, the bulk of data analysis has been done on relational data stored in a data warehouse built with a relational DBMS. This kind of business analytics is still important, and it will be for a long time to come. But what if the data you want to analyze is so big that relational databases just can't handle it? The dominant technology today for analyzing big data is Hadoop. An Apache open source project, this technology stores data using the Hadoop Distributed File System (HDFS), then lets developers create MapReduce jobs to analyze that data. HDFS spreads data across multiple servers, then runs chunks of the MapReduce job on each one, letting the big data be processed in parallel.
  4. Caching -
    1. In-Memory Caching - Keeping an in-memory copy of frequently accessed data can improve application performance. We can use Windows Azure's in-memory Caching to do this. A Cloud Services application can store data in this cache, then retrieve it directly without needing to access persistent storage.
    2. CDN - The CDN has dozens of sites around the world, each capable of storing copies of Windows Azure blobs. The first time a user in some part of the world accesses a particular blob, the information it contains is copied from a Windows Azure datacenter into local CDN storage in that geography. After this, accesses from that part of the world will use the blob copy cached in the CDN-they won't need to go all the way to the nearest Windows Azure datacenter. The result is faster access to frequently accessed data by users anywhere in the world.
  5. SDKs - Microsoft currently provides language-specific SDKs for .NET, Java, PHP, Node.js, and Python. There's also a general Windows Azure SDK that provides basic support for any language, such as C++. These SDKs help you build, deploy, and manage Windows Azure applications. They're available either from or GitHub, and they can be used with Visual Studio and Eclipse. Windows Azure also offers command line tools that developers can use with any editor or development environment, including tools for deploying applications to Windows Azure from Linux and Macintosh systems.

References -

Approaches to Cloud Computing


The idea behind any cloud computing proposal is for you to pay only for what you use, scaling up or down as per business requirements. This dynamic capability offered by service providers is called utility computing and is analogous to your utility service providers’ model: they charge you by the amount of energy you use. You can scale back your energy bill by reducing the energy usage, or your energy bill will go up during peak load. If you invest in a highly available and scalable infrastructure on premise, scaling in either direction based on demand is difficult.

So, in the long term, cloud platforms are designed to reduce your average operating costs by giving you the flexibility to commission and decommission infrastructure depending on the business needs.

Term "Cloud" specifically means applications, platform, infrastructure and consumer services offered by service providers to build applications for the Internet. Acronyms like software as a service (SaaS), platform as a service (PaaS), Infrastructure as a cloud (IaaS), software plus service (S + S), and database as a service (DaaS) all represent a piece of cloud services in one way or the other. Let's discuss three common approaches viz. - SaaS, PaaS and IaaS.

Software as a Service

Software as a Service (SaaS) makes use of a cloud computing infrastructure to deliver one application to many users, regardless of their location, rather than the traditional model of one application per desktop. Instead of installing and maintaining software, you simply access it via the Internet, freeing yourself from complex software and hardware management. Most SaaS applications can be run directly from a Web browser, without any downloads or installations required. SaaS eliminates the need to install and run applications on individual computers. With SaaS, it’s easy for enterprises to streamline their maintenance and support, because everything can be managed by vendors: applications, runtime, data, middleware, O/S, virtualization, servers, storage, and networking. Gmail is one famous example of an SaaS mail provider.

Platform as a Service

In this approach, you rent a platform on which you deploy your applications without configuring the infrastructure and without the limitations of the SaaS approach. What developers gain with PaaS is a framework they can build upon to develop or customize applications. PaaS makes the development, testing, and deployment of applications quick, simple, and cost-effective, eliminating the need to buy the underlying layers of hardware and software. Similar to the way that you might create macros in Excel, PaaS allows you to create applications using software components that are controlled by a third-party vendor. The Windows Azure platform fits best in the PaaS category, because it doesn’t provide access to the underlying virtualization environment or operating system details such as the network interface, IP configuration, and disk management.

Infrastructure as a Service

Infrastructure as a Service is sometimes referred to as Hardware as a Service (HaaS), in which Vendors provide the hardware infrastructure to build solutions, and you rent the hardware such as servers, load balancers, firewall and cables. The service provider owns the equipment and is responsible for housing, running and maintaining it. The client typically pays on a per-use basis. You can scale up by requesting more servers and reconfiguring the load balancer without purchasing more hardware. Similarly, you can scale down at any time by reconfiguring the infrastructure you rented from the cloud service provider.

Lastly, on a lighter note :)


References -