<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="http://www.azurepilot.com/xsl/rss2html.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://www.azurepilot.com/scripts/wpcss/wiki/azurepilot/skin/cerulean/rss" type="text/css" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Azure Academic Pilot - Recently Updated Pages</title><link>http://www.azurepilot.com/pageSearch/updated</link><description>Recently Updated Pages on http://www.azurepilot.com</description><language>en-us</language><webMaster>info@wetpaint.com</webMaster><pubDate>Wed, 10 Mar 2010 09:05:19 CST</pubDate><lastBuildDate>Wed, 10 Mar 2010 09:05:19 CST</lastBuildDate><generator>wetpaint.com</generator><ttl>60</ttl><image><title>Azure Academic Pilot</title><url>http://image.wetpaint.com/image/1/zUtTBmHZN3PSuBjKQ5p75w19181</url><link>http://www.azurepilot.com</link><description>The Azure Academic Pilot aims to position the Azure Ecosystem towards faculty, with emphasis on teaching and research using the Azure cloud computing platform.</description></image><item><title>The NIST Definition</title><link>http://www.azurepilot.com/page/The+NIST+Definition</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/The+NIST+Definition</guid><comments>Moved from: Introduction to Cloud Computing</comments><pubDate>Wed, 10 Mar 2010 09:05:19 CST</pubDate><description>The &lt;font color=&quot;#0066cc&quot;&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.nist.gov/index.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;National Institute of Standards and Technology&lt;/a&gt; &lt;/font&gt;NIST is an agency of the &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.commerce.gov/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0066cc&quot;&gt;U.S. Department of Commerce&lt;/font&gt;&lt;/a&gt; and was founded in 1901 as the nation&amp;#39;s first federal physical science research laboratory. One of the major research components of the NIST, their Information Technology Laboratory (&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.nist.gov/itl/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ITL&lt;/a&gt;) accelerates the development and deployment of information and communication systems that are reliable, usable, interoperable, and secure; advances measurement science through innovations in mathematics, statistics, and computer science; and conducts research to develop the measurements and standards infrastructure for emerging information technologies and applications.&lt;br&gt;&lt;br&gt;In this document, they have brilliantly outlined the definitions, attributes and characteristics of cloud computing:&lt;br&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;  &lt;/h3&gt;  &lt;h3&gt;  &lt;/h3&gt;  &lt;h3&gt;  &lt;/h3&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Creating an online Azure account</title><link>http://www.azurepilot.com/page/Creating+an+online+Azure+account</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Creating+an+online+Azure+account</guid><comments>Moved from: Computing in the Cloud</comments><pubDate>Mon, 08 Mar 2010 15:54:51 CST</pubDate><description>There is no abstract available for this page revision.&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Introduction to the Windows Azure Platform</title><link>http://www.azurepilot.com/page/Introduction+to+the+Windows+Azure+Platform</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Introduction+to+the+Windows+Azure+Platform</guid><pubDate>Sun, 07 Mar 2010 17:54:40 CST</pubDate><description>&lt;br&gt;&lt;b&gt;Table of Contents:&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Overview   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Introducing+Windows+Azure&quot; target=&quot;_self&quot;&gt;Introducing Windows Azure&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;OVERVIEW:&lt;/b&gt;&lt;br&gt;&lt;br&gt;Microsoft&amp;#39;s Windows Azure Platform is an internet-scale cloud platform (cloud computing platform as a service - PaaS) offering that provides an operating system and a set of developer services that can be used individually or together. Azure&amp;rsquo;s flexible and interoperable platform can be used to build new applications to run from the cloud or enhance existing applications with cloud-based capabilities. Its open architecture gives developers the choice to build web applications, applications running on connected devices, PCs, servers, or hybrid solutions offering the best of online and on-premises.&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;b&gt;Windows Azure: &lt;/b&gt;Windows Azure is a cloud services operating system that serves as the development, service hosting and service management environment for the Windows Azure Platform. Windows Azure provides developers with on-demand compute and storage to host, scale, and manage internet or cloud applications.&lt;br&gt;&lt;br&gt;&lt;b&gt;Live Services: &lt;/b&gt;Live Services is a set of building blocks within the Windows Azure Platform for handling user data and application resources. Live Services provides developers with an easy on-ramp to build rich social applications and experiences, across a range of digital devices that can connect with one of the largest audiences on the Web.&lt;br&gt;&lt;br&gt;&lt;b&gt;Microsoft SQL Azure: &lt;/b&gt;Microsoft SQL Azure extends the capabilities of Microsoft SQL Server into the cloud as a Web-based, distributed relational database. It provides Web services that enable relational queries, search, and data synchronization with mobile users, remote offices and business partners. It can store and retrieve structured, semi-structured, and unstructured data.&lt;br&gt;&lt;br&gt;&lt;b&gt;Microsoft .NET Services: &lt;/b&gt;Microsoft .NET Services make developing loosely coupled cloud-based applications easier. .NET Services includes access control to help secure your applications, as well as a service bus for communicating across applications and services. These hosted services allow you to easily create federated applications that span from on-premises environments to the cloud.&lt;br&gt;&lt;br&gt;&lt;b&gt;Microsoft SharePoint Services &amp;amp; Dynamics CRM Services: &lt;/b&gt;In the future, developers will have access to SharePoint &amp;amp; CRM functionality for collaboration and building stronger customer relationships. With the flexibility to use familiar developer tools like Visual Studio, developers will be able to rapidly build applications that utilize SharePoint and CRM capabilities as developer services for their own applications. Developers can expect a breadth of SharePoint &amp;amp; CRM capabilities across the spectrum of on-premises, online &amp;amp; the Windows Azure Platform.&lt;br&gt;&lt;br&gt;&lt;b&gt;Benefits of the Windows Azure Platform:&lt;/b&gt;&lt;br&gt;&lt;br&gt;The Windows Azure Platform is designed to help developers easily create applications for the web and connected devices. The services platform offers the greatest flexibility, choice, and control in reaching users and customers while using existing skills.&lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;b&gt;Easy developer on-ramp to the cloud&lt;/b&gt; - Millions of developers worldwide already use the .NET Framework and the Visual Studio development environment. Utilize those same skills to create cloud-enabled applications that can be written, tested, and deployed all from Visual Studio. In the near future developers will be able to deploy applications written on Ruby on Rails and Python as well.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;b&gt;Enables Agile &amp;amp; Rapid Results&lt;/b&gt; - Applications can be deployed to the Windows Azure Platform with the click of a button. Changes can be made quickly and without downtime, making it an ideal platform for affordably experimenting and trying new ideas.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;b&gt;Imagine and Create New User Experiences&lt;/b&gt; - The Windows Azure Platform enables you to create web, mobile, or hybrid-applications that use the cloud with on-premises applications. Combined with Live Services ability to reach over 400 million Live users, new opportunities exist to interact and reach users in new ways.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;b&gt;Standards-Based Compatibility &lt;/b&gt;- The services platform supports industry-standard protocols, including HTTP, REST, SOAP, RSS, and AtomPub, for consuming, exposing, and integrating with third-party services. You can easily integrate applications built on a variety of different technologies and operating systems.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;As you may remember from a couple of modules back, the following figure illustrates the typical cloud computing platform architecture:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;The following figure maps the Windows Azure platform to the generic layered cloud architecture above:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;This platform provides a set of services to application developers. These services can be used both by applications running in the cloud and by applications running on local systems. Windows Azure, operating system for the cloud, is the foundation of Microsoft&amp;#39;s cloud platform offering. As shown in the above figure, the Windows Azure Platform provides a set of shared services: SQL Data Services, .NET Services, and Live Services, which can be used individually or collectively. In addition, Microsoft offers various finished cloud applications including Exchange Online, SharePoint Online, and CRM Online. Here, however, our focus will be on the Windows Azure operating system and related patterns.&lt;br&gt;&lt;br&gt;&lt;br&gt;The following whitepaper provides a comprehensive overview of the Windows Azure Platform:&lt;br&gt;&lt;br&gt; &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Cloud Protocols, Standards and Wire Formats</title><link>http://www.azurepilot.com/page/Cloud+Protocols%2C+Standards+and+Wire+Formats</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Cloud+Protocols%2C+Standards+and+Wire+Formats</guid><pubDate>Sun, 07 Mar 2010 17:45:02 CST</pubDate><description>Cloud computing relies on the ability of users to reach across the internet and access the compute and storage resources offered in the cloud. And therefore, to enable this interaction, it relies on a number of open standards around areas like communication and data representation. &lt;br&gt;&lt;br&gt;In this section, we will touch upon the key communication, service and data representation standards.&lt;br&gt;&lt;br&gt;Cloud computing, most commonly exposes its resources as a service over the Internet, and therefore the HTTP and HTTPS protocols act as the backbone communication infrastructures supporting cloud computing. All the other standards for exposing compute and storage resources, therefore are technologies that have evolved to closely interoperate with HTTP around issues like scalability and statelessness. In the following section, we will look at the REST architecture for exposing services, the AtomPub protocol for creating and updating web resources and the XML, Atom and JSON data representation formats.&lt;br&gt;&lt;br&gt;&lt;b&gt;Pre-REST: &lt;/b&gt;Prior to REST, there was a long evolution of attemping to retrofitting existing client/server-based Inter-process communication systems paradigms over to the web. Early in the Internet&amp;#39;s history, circa 1995, the Common Gateway Interface (CGI) was created to handle computational and data-centric requests that didn&amp;#39;t necessarily always fit into the hypertext-based document model. for eg. payment processing. &lt;br&gt;&lt;br&gt;One of the most common distributed IPC paradigms that had taken hold in the client-server space was Remote Procedure Call with implementations such as Java RMI, DCOM and CORBA. Initial implementations to port the above model over to the web in a literal sense resulted in technologies like XML-RPC which used XML to encode its calls and HTTP as a transport mechanism. HTTP was chosen as a framing protocol mostly because it was entrenched enough so that people already had port 80 open in the firewall. XML was chosen because the bet was that XML was going to be the platform-neutral meta-schema for data. &lt;br&gt;&lt;br&gt;As new functionality was introduced, the standard evolved in in late 1999 to what is now SOAP &amp;mdash; the Simple Object Access Protocol. SOAP defined a wire protocol that standardized how binary information within the computer&amp;#39;s memory could be serialized to XML. Initially there were no discovery and description mechanisms either, but eventually the Web Service Description Language (WSDL) was settled on. WSDL enabled SOAP-based service designers to more fully describe the XML their service would accept as well as an extensibility mechanism. Using this extensibility mechanism, the Web service community came up with a collection of extensional specifications that together are referred to as the WS-* (&amp;quot;WS-star&amp;quot;) specifications. These include WS-Security, WS-Reliable Messaging, WS-Addressing, and WS-Policy, to name just a few. These specifications all essentially added layered metadata to the SOAP payload by modifying the header while keeping the message body intact.&lt;br&gt;&lt;br&gt;But there is a pattern here we should more closely examine. In the beginning we had simple hypermedia documents. However, as soon as we added the capability to access server-based application data processes, the basic architecture of our applications began moving away from the pure hypermedia model. CGI introduced a &amp;quot;gateway&amp;quot; where none had existed. SOAP introduced a novel use of XML, but this then required servers to accept and handle SOAP requests with arbitrarily complex payloads or negotiate lowest common denominators. Then came WSDL. With WSDL it became easier to modify the client&amp;#39;s SOAP request to match what the service provider required, but then the server needed to formulate the WSDL, adding more processing requirements and moving the data communication architecture even further away from a pure hypermedia basis. And when the incredible complexity of the WS-* specifications is added, the entire data communication process incorporates processing and metadata transfer completely unforeseen only a few years ago.&lt;br&gt;&lt;br&gt;The gist of all of this is that somewhere along the way, all of us associated with designing and developing RPC-based Web services diverted from the basic architecture of the Internet. SOAP and WS-* started from examining various platform-specific solutions like DCOM and CORBA, and their ultimate goal was to build those same types of systems in a platform-neutral way. To accomplish this goal, they built on the substrate of some of the emerging Internet protocols of the time - HTTP &amp;amp; XML. All the advanced WS-* specifications (Security/Reliability/Transactions) were taking application server features du jour and incorporating those protocols into this platform-neutral protocol substrate.&lt;br&gt;&lt;br&gt;&lt;b&gt;REST:&lt;/b&gt; In 2000, which is about the time the SOAP protocol started to take root, Roy Fielding, a co-designer of the HTTP specification, finished his doctoral dissertation, titled &amp;quot;Architectural Styles and the Design of Network-based Software Architectures&amp;quot; (&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0066cc&quot;&gt;www.ics.uci.edu/~fielding/pubs/dissertation/top.htm&lt;/font&gt;&lt;/a&gt;). His dissertation revolves around the evaluation of network-based architectures, but his final two chapters introduce the concepts of Representational State Transfer, or REST. REST essentially formalizes services using concepts inherent in the Internet.&lt;br&gt;&lt;br&gt;The principal concept in REST is the existence of resources (sources of specific information), each of which is referenced with a global identifier (e.g., a URI in HTTP). In order to manipulate these resources, components of the network (user agents and origin servers) communicate via a standardized interface (e.g., HTTP) and exchange representations of these resources (the actual documents conveying the information), which is typically an HTML, XML or JSON document of some kind, although it may be an image, plain text, or any other content.&lt;br&gt;&lt;br&gt;The following short video provides a very good overview of REST:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Atom / AtomPub: &lt;/b&gt;The name Atom applies to a pair of related standards. The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol (AtomPub or APP) is a simple HTTP-based protocol for creating and updating web resources. The following article: &amp;ldquo;Atom Publishing Protocol&amp;rdquo; by James Snell introduces in detail AtomPub, Atom Syndication Format and curl commands.&lt;br&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www-128.ibm.com/developerworks/library/x-atompp1/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www-128.ibm.com/developerworks/library/x-atompp1/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;ADO.Net Data Services: &lt;/b&gt;The goal of the ADO.NET Data Services framework is to facilitate the creation of flexible data services that are naturally integrated with the web. As such, ADO.NET Data Services use URIs to point to pieces of data and simple, well-known formats to represent that data, such as JSON and ATOM (XML-based feed format). This results in the data service being surfaced as a REST-style resource collection that is addressable with URIs and that agents can interact with using standard HTTP verbs such as GET, POST, PUT or DELETE. In order for the system to understand and leverage semantics over the data that it is surfacing, ADO.NET Data Services models the data exposed through the data service using a model called the Entity Data Model (EDM), an Entity-Relationship derivative. This organizes the data in the form of instances of &amp;quot;entity types&amp;quot;, or &amp;quot;entities&amp;quot;, and the associations between them. For relational data, ADO.NET Data Services supports exposing an EDM model created using the ADO.NET Entity Framework. For all other (ie. non relational) data sources or to use additional database access technologies (ex. LINQ to SQL) a mechanism is provided which enables any data source to be modeled as entities and associations (ie. described using an EDM schema) and exposed as a data service.&lt;br&gt;&lt;br&gt;Many of the Microsoft cloud data services (Windows Azure tables, SQL Azure Data Services, etc.) expose data using the same REST interaction conventions followed by ADO.NET Data Services. This enables using the ADO.NET Data Services client libraries and developer tools when working with hosted cloud services.&lt;br&gt;&lt;br&gt;The following video goes into details on how to consume ADO.Net Data Services from client side code. &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;In case you are interested, the other videos from this series provide additional details on creating and consuming ADO.Net Data services.&lt;br&gt;&lt;br&gt;  &lt;li&gt;  &lt;font color=&quot;#800080&quot;&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://msdn.microsoft.com/en-us/data/cc745957.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;How Do I: Getting Started with ADO.NET Data Services over a Relational Database&lt;/a&gt;&lt;/font&gt;&lt;br&gt;  &lt;/li&gt;&lt;li&gt;  &lt;font color=&quot;#800080&quot;&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://msdn.microsoft.com/en-us/data/cc745968.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;How Do I: Getting Started with ADO.NET Data Services over a Non-Relational Data Source&lt;/a&gt;&lt;/font&gt;&lt;br&gt;  &lt;/li&gt;&lt;li&gt;  &lt;font color=&quot;#0033cc&quot;&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://msdn.microsoft.com/en-us/data/cc974474.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;How Do I: Consuming an ADO.NET Data Service in a Silverlight Application&lt;/a&gt;&lt;/font&gt;&lt;br&gt;  &lt;/li&gt;&lt;li&gt;  &lt;font color=&quot;#800080&quot;&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://msdn.microsoft.com/en-us/data/cc974504.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;How Do I: Consume an ADO.NET Data Service in a .NET Application&lt;/a&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font size=&quot;1&quot;&gt;credits: Kenn Scribner&lt;/font&gt; &lt;/li&gt;  &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Virtualization</title><link>http://www.azurepilot.com/page/Virtualization</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Virtualization</guid><pubDate>Sun, 07 Mar 2010 17:32:07 CST</pubDate><description>As we saw in the previous section, the principles of cloud computing include:&lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Virtualization and automation   &lt;/li&gt;&lt;li&gt;  Interchangeable (fungible) resources such as servers, storage and network   &lt;/li&gt;&lt;li&gt;  Management of these resources as a single fabric   &lt;/li&gt;&lt;li&gt;  Elastic capacity (scale up or down) to respond to business demands   &lt;/li&gt;&lt;li&gt;  Applications (and the tools to develop them) that can truly scale out   &lt;/li&gt;&lt;li&gt;  Focused on the service delivered to the business&lt;/li&gt;&lt;/ul&gt;A key enabler for many of the above principles is the concept of virtualization.   &lt;br&gt;&lt;br&gt;A host computer runs an application known as a hypervisor; this creates one or more virtual machines, which simulate real computers so faithfully that the simulations can run any software, from operating systems to end-user applications. The software &amp;quot;thinks&amp;quot; it has access to a processor, network, and disk drive, just as if it had a real computer all to itself. The hypervisor retains ultimate control, however, and can pause, erase, or create new virtual machines at any time. By providing multiple VMs at once, this approach allows several operating systems to run simultaneously on a single physical machine. &lt;br&gt;&lt;br&gt;Rather than paying for many under-utilized server machines, each dedicated to a specific workload, server virtualization allows those workloads to be consolidated onto a smaller number of more fully-used machines. Virtualization means that e-mail, Web, or file servers (or anything else) can be conjured up as soon as they&amp;#39;re needed; when the need is gone, they can be wiped from existence, freeing the host computer to run a different virtual machine for another user. Coupled with management software and vast data centers, this technology allows cloud providers to reap massive economies of scale. And it gives cloud users access to as much computing power as they want, whenever they want it. Virtualization reduces IT costs, increases hardware utilization, optimizes business and network infrastructure, and improves server availability.&lt;br&gt;&lt;br&gt; &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Preface</title><link>http://www.azurepilot.com/page/Preface</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Preface</guid><comments>Rename</comments><pubDate>Sun, 07 Mar 2010 15:44:40 CST</pubDate><description>&lt;br&gt;&lt;b&gt;Table of Contents:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Welcome  &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Evolution+of+%28Hardware+%26%29+Software+Paradigms&quot; target=&quot;_self&quot;&gt;Evolution of Hardware &amp;amp; Software Paradigms&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Welcome:&lt;br&gt;&lt;br&gt; &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Tools</title><link>http://www.azurepilot.com/page/Tools</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Tools</guid><comments>Moved from: First Things First</comments><pubDate>Sun, 07 Mar 2010 15:41:58 CST</pubDate><description>While Azure projects can be created and packaged using a generic text editor and the command line, good tooling makes the process a whole lot more smoother and productive. &lt;br&gt;&lt;br&gt;We recommend using Visual Studio 2008 for developing applications on Azure.&lt;br&gt;&lt;br&gt;&lt;table cellpadding=&quot;2&quot; cellspacing=&quot;0&quot;&gt;  &lt;tbody&gt;  &lt;tr&gt;  &lt;td&gt;   &lt;/td&gt;  &lt;td align=&quot;left&quot;&gt;  &lt;h3&gt;  Getting Started with Windows Azure&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;b&gt;1. Get Visual Studio &lt;/b&gt;&lt;br&gt;&lt;b&gt;You can either use the free Visual Web Developer Express edition or download the professional version of Visual Studio from MSDN AA or Dreamspark.&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;font color=&quot;#333333&quot;&gt;Download Visual Studio 2008 from MSDN AA&lt;/font&gt;   &lt;/li&gt;&lt;li&gt;  &lt;font color=&quot;#0033cc&quot;&gt;or &lt;a href=&quot;http://www.azurepilot.comhttps://www.dreamspark.com/Products/Product.aspx?ProductId=1&quot; target=&quot;_self&quot;&gt;Download from DreamSpark&lt;/a&gt;&lt;/font&gt;   &lt;/li&gt;&lt;li&gt;  &lt;font color=&quot;#0033cc&quot;&gt;or &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://msdn.microsoft.com/vstudio/aa700831.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Visual Studio 2008 Trial Versions&lt;/a&gt;&lt;/font&gt;   &lt;/li&gt;&lt;li&gt;  &lt;font color=&quot;#0033cc&quot;&gt;or &lt;/font&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.microsoft.com/express/vwd/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#800080&quot;&gt;Free Download: Visual Web Developer 2008&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Make sure SP1 is installed.   &lt;br&gt;&lt;b&gt;2a. Enable IIS7 with ASP.NET and WCF HTTP Activation&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://go.microsoft.com/fwlink/?LinkId=128752#instructions&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Steps for Vista / Win 7 / Win Svr 2008 here&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;2b. Get the SDK and Tools&lt;/b&gt;&lt;br&gt;&lt;b&gt;You do not need to download the Azure SDK separately if you download the following package:&lt;/b&gt; &lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;font color=&quot;#800080&quot;&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://go.microsoft.com/fwlink/?LinkId=128752&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Windows Azure Tools for Microsoft Visual Studio (includes the Windows Azure SDK)&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;3. Get an Azure Deployment Token&lt;br&gt;Required only to upload your solution to the Cloud.&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://go.microsoft.com/fwlink/?LinkID=129453&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#800080&quot;&gt;Register for Azure Services&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Introduction to Cloud Computing</title><link>http://www.azurepilot.com/page/Introduction+to+Cloud+Computing</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Introduction+to+Cloud+Computing</guid><pubDate>Sat, 06 Mar 2010 11:17:43 CST</pubDate><description>&lt;br&gt;&lt;b&gt;Table of Contents:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Overview   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Cloud+Taxonomy&quot; target=&quot;_self&quot;&gt;Cloud Taxonomy&lt;/a&gt;   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Benefits+of+Cloud+Computing&quot; target=&quot;_self&quot;&gt;Benefits of Cloud Computing&lt;/a&gt;   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Cloud+Application+Patterns&quot; target=&quot;_self&quot;&gt;&lt;font color=&quot;#800080&quot;&gt;Cloud Application Types &amp;amp; Patterns&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;OVERVIEW:&lt;/b&gt;&lt;br&gt;&lt;br&gt;Cloud computing represents perhaps the biggest paradigm shift in the delivery architecture of information services, since the invention of timesharing or the introduction of the client/server network. &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;font size=&quot;1&quot;&gt;Source: Forrester&lt;/font&gt;&lt;br&gt;&lt;br&gt;The term cloud is used as a metaphor for the Internet, based on how the Internet is depicted in computer network diagrams and is an abstraction for the complex infrastructure it conceals. And thus, cloud computing is the style of computing in which functionality [compute (applications) &amp;amp; storage (data)] is provided as a service over the internet or over an internal/external, location-transparent, centralized facility. No elaborate construction or development program is needed to kick-start such technology--the infrastructure is already in place and making money. Existing data centers, built to support the likes of Amazon and Microsoft, can rent spare capacity, creating a collection of services that provide the illusion of infinite computing power and storage on tap.&lt;br&gt;&lt;br&gt;The key motivation behind the growth of cloud computing are the factors of cost and agility. In 2000, according to commerce department statistics, the average % of capital equipment budget spent on IT was 45%, which is a significant share. On the other hand, the % of utilized server capacity on average is 6% (Economist Survey on IT) mainly due to the overprovisioning of hardware due to the necessity to engineer for peak load. What cloud computing attempts to do is to provide access to the said infrastructure as a utility service thereby making the above problems obsolete. Additionally, unlike in-house or hosted investments in IT, cloud computing allows the provisioning of the resources to scale up and down with demand with almost no up-front lead time requirements. This allows a company to be as nimble as its operations require, resulting in increased agility and decreased cost. &lt;br&gt;&lt;br&gt;The following 2 videos, between them, expound on the above topics further and provide a very high level overview of the concept of cloud-computing and contrast it against the traditional hosting methodologies as shown in the above diagram.&lt;br&gt;&lt;br&gt; &lt;/embed&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>5 dimensions of the Cloud</title><link>http://www.azurepilot.com/page/5+dimensions+of+the+Cloud</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/5+dimensions+of+the+Cloud</guid><pubDate>Sat, 06 Mar 2010 11:17:10 CST</pubDate><description>&lt;ol&gt;  &lt;li&gt;  The cloud creates opportunities and responsibilities   &lt;/li&gt;&lt;li&gt;  The cloud learns and helps you learn, decide and take action   &lt;/li&gt;&lt;li&gt;  The cloud enhances your social and professional interactions   &lt;/li&gt;&lt;li&gt;  The cloud wants smarter devices   &lt;/li&gt;&lt;li&gt;  The cloud drives server advances that drive the cloud&lt;/li&gt;&lt;/ol&gt;On Mar 4, 2010, Steve Ballmer spoke to a group of students and faculty at the University of Washington to discuss how cloud computing will change the way people and businesses use technology. During that talk, he outlined the above dimensions of the cloud. Here is the full speech.   &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.microsoft.com/cloud/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.microsoft.com/cloud/&lt;/a&gt; is the location of the official Microsoft Cloud Services effort.&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>IIT Cloud Workshop</title><link>http://www.azurepilot.com/page/IIT+Cloud+Workshop</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/IIT+Cloud+Workshop</guid><pubDate>Tue, 02 Mar 2010 15:49:08 CST</pubDate><description>&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://public.bay.livefilestore.com/y1pXsie2tw-cQZaxMEWaF0flJYwOBeg2J7GVesDyi_jiL8r1ql74iFpljpFS5hj0YklcPyNOF8HBzOxppBdQTIh5Q/IntroductionToWindowsAzure.rar?download&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot; title=&quot;Lab Files&quot;&gt;Lab Files&lt;/a&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Welcome to the Azure Academic Pilot</title><link>http://www.azurepilot.com/page/Welcome+to+the+Azure+Academic+Pilot</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Welcome+to+the+Azure+Academic+Pilot</guid><pubDate>Fri, 05 Feb 2010 11:38:39 CST</pubDate><description>&lt;table width=&quot;100%&quot;&gt;  &lt;tbody&gt;  &lt;tr&gt;  &lt;td&gt;  &lt;div class=&quot;WPC-edit-area&quot;&gt;  Windows Azure is the development, hosting, and management environment of the Microsoft Cloud Platform that enables you to run applications at Internet scale while leveraging the skills and tools you use today.&lt;br&gt;&lt;br&gt;&lt;font face=&quot;Garamond&quot;&gt;&lt;font face=&quot;Arial&quot;&gt;The goal of this light&lt;font color=&quot;#000000&quot;&gt;-weight, free-form &lt;/font&gt;program is to get early hands-on access to the Windows Azure Platform and shape the content surrounding this exciting technology for use by selected faculty and students around their research and teaching needs.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face=&quot;Garamond&quot;&gt;&lt;font face=&quot;Arial&quot;&gt;Please use the links on the left to browse through the content modules on this site.&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;/div&gt;&lt;/td&gt;  &lt;td width=&quot;14&quot;&gt;&lt;br&gt;&lt;/td&gt;  &lt;td width=&quot;260&quot;&gt;  &lt;div class=&quot;WPC-edit-area&quot;&gt;  &lt;object data=&quot;http://widget.wetpaintserv.us/wiki/azurepilot/page/Azure+Academic+Pilot+Home/widget/modulehotdiscussions/wetpaint-hot-discussions-widget&quot; flashvars=&quot;STATIC_HOST=static.wetpaint.com&amp;NAMESPACE=azurepilot&amp;USERNAME=-Krishna.Kumar-&amp;HOST=attached-wapi.wetpaint.com&quot; height=&quot;250&quot; id=&quot;WPC-MODULE1247081546460&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;250&quot; wmode=&quot;transparent&quot;&gt;&lt;param name=&quot;codebase&quot; value=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;param name=&quot;classid&quot; value=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://widget.wetpaintserv.us/wiki/azurepilot/page/Azure+Academic+Pilot+Home/widget/modulehotdiscussions/wetpaint-hot-discussions-widget&quot;&gt;&lt;param name=&quot;flashvars&quot; value=&quot;STATIC_HOST=static.wetpaint.com&amp;NAMESPACE=azurepilot&amp;USERNAME=-Krishna.Kumar-&amp;HOST=attached-wapi.wetpaint.com&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/object&gt;&lt;br&gt;&lt;br&gt;&lt;object data=&quot;http://widget.wetpaintserv.us/wiki/azurepilot/page/Azure+Academic+Pilot+Home/widget/modulenewmemberspotlight/wetpaint-new-member-widget&quot; flashvars=&quot;STATIC_HOST=static.wetpaint.com&amp;NAMESPACE=azurepilot&amp;USERNAME=-Krishna.Kumar-&amp;HOST=attached-wapi.wetpaint.com&quot; height=&quot;250&quot; id=&quot;WPC-seedMember&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;250&quot;&gt;&lt;param name=&quot;codebase&quot; value=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;param name=&quot;classid&quot; value=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://widget.wetpaintserv.us/wiki/azurepilot/page/Azure+Academic+Pilot+Home/widget/modulenewmemberspotlight/wetpaint-new-member-widget&quot;&gt;&lt;param name=&quot;flashvars&quot; value=&quot;STATIC_HOST=static.wetpaint.com&amp;NAMESPACE=azurepilot&amp;USERNAME=-Krishna.Kumar-&amp;HOST=attached-wapi.wetpaint.com&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/object&gt;&lt;br&gt;&lt;br&gt;&lt;object data=&quot;http://widget.wetpaintserv.us/wiki/azurepilot/page/Azure+Academic+Pilot+Home/widget/modulerecentsiteactivity/wetpaint-site-activity-widget&quot; flashvars=&quot;STATIC_HOST=static.wetpaint.com&amp;USERNAME=-Krishna.Kumar-&amp;NAMESPACE=azurepilot&amp;HOST=attached-wapi.wetpaint.com&quot; height=&quot;250&quot; id=&quot;WPC-seedActivity&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;250&quot;&gt;&lt;param name=&quot;codebase&quot; value=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;param name=&quot;classid&quot; value=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://widget.wetpaintserv.us/wiki/azurepilot/page/Azure+Academic+Pilot+Home/widget/modulerecentsiteactivity/wetpaint-site-activity-widget&quot;&gt;&lt;param name=&quot;flashvars&quot; value=&quot;STATIC_HOST=static.wetpaint.com&amp;USERNAME=-Krishna.Kumar-&amp;NAMESPACE=azurepilot&amp;HOST=attached-wapi.wetpaint.com&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/object&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Other Cloud Considerations</title><link>http://www.azurepilot.com/page/Other+Cloud+Considerations</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Other+Cloud+Considerations</guid><pubDate>Mon, 14 Dec 2009 04:14:03 CST</pubDate><description>&lt;br&gt;&lt;b&gt;Table of Contents:&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Overview   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Service+Management+in+the+Cloud&quot; target=&quot;_self&quot;&gt;Service Management&lt;/a&gt;   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Best+Practices+for+Development+on+the+cloud&quot; target=&quot;_self&quot;&gt;Best Practices for Cloud Development&lt;/a&gt; &lt;/li&gt;  &lt;/ul&gt;&lt;br&gt;This section goes into the other details of cloud computing that were not covered so far. We will look at the Azure Fabric that hosts the compute and storage components, the fabric controller that manages the health of fabric and the applications running in the fabric. We will also look at best practices for development on the cloud keeping in mind some of its idiosyncrasies and finally, we will end with a section on Cloud Economics and ROI on the cloud vs. traditional on-premises offerings.&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Physical Design and Architecture of the 'Cloud' - Datacenter Design</title><link>http://www.azurepilot.com/page/Physical+Design+and+Architecture+of+the+%27Cloud%27+-+Datacenter+Design</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Physical+Design+and+Architecture+of+the+%27Cloud%27+-+Datacenter+Design</guid><pubDate>Mon, 14 Dec 2009 00:24:51 CST</pubDate><description>The &amp;#39;Cloud&amp;#39; in cloud computing, where our applications end up running, more often than not is a a data center owned and operated by the vendor providing the cloud service.&lt;br&gt;&lt;br&gt;A data center, also called a server farm, is a facility used to house computer systems and associated components, such as telecommunications and storage systems. It generally includes redundant or backup power supplies, redundant data communications connections, environmental controls (e.g., air conditioning, fire suppression) and security devices.&lt;br&gt;&lt;br&gt;A data center can occupy one room of a building, one or more floors, or an entire building. The traditional design of equipment in a data center is often in the form of servers mounted in 19 inch rack cabinets, which are usually placed in single rows forming corridors between them. &lt;br&gt;&lt;br&gt; &lt;/embed&gt;&lt;/embed&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Other Resources</title><link>http://www.azurepilot.com/page/Other+Resources</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Other+Resources</guid><pubDate>Sat, 26 Sep 2009 17:14:27 CDT</pubDate><description>Azure Case Studies:&lt;br&gt;&lt;ul&gt;  &lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.microsoft.com/azure/casestudies.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.microsoft.com/azure/casestudies.mspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  Azure Pricing and SLA:&lt;br&gt;&lt;ul&gt;  &lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.microsoft.com/azure/pricing.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.microsoft.com/azure/pricing.mspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  Azure Technology Whitepapers:&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.microsoft.com/azure/whitepaper.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.microsoft.com/azure/whitepaper.mspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Microsoft Cloud Security Whitepaper:   &lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.globalfoundationservices.com/security/documents/SecuringtheMSCloudMay09.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;http://www.globalfoundationservices.com/security/documents/SecuringtheMSCloudMay09.pdf&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Presentations:&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  AMCIS 2009: &lt;a href=&quot;http://www.azurepilot.com/page/AMCIS+Cloud+Computing+Workshop+-+Collateral&quot; target=&quot;_self&quot;&gt;Slide Deck&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>AMCIS Cloud Computing Workshop - Collateral</title><link>http://www.azurepilot.com/page/AMCIS+Cloud+Computing+Workshop+-+Collateral</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/AMCIS+Cloud+Computing+Workshop+-+Collateral</guid><comments>Moved from: Welcome to the Azure Academic Pilot</comments><pubDate>Thu, 10 Sep 2009 15:35:17 CDT</pubDate><description> &lt;br&gt;&lt;br&gt;Please find the slide deck for the AMCIS 2009 Cloud Computing workshop attached &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://krishnaon.net/_AzurePilot/AMCISCloudComputingWorkshop-AzurePilot.pptx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Evolution of (Hardware &amp;) Software Paradigms</title><link>http://www.azurepilot.com/page/Evolution+of+%28Hardware+%26%29+Software+Paradigms</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Evolution+of+%28Hardware+%26%29+Software+Paradigms</guid><pubDate>Mon, 03 Aug 2009 14:44:36 CDT</pubDate><description>&lt;b&gt;Pre 1970s:&lt;/b&gt; &lt;br&gt;&lt;b&gt;Mainframes roamed the earth&lt;/b&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;When the concept of the commercial computer was relatively rare and in its infancy, computers were hard-wired and then later programmed using binary code that represented control sequences fed to the computer CPU. This was difficult and error-prone. The downside was that the code executed on these computers was in a machine-specific &amp;quot;language&amp;quot; with the program coupled to the hardware itself. Code developed for one machine could not run on another. Programs written in binary are said to be written in machine code, which is a very low-level programming paradigm. &lt;br&gt;&lt;br&gt;As the use of computers spread and the need for various business applications was felt, assembly languages were developed to make programming easier. These replaced machine code functions with mnemonics and absolute memory addresses with symbolic labels. Assembly language decoupled the code from specific machines, enabling it to run on multiple computers. That code, however, was now coupled to the machine architecture: code written for an 8-bit machine could not run on a 16-bit machine, let alone withstand differences in the registers or available memory and memory layout. Assembly language programming is considered a low-level paradigm although it is a &amp;#39;second generation&amp;#39; paradigm. &lt;br&gt;&lt;br&gt;The next advance was the development of compiler based higher-level languages such as COBOL and FORTRAN in the 1960s. These third-generation languages (the first described as high-level languages) use vocabulary related to the problem being solved. For example, &lt;br&gt;&lt;br&gt;COBOL (Common Business Oriented Language) - uses terms like file, move and copy. &lt;br&gt;FORTRAN (FORmula TRANslation) &lt;br&gt;&lt;br&gt;The developer would write in an abstraction of machine programming (the language), and the compiler would translate that into actual assembly code. Compilers for the first time decoupled the code from the hardware and its architecture. The problem with those first-generation languages was that the code resulted in nonstructured programming, where the code was internally coupled to its own structure via the use of jump or go-to statements, resulting in hard to maintain code whose control flows resembled a bowl of spaghetti. Minute changes to the code structure often had devastating effects in multiple places in the program. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;1970s:&lt;/b&gt; &lt;br&gt;&lt;b&gt;The rise of the Minis&lt;/b&gt;&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt;With the advent of the mini-computer, programming as an activity became more interactive and democratized and consequently, the next advance was the development of procedural languages, based upon the concept of the procedure call. Procedures, also known as routines, subroutines, methods, or functions simply contain a series of computational steps to be carried out. Additionally, the modular and structured nature of these procedural languages such as C and Pascal, decoupled the code from its internal layout and structure using functions and structures and significantly reduced the bowl of spaghetti problem that was faced by the previous generation of sequential languages. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Mid-1980&amp;rsquo;s: &lt;/b&gt;&lt;br&gt;&lt;b&gt;Proliferation of the PCs:&lt;/b&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;The explosion of the PC revolution resulted in the demand for a wide variety of commercial and open source software while completely democratizing the developer experience thereby enlisting cadres of programmers into the fold. This resulted in an urgent requirement for a reusable paradigm of software development after finding that traditional structured programming resulted in compromised quality as hardware and software became increasingly complex, due to the fact that the basic unit of reuse is the function. But the problem with function-based reuse is that the function is coupled to the data it manipulates, and if the data is global, a change to benefit one function in one reuse context is likely to damage another function used somewhere else. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic. The methodology focuses on data rather than processes, with programs composed of self-sufficient modules (objects) each containing all the information needed to manipulate its own data structure. The only way that a user can access the data is via the object&amp;#39;s &amp;#39;methods&amp;#39; (subroutines). Thanks to this, the internal workings of an object may be changed without affecting any code that uses the object. The mechanism of reuse was class-based, enabling both direct reuse and specialization via inheritance. &lt;br&gt;&lt;br&gt;Additionally, with the proliferation of PCs, came the concept of commercial networks and network programming. At this stage creating what could be vaguely described as a distributed application meant network programming using sockets, since OOP languages required direct memory references and did not support distribution. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;1990s:&lt;/b&gt; &lt;br&gt;&lt;b&gt;Explosion of the Networked Server&lt;/b&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;As the need for software and code reuse mushroomed in the 90s amidst the proliferation of interconnected PCs, developers started discovering the following problems with the Object Oriented Model of software development: &lt;br&gt;&lt;br&gt;&lt;ol&gt;  &lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot;&gt;  The generated application was a single, monolithic application. Languages did not concern themselves with binary representation of the generated code, and so, every time a minute change was made to the code, the entire application had to be redeployed.&lt;/div&gt;  &lt;/li&gt;&lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;  While the basic unit of reuse was a class, it was a class in source format. Consequently, the application was coupled to the language used. Language and source based reuse lead to a host of other problems. &lt;/div&gt;  &lt;/li&gt;&lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;  Inheritance turned out to be a poor mechanism for reuse, often harboring more harm than good because the developer of the derived class needed to be intimately aware of the implementation of the base class (which introduced vertical coupling across the class hierarchy).&lt;/div&gt;  &lt;/li&gt;&lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot;&gt;  Oblivious to issues like deployment, versioning, fault isolation, authorization and authentication of client objects, scalability, responsiveness and throughput.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;The solution for the problems of object-orientation evolved over time, involving technologies such as the static library (.lib) and the dynamic library (.dll), culminating in 1994 with the first component-oriented technology, called COM (Component Object Model). Component-orientation provided interchangeable, interoperable binary components. With this approach, instead of sharing source files, the client and the server agree on a binary type system (such as IDL) and a way of representing the metadata inside the opaque binary components. The client only programs against an abstraction of the service: a contract called the interface. As long as the interface is immutable, the service is free to evolve at will. A proxy can implement the same interface and thus enable seamless remote calls by encapsulating the low-level mechanics of the remote call. The availability of a common binary type system enables cross-language interoperability. &lt;br&gt;&lt;br&gt;The above paradigm lent itself readily to distributed programming and many technologies were created for communication among software components distributed across networked computers. The most notable ones are DCOM, CORBA, RMI and .NET Remoting. &lt;br&gt;&lt;br&gt;The following were the most common architectures of distributed programming that were in vogue: &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Client-server &amp;mdash; Smart client code contacts the server for data, then formats and displays it to the user. Input at the client is committed back to the server when it represents a permanent change. &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;3-tier architecture &amp;mdash; Three tier systems move the client intelligence to a middle tier so that stateless clients can be used. This simplifies application deployment. Most web applications are 3-Tier. &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;N-tier architecture &amp;mdash; N-Tier refers typically to web applications which further forward their requests to other enterprise services. This type of application is the one most responsible for the success of application servers. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Early 2000s:&lt;/b&gt; &lt;br&gt;&lt;b&gt;The Internet comes of Age&lt;/b&gt; &lt;br&gt;&lt;br&gt;As the Internet grew in popularity and critical mass towards the end of the 90&amp;rsquo;s, it became an application platform in its own right and the distributed technology that evolved to bridge the heterogeneous nature of the Internet was Web Services. It provided the same component oriented functionalities as DCOM, CORBA and RMI, but did so in a more interoperable fashion. Web Services usually used Extensible Markup Language (XML) messages that follow the Simple Object Access Protocol (SOAP) standard and have been popular with traditional enterprise. In such systems, there is often a machine-readable description of the operations offered by the service written in the Web Services Description Language (WSDL), similar to IDL from earlier technologies.&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Late 2000s:&lt;/b&gt; &lt;br&gt;&lt;b&gt;Present Day&lt;/b&gt; &lt;br&gt;&lt;br&gt;Combining the concept of Web Services and loose coupling led to the introduction of the &amp;lsquo;Service Oriented Architecture&amp;rsquo; in the late 2000s that has emerged as the answer to the shortcomings of component-orientation. In a service-oriented application, developers focus on writing business logic and expose that logic via interchangeable, interoperable service endpoints. The business logic in each of these services comprises intrinsically unassociated, loosely coupled units of functionality that have no calls to each other. Clients consume those endpoints (not the service code, or its packaging). The interaction between the clients and the service endpoint is based on a standard message exchange, and the service publishes some standard metadata describing what exactly it can do and how clients should invoke operations on it. The metadata is the service equivalent of the C++ header file, the COM type library, or the .NET assembly metadata, yet it contains not just operation metadata (such as methods and parameters) but also plumbing metadata. Incompatible clients&amp;mdash;that is, clients that are incompatible with the plumbing expectations of the object&amp;mdash;cannot call it, since the call will be denied by the platform. In many respects, a service is the natural evolution of the component, just as the component was the natural evolution of the object, which was the natural evolution of the function. &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;One additional deployment technology that has taken the IT world by storm recently is &amp;ldquo;Cloud Computing&amp;rdquo;. Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. The concept generally incorporates combinations of the following that we shall explore in detail in the next module.&lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot;&gt;  infrastructure as a service (IaaS) &lt;/div&gt;  &lt;/li&gt;&lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;  platform as a service (PaaS) &lt;/div&gt;  &lt;/li&gt;&lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;  software as a service (SaaS)&lt;/div&gt;  &lt;/li&gt;&lt;li&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot;&gt;  software + services (S+S)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;br&gt;&lt;br&gt;Cloud computing customers do not generally own the physical infrastructure serving as host to the software platform in question. Instead, they avoid capital expenditure by renting usage from a third-party provider. They consume resources as a service and pay only for resources that they use. Many cloud-computing offerings employ the utility computing model, which is analogous to how traditional utility services (such as electricity) are consumed, while others bill on a subscription basis. Sharing &amp;quot;perishable and intangible&amp;quot; computing power among multiple tenants can improve utilization rates, as servers are not unnecessarily left idle (which can reduce costs significantly while increasing the speed of application development). A side effect of this approach is that overall computer usage rises dramatically, as customers do not have to engineer for peak load limits. Additionally, &amp;quot;increased high-speed bandwidth&amp;quot; makes it possible to receive the same response times from centralized infrastructure at other sites. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br&gt;&lt;br&gt;Here is a brief recap of the evolution of the computing models from above: &lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table align=&quot;bottom&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; class=&quot;WPC-edit-style-none WPC-edit-border-none WPC-edit-styleData-color1=%23ebebeb&amp;color2=%23c7c7c7&quot; width=&quot;720&quot;&gt;  &lt;tbody&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#333333&quot; face=&quot;Calibri&quot;&gt;Period&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;125&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#333333&quot; face=&quot;Calibri&quot;&gt;Platform&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#333333&quot; face=&quot;Calibri&quot;&gt;Software Paradigm&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;101&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#333333&quot; face=&quot;Calibri&quot;&gt;Examples&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;106&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#333333&quot; face=&quot;Calibri&quot;&gt;Distributed Paradigm&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#333333&quot; face=&quot;Calibri&quot;&gt;Examples&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Pre 1960s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;125&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Mainframes&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Low Level Programming&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;101&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Machine Lang, Assembly Lang.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;106&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;None&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Pre 1970s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;125&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Mainframes/Minis&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;High Level Sequential Programming&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;101&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;COBOL, FORTRAN&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;106&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;None&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;1970s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;125&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Minicomputers&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Structured Programming&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;101&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;C, Pascal&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;106&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;None&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;1980s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;125&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Personal Computers&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Object Oriented Programming&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;101&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Smalltalk, C++&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;106&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Network programming using Sockets&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;TCP Socket Programming&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;1990s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;125&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Networked Computers&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Component oriented programming&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;101&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Frameworks like COM&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; width=&quot;106&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Homogeneous&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Client Server, 3-Tier, n-Tier Architectures&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;RPC based technologies like DCOM, CORBA, RMI&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Early 2000s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;125&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Heterogeneous Networks (Internet)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Component oriented programming&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;101&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;.NET&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; width=&quot;106&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Heterogeneous&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;n-Tier Architectures, Web Computing&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#c7c7c7&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Message passing technologies like Web Services, SaaS&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;97&quot;&gt;  &lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Late 2000s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;125&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Heterogeneous Networks (Internet)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Service Oriented Architecture&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;101&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;.NET, WCF&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;106&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Web Computing, Cloud Computing&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;  &lt;td bgcolor=&quot;#ebebeb&quot; class=&quot;              &quot; width=&quot;105&quot;&gt;  &lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;WS*, REST, IaaS (EC2), PaaS (Azure)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;br&gt;Credits &amp;amp; References: &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=3&amp;tabid=5&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Juval Lowy&lt;/a&gt;, Wikipedia&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Storage in the Cloud</title><link>http://www.azurepilot.com/page/Storage+in+the+Cloud</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Storage+in+the+Cloud</guid><pubDate>Thu, 23 Jul 2009 11:00:44 CDT</pubDate><description>&lt;br&gt;&lt;b&gt;Table of Contents:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Overview   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Storage+Samples+%26+Hands-On+Lab&quot; target=&quot;_self&quot;&gt;Samples and Hands On Labs&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;&lt;font color=&quot;#333333&quot;&gt;OVERVIEW&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Applications work with data in many different ways. Accordingly, the Windows Azure Storage service provides several options. To use Windows Azure Storage, a developer must first create a storage account. To control access to the information in this account, Windows Azure gives its creator a secret key. Each request an application makes to information in this storage account&amp;mdash;blobs, tables, and queues&amp;mdash;carries a signature created with this secret key. In other words, authorization is at the account level. Windows Azure Storage doesn&amp;rsquo;t provide access control lists or any other more fine-grained way to control who&amp;rsquo;s allowed to access the data it contains.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Windows Azure storage can be accessed by a Windows Azure application, by an application running on-premises within some organization, or by an application running at a hoster. In all of these cases, all three Windows Azure storage styles use the conventions of REST to identify and expose data. In other words, blobs, tables, and queues are all named using URIs and accessed via standard HTTP operations. A .NET client might use the ADO.NET Data Services libraries to do this, but it&amp;rsquo;s not required&amp;mdash;an application can also make raw HTTP calls. &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;The following figure shows the various storage options available in Windows Azure today:&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;u&gt;&lt;font color=&quot;#333333&quot;&gt;BLOBS:&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;The simplest way to store data in Windows Azure storage is to use Binary large objects - blobs. A blob contains binary data and they can also have associated metadata, such as information about where a JPEG photograph was taken or who the singer is for an MP3 file. To use blobs, a developer first creates one or more containers in some storage account. Each of these containers can then hold one or more blobs. Blobs follow a simple hierarchy: A storage account can have one or more containers, each of which holds one or more blobs. &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;To identify a particular blob, an application supplies a URI of the form:&lt;/font&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;http:// &lt;i&gt;&amp;lt;StorageAccount&amp;gt;.&lt;/i&gt;blob.core.windows.net/&lt;i&gt;&amp;lt;Container&amp;gt;&lt;/i&gt;/&lt;i&gt;&amp;lt;BlobName&amp;gt;&lt;/i&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;&amp;lt;StorageAccount&amp;gt; is a unique identifier assigned when a new storage account is created, while &amp;lt;Container&amp;gt; and &amp;lt;BlobName&amp;gt; are the names of a specific container and a blob within that container. Containers can&amp;rsquo;t be nested&amp;mdash;they can contain only blobs, not other containers&amp;mdash;so it&amp;rsquo;s not possible to create a hierarchy of blobs.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Blobs can be big&amp;mdash;up to 50 gigabytes each&amp;mdash;and so to make transferring them more efficient, each blob can be subdivided into blocks. If a failure occurs, retransmission can resume with the most recent block rather than sending the entire blob again. Once all of a blob&amp;rsquo;s blocks have been uploaded, the entire blob can be committed at once. &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Containers can be marked as private or public. For blobs in a private container, both read and write requests must be signed using the key for the blob&amp;rsquo;s storage account. For blobs in a public container, only write requests must be signed; any application is allowed to read the blob. This can be useful in situations such as making video, photos, or other unstructured data generally available on the Internet.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;u&gt;&lt;font color=&quot;#333333&quot;&gt;TABLES:&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Blobs are just right for some situations, but they&amp;rsquo;re too unstructured for others. To let applications work with data in a more fine-grained way, Windows Azure storage provides tables. Unlike the name suggests, &lt;i&gt;these aren&amp;rsquo;t relational tables&lt;/i&gt;. In fact, even though they&amp;rsquo;re called &amp;ldquo;tables&amp;rdquo;, the data they hold is actually stored in a simple hierarchy of entities that contain properties. The following figure illustrates how the parts of a table fit together.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Each table holds some number of entities. An entity contains zero or more properties, each with a name, a type, and a value. A variety of types are supported, including Binary, Bool, DateTime, Double, GUID, Int, Int64, and String and a property can take on different types at different times depending on the value stored in it. Furthermore, there&amp;rsquo;s no requirement that all properties in an entity have the same type&amp;mdash;a developer is free to do what makes the most sense for her application. &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Whatever it contains, an entity can be up to one megabyte in size, and it&amp;rsquo;s always accessed as a unit. Reading an entity returns all of its properties, and writing one atomically replaces all of its properties. &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Windows Azure Storage tables are different from relational tables in a number of other ways. Such as, they can&amp;rsquo;t be accessed using ordinary ADO.NET, nor do they support SQL queries. And tables in Windows Azure Storage enforce no schema&amp;mdash;the properties in a single entity can be of different types, and those types can change over time. The reasoning behind this design decision around Azure Tables stems from the primary Windows Azure goal of supporting massively scalable applications. In fact, a single Windows Azure table can contain billions of entities holding terabytes of data. To allow this, the storage mechanism needs to get simpler: What&amp;rsquo;s needed is the kind of structure provided by Windows Azure tables. It frees developers from worrying about scale&amp;mdash;just create new tables, add new entities, and Windows Azure takes care of the rest. It also eliminates much of the work required to maintain a DBMS, since Windows Azure does this for you. The goal is to let developers focus on their application rather than on the mechanics of storing and administering large amounts of data.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;And rather than using SQL, tables are accessed RESTfully, like everything else in Windows Azure Storage, again for the purpose of achieving scale-out storage. A .NET application can use ADO.NET Data Services or Language Integrated Query (LINQ) to do this, both of which hide the underlying HTTP requests. Any application, .NET or otherwise, is also free to make these requests directly. For example, a query against a particular table is expressed as an HTTP GET against a URI formatted like this:&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;http:// &amp;lt;StorageAccount&amp;gt;.table.core.windows.net/&amp;lt;TableName&amp;gt;?$filter=&amp;lt;Query&amp;gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Here, &amp;lt;TableName&amp;gt; specifies the table being queried, while &amp;lt;Query&amp;gt; contains the query to be executed against this table. If the query returns a large number of results, a developer can get a continuation token that can be passed in on the next query. Doing this repetitively allows retrieving the complete result set in chunks.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Windows Azure tables aren&amp;rsquo;t the right choice for every storage scenario, and using them requires developers to learn some new things. Still, for applications that need the scalability they provide, tables can be just right.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;u&gt;&lt;b&gt;&lt;font color=&quot;#333333&quot;&gt;QUEUES:&lt;/font&gt;&lt;/b&gt;&lt;/u&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;While tables and blobs are primarily intended to store and access data, the main goal of queues is to allow communication between different parts of a Windows Azure application. A primary function of queues is to provide a way for Web role instances to communicate with Worker role instances. &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Like everything else in Windows Azure Storage, queues are accessed RESTfully. Both Windows Azure applications and external applications reference a queue by using a URI formatted like this:&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;http:// &amp;lt;StorageAccount&amp;gt;.queue.core.windows.net/&amp;lt;QueueName&amp;gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;As described above, a common use of queues is to allow interaction between Web role instances and Worker role instances. The following figure shows how this looks.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;In a typical scenario, multiple Web role instances are running, each accepting work from users (step 1). To pass that work on to Worker role instances, a Web instance writes a message into a queue (step 2). This message, which can be up to eight kilobytes, might contain a URI pointing to a blob or entity in a table, or something else&amp;mdash;it&amp;rsquo;s up to the application. Worker instances read messages from this queue (step 3), then do the work the message requests (step 4). It&amp;rsquo;s important to note, however, that reading a message from a queue doesn&amp;rsquo;t actually delete the message. Instead, it makes the message invisible to other readers for a set period of time (which by default is 30 seconds). When the Worker instance has completed the work this message requested, it must explicitly delete the message from the queue (step 5).&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;The reason for making instances explicitly delete messages is that it allows handling failures. If the Worker role instance that retrieves a message handles it successfully, it will delete the message while that message is still invisible, i.e., within its 30 second window. If a Worker role instance dequeues a message, however, then crashes before it completes the work that message specifies, it won&amp;rsquo;t delete the message from the queue. When its visibility timeout expires, the message will reappear on the queue, then be read by another Worker role instance. The goal is to make sure that each message gets processed at least once.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Regardless of how data is stored&amp;mdash;in blobs, tables, or queues&amp;mdash;all information held in Windows Azure storage is replicated three times. This replication allows fault tolerance, since losing a copy isn&amp;rsquo;t fatal. The system provides strong consistency, however, so an application that immediately reads data it has just written is guaranteed to get back what it just wrote.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Here is an overview video that brings all of the above together:&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;Here are quick start videos for programming Azure Storage blobs, tables and queues:&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;font color=&quot;#333333&quot;&gt;For additional information, please check out the whitepapers on:&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://go.microsoft.com/fwlink/?LinkId=153400&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#333333&quot;&gt;Windows Azure Blob &amp;ndash; Programming Blob Storage&lt;/font&gt;&lt;/a&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;  &lt;/li&gt;&lt;li&gt;  &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://go.microsoft.com/fwlink/?LinkId=153401&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#333333&quot;&gt;Windows Azure Table &amp;ndash; Programming Table Storage&lt;/font&gt;&lt;/a&gt;&lt;font color=&quot;#333333&quot;&gt; &lt;/font&gt;  &lt;/li&gt;&lt;li&gt;  &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://go.microsoft.com/fwlink/?LinkId=153402&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#333333&quot;&gt;Windows Azure Queue - Programming Queue Storage&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Enabling Technologies of Cloud Computing</title><link>http://www.azurepilot.com/page/Enabling+Technologies+of+Cloud+Computing</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Enabling+Technologies+of+Cloud+Computing</guid><pubDate>Thu, 23 Jul 2009 10:42:25 CDT</pubDate><description>&lt;br&gt;&lt;b&gt;Table of Contents:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Overview   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Physical+Design+and+Architecture+of+the+%27Cloud%27+-+Datacenter+Design&quot; target=&quot;_self&quot;&gt;Datacenter Design&lt;/a&gt;   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Virtualization&quot; target=&quot;_self&quot;&gt;Virtualization&lt;/a&gt;   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Cloud+Protocols%2C+Standards+and+Wire+Formats&quot; target=&quot;_self&quot;&gt;Cloud Protocols and Wire Formats&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;OVERVIEW:&lt;/b&gt;&lt;br&gt;&lt;br&gt;As we saw in the previous sections, Cloud Computing was not born in vacuum; instead there has been a steady evolution of enabling technologies and paradigms that came together under the right circumstances to give rise to the concept of cloud computing.&lt;br&gt;&lt;br&gt;The following are some of the precursor technologies that enabled cloud computing as it exists today:&lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Inexpensive and plentiful storage and CPU bandwidth   &lt;/li&gt;&lt;li&gt;  Sophisticated communication, security and syndication formats to communicate with applications like HTTP, OpenID, Atom   &lt;/li&gt;&lt;li&gt;  Established data formats and flexible protocols to enable message passing like XML, JSON and REST   &lt;/li&gt;&lt;li&gt;  Sophisticated client platforms, such as HTML, CSS, AJAX   &lt;/li&gt;&lt;li&gt;  The right solution stacks like .NET and LAMP   &lt;/li&gt;&lt;li&gt;  SOA (service-oriented architectures) and SaaS   &lt;/li&gt;&lt;li&gt;  Commercial virtualization   &lt;/li&gt;&lt;li&gt;  Large datacenter infrastructure implementations from Microsoft, Yahoo, Amazon and others that provided real-world, massively scalable, distributed computing &lt;/li&gt;&lt;/ul&gt;Out of these, we shall explore the main building blocks of &lt;a href=&quot;http://www.azurepilot.com/page/Physical+Design+and+Architecture+of+the+%27Cloud%27+-+Datacenter+Design&quot; target=&quot;_self&quot;&gt;Datacenter design&lt;/a&gt;, &lt;a href=&quot;http://www.azurepilot.com/page/Virtualization&quot; target=&quot;_self&quot;&gt;Virtualization&lt;/a&gt; and &lt;a href=&quot;http://www.azurepilot.com/page/Cloud+Protocols%2C+Standards+and+Wire+Formats&quot; target=&quot;_self&quot;&gt;Cloud protocols&lt;/a&gt; in the following sections.  &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Cloud Taxonomy</title><link>http://www.azurepilot.com/page/Cloud+Taxonomy</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Cloud+Taxonomy</guid><pubDate>Thu, 23 Jul 2009 10:40:36 CDT</pubDate><description>While cloud computing as a concept, is uniformly characterized by a few common attributes as we saw in the previous section, there are a host of various ways in which it is implemented and offered as a service to the consumer, as detailed in the following discussion.&lt;br&gt;&lt;br&gt;To examine the taxonomy of cloud computing, let us draw on our understanding of the traditional &amp;quot;on-premises&amp;quot; application platform, which can be thought as typically comprising of these three parts:&lt;br&gt;&lt;br&gt;&lt;ol&gt;  &lt;li&gt;  A foundation or Infrastructure   &lt;/li&gt;&lt;li&gt;  Middleware or Runtime Platform   &lt;/li&gt;&lt;li&gt;  Application Services&lt;/li&gt;&lt;/ol&gt;    &lt;br&gt;&lt;br&gt;If the complex on-premises computing applications of today are to move successfully to &amp;quot;the cloud,&amp;quot; all three types of service will need to precede them, and furthermore, even new kinds of services may be required. &lt;br&gt;&lt;br&gt;Transferring the above pieces of infrastructure to the cloud gives us the following 3 main widely-accepted classifications of cloud computing architectures:&lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  &lt;b&gt;Software-as-a-service offerings [SaaS].&lt;/b&gt; Software as a Service is a model of software deployment whereby a provider licenses an application to customers for use as a service on demand. SaaS services include complete applications that can be customized by clients and delivered over the Internet such as salesforce.com, Gmail, and enterprise applications delivered as a service. &lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;  &lt;li&gt;  &lt;b&gt;Platform-as-a-service offerings [PaaS].&lt;/b&gt; Platform as a service offerings are externally hosted services providing complete computing platforms and solution stacks as a service to create, run, and operate applications, including development tools, administration and management tools, runtime engine(s), data management engine(s), security facilities, and user-management services. These services include offerings such as the Windows Azure Platform, Google App Engine and Force.com. &lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;  &lt;li&gt;  &lt;b&gt;Infrastructure-as-a-service [IaaS]. &lt;/b&gt;Infrastructure as a Service is the delivery of computer infrastructure (typically a platform virtualization environment) as a service. IaaS includes both full infrastructures on which clients can deploy applications (like Amazon Elastic Compute Cloud) as well as separate infrastructure services (e.g., virtual computing capacity, virtualized hosting, utility storage, etc.). These services are typically billed on a utility computing basis and amount of resources consumed (and therefore the cost) will typically reflect the level of activity. It is an evolution of web hosting and virtual private server offerings.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;The following are the key characteristics of each of these variants of cloud computing:&lt;br&gt;&lt;br&gt;&lt;b&gt;Software-as-a-service offerings [SaaS]&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  network-based access to, and management of, commercially available software   &lt;/li&gt;&lt;li&gt;  activities managed from central locations rather than at each customer&amp;#39;s site, enabling customers to access applications remotely via the Web   &lt;/li&gt;&lt;li&gt;  application delivery typically closer to a one-to-many model (single instance, multi-tenant architecture) than to a one-to-one model, including architecture, pricing, partnering, and management characteristics   &lt;/li&gt;&lt;li&gt;  centralized feature updating, which obviates the need for end-users to download patches and upgrades.   &lt;/li&gt;&lt;li&gt;  frequent integration into a larger network of communicating software - either as part of a mashup or as a plugin to a platform as a service. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Platform-as-a-service offerings [PaaS]&lt;/b&gt;   &lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Services to develop, test, deploy, host and maintain applications in the same integrated development environment   &lt;/li&gt;&lt;li&gt;  Web based user interface creation tools   &lt;/li&gt;&lt;li&gt;  Multi-tenant architecture   &lt;/li&gt;&lt;li&gt;  Integration with web services and databases (via SOAP and REST)   &lt;/li&gt;&lt;li&gt;  Support for development team collaboration   &lt;/li&gt;&lt;li&gt;  Utility-grade instrumentation   &lt;/li&gt;&lt;li&gt;  Financial billing and instrumentation&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Infrastructure-as-a-service [IaaS]&lt;/b&gt;   &lt;br&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Resources delivered as a service including servers, network equipment, memory, CPU, disk space, data center facilities,   &lt;/li&gt;&lt;li&gt;  Dynamic scaling of infrastructure which scales up and down based on application resource needs   &lt;/li&gt;&lt;li&gt;  Variable cost service using fixed prices per resource component   &lt;/li&gt;&lt;li&gt;  Multiple tenants typically coexist on the same infrastructure resources   &lt;/li&gt;&lt;li&gt;  Enterprise grade infrastructure allows mid-size companies to benefit from the aggregate compute resource pools&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Here is a more holistic representation of the above concepts with reference to the cloud computing platform architecture figure from the previous module:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;font size=&quot;1&quot;&gt;Credit: Joshy Joseph&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;In this model, each layer abstracts the layer below it, exposing interfaces that layers above build upon. There is no hard dependency between layers and each layer provides composable or Plug and Play architecture with services from other layers. Each layer provides horizontal scalability as needed.&lt;br&gt;&lt;div class=&quot;ArticleNormalPara&quot;&gt;  &lt;br&gt;As you can see, a cloud platform is composed of a number of subsystems. Let&amp;#39;s look at each one next.&lt;/div&gt;  &lt;div class=&quot;ArticleNormalPara&quot;&gt;  &lt;br&gt;&lt;b&gt;A hosting platform&lt;/b&gt; The hosting platform provides the physical, virtual, and software assets. These assets include physical machines, operating systems, network systems, storage systems, power management, and virtualization software. Bare metal and other operational resources are abstracted as virtual resources to the layers above. &lt;/div&gt;  &lt;div class=&quot;ArticleNormalPara&quot;&gt;  &lt;br&gt;&lt;b&gt;Cloud infrastructure services&lt;/b&gt; The most important function of this layer is to abstract the hosting platform as a set of virtual resources and manage those resources based on scalability and availability needs. Fundamentally, this layer provides three kinds of abstract resources: &lt;i&gt;compute, storage, &lt;/i&gt;and &lt;i&gt;network&lt;/i&gt;, and exposes a set of APIs to access and manage these resource abstractions. Thus you gain access to the underlying physical resources without knowing the details of the underlying hardware and software and can control these systems efficiently through configuration. Services offered by this subsystem are classified as &lt;i&gt;Infrastructure as a Service (IaaS)&lt;/i&gt;.&lt;/div&gt;  &lt;div class=&quot;ArticleNormalPara&quot;&gt;  &lt;br&gt;&lt;b&gt;Cloud platform services&lt;/b&gt; Developing and managing software for cloud computing is complex. It becomes really complex when you integrate on-premise software with hosted services. Platform services provide a set of capabilities exposed as services to help with such integration. Availability of platform services may differentiate one cloud provider from another. Services provided by this layer can be classified as &lt;i&gt;Platform as a Service (PaaS)&lt;/i&gt;.&lt;/div&gt;  &lt;div class=&quot;ArticleNormalPara&quot;&gt;  &lt;br&gt;&lt;b&gt;Cloud applications&lt;/b&gt; This layer houses applications that are built for cloud computing. These applications expose Web interfaces and Web Services for end users, enabling multitenant hosting models. Some functions include connecting disparate systems and leveraging cloud storage infrastructure to store documents. These services fall under the umbrella of &lt;i&gt;Software as a Service (SaaS)&lt;/i&gt;.&lt;/div&gt;&lt;br&gt;&lt;b&gt;Security services&lt;/b&gt; Security services ensure token provisioning, identity federation, and claims transformation. These services are built on the open standards, WS-Security, WS-Trust, WS-Federation, SAML protocols, and OpenID, for greater interoperability. &lt;br&gt;&lt;br&gt;&lt;b&gt;Management services &lt;/b&gt;Management interfaces cut across all the layers described above. The hosting platform leverages management interfaces and agents for automated scalability and availability administration. Even though the cloud is hosted and managed in a datacenter, customers may need functions that allow them to easily control their application and post deployment configurations, get analytics about service usage, and connect their enterprise management systems.&lt;br&gt;&lt;br&gt;&lt;b&gt;Tools &lt;/b&gt;Tools help you build, test, and deploy applications into the cloud. These tools may be extensions to existing tools (Visual Studio Tools for Windows Azure, for instance) or hosted tools from a specific cloud provider. &lt;br&gt;&lt;br&gt;&lt;br&gt;The following is yet another representation of the above concepts:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;font size=&quot;1&quot;&gt;Credit: Tommy McCall, Erica Naone&lt;/font&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Outlined as under is a mapping of the various technologies and their classification per the taxonomy outlined above:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;font size=&quot;1&quot;&gt;Authors: Peter Laird, Kent Dickson of BEA Systems&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Computing in the Cloud</title><link>http://www.azurepilot.com/page/Computing+in+the+Cloud</link><author>-Krishna.Kumar-</author><guid isPermaLink="false">http://www.azurepilot.com/page/Computing+in+the+Cloud</guid><pubDate>Thu, 23 Jul 2009 02:08:03 CDT</pubDate><description>&lt;br&gt;&lt;b&gt;Table of Contents:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;  &lt;li&gt;  Overview   &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Deploying+your+first+Windows+Azure+Service&quot; target=&quot;_self&quot;&gt;Deploying your Azure Service&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;  &lt;a href=&quot;http://www.azurepilot.com/page/Compute+Samples+%26+Hands-On+Lab&quot; target=&quot;_self&quot;&gt;Samples and Hands On Lab&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;OVERVIEW&lt;/b&gt;&lt;br&gt;&lt;br&gt;As we saw in the previous section, the Windows Azure Compute service can run many different kinds of applications. The building blocks of these applications are the two instance types provided by Windows Azure - &lt;b&gt;Web role &lt;/b&gt;instances and &lt;b&gt;Worker role&lt;/b&gt; instances. &lt;br&gt;&lt;br&gt;The following figure illustrates this idea:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;As its name suggests, a &lt;i&gt;Web role &lt;/i&gt;instance can accept incoming HTTP or HTTPS requests. To allow this, it runs in a VM that includes Internet Information Services (IIS) 7. Developers can create Web role instances using ASP.NET, WCF, or another .NET technology that works with IIS. Developers can also create applications in native code&amp;mdash;using the .NET Framework isn&amp;rsquo;t required. And as the above figure shows, Windows Azure provides built-in hardware load balancing to spread requests across Web role instances that are part of the same application. By running multiple instances of an application, Windows Azure helps that application scale. &lt;br&gt;&lt;br&gt;&lt;i&gt;Worker role &lt;/i&gt;instances aren&amp;rsquo;t quite the same as their Web role cousins. For example, they can&amp;rsquo;t accept requests from the outside world. Their VMs don&amp;rsquo;t run IIS, and a Worker application can&amp;rsquo;t accept any incoming network connections. Instead, a Worker role instance initiates its own requests for input. It can read messages from a queue, for instance, as described later, and it can open connections with the outside world. Given this more self-directed nature, Worker role instances can be viewed as akin to a batch job or a Windows service. &lt;br&gt;&lt;br&gt;A developer can use only Web role instances, only Worker role instances, or a combination of the two to create a Windows Azure application. If the application&amp;rsquo;s load increases, he can use the Windows Azure portal to request more Web role instances, more Worker role instances, or more of both for his application. If the load decreases, he can reduce the number of running instances. To shut down the application completely, the developer can shut down all of the application&amp;rsquo;s Web role and Worker role instances. &lt;br&gt;&lt;br&gt;For developers, building a Windows Azure application looks much like building a traditional Windows application. Windows Azure also provides Visual Studio 2008 project templates for creating Web roles, Worker roles, and applications that combine the two. One obvious difference, however, is that Windows Azure applications don&amp;rsquo;t run locally. This difference has the potential to make development more challenging. To mitigate this, Microsoft provides the development fabric, a version of the Windows Azure environment that runs on a developer&amp;rsquo;s machine.&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;The development fabric runs on a single machine running either Windows Server 2008 or Windows Vista. It emulates the functionality of Windows Azure in the cloud, complete with Web roles, Worker roles, and all three Windows Azure storage options. A developer can build a Windows Azure application, deploy it to the development fabric, and run it in much the same way as with the real thing. (In fact, it&amp;rsquo;s entirely possible to create a Windows Azure application without ever using Windows Azure in the cloud.) Once the application has been developed and tested locally, the developer can upload the code and its configuration file (described below) via the Windows Azure portal, then run it. &lt;br&gt;&lt;br&gt;&lt;b&gt;Service Definition &lt;/b&gt;&lt;br&gt;&lt;div class=&quot;MTPS_CollapsibleSection&quot;&gt;  The shape of a service is determined by the service definition file. The service definition file indicates whether a service implements a web role, a worker role, or both types. For a web role, the service definition file specifies whether it exposes an HTTP endpoint or an HTTPS endpoint, or both. It also may establish configuration parameters for the service and define a local storage resource for caching purposes.&lt;br&gt;&lt;br&gt;The service definition can&amp;#39;t be changed while the service is running in Windows Azure. To change the shape of a service, you must republish the service. The service definition file has a default extension of .csdef. It is packaged with the role binaries when the service is packaged for publication. The following diagram shows the possible shapes for a service, as determined by the service definition file.&lt;br&gt;&lt;br&gt;&lt;div&gt;  &lt;b&gt;The possible shapes for a service, as determined by the service definition file&lt;/b&gt;&lt;br&gt; &lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;MTPS_CollapsibleRegion&quot;&gt;  &lt;div class=&quot;CollapseRegionLink&quot;&gt;  &lt;b&gt;Service Configuration &lt;/b&gt;&lt;/div&gt;  &lt;div class=&quot;MTPS_CollapsibleSection&quot;&gt;  The service configuration file sets values for the service that can be configured while the service is running in the fabric. The values you can specify in the service configuration file include the number of instances that you wish to deploy for each role, and the values for the configuration parameters that you established in the service definition file.&lt;br&gt;&lt;br&gt;The service configuration file has a default extension of .cscfg. The service configuration file is not packaged with the service, but is uploaded to the Windows Azure fabric as a separate file. You can upload a new service configuration file without republishing your service. The following diagram shows a published service running multiple instances of a web role and a worker role.&lt;br&gt;&lt;br&gt;&lt;div&gt;  &lt;b&gt;The published service running multiple instances of a web role and a worker role&lt;/b&gt;&lt;br&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Quick Start:&lt;/b&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;More Detailed Overview:&lt;/b&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;Direct &lt;a class=&quot;external&quot; href=&quot;http://www.azurepilot.comhttp://videos.visitmix.com/MIX09/T81M&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Download Link&lt;/a&gt; to the Video&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item></channel></rss>