Windows Azure is Microsoft's platform for supporting public cloud. We can use Azure to :
- Build a web application that’s runs in Microsoft Datacenters.
- Just to store data, used by application running on-premises
- To create virtual machines for development and testing to run SharePoint and other applications.
- 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
- Execution Models -
- 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
- 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.
- 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.
- Data management -
- 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.
- 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.
- 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.
- Business Analytics
- 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.
- 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.
- Caching -
- 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.
- 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.
- 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 www.windowsazure.com 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.