New Windows Azure Tools (July 2009)

 Jul 21st, 2009 

 , , , ,

AzureLogoAfter releasing the pricing scheme and the business model, Microsoft announced a new set of tools for Windows Azure.

Windows Azure Tools for Microsoft Visual Studio extend Visual Studio 2008 and Visual Studio 2010 Beta 1 to enable the creation, building, debugging, running and packaging of scalable web applications and services on Windows Azure.

The most interesting feature is probably the support for multiple roles. Now one can deploy many web/worker roles.

What’s new in the Windows Azure SDK?

  • The Windows Azure SDK supports developing and deploying services containing multiple web and worker roles. A service must include at least one role, of either type, and may include zero or more web roles, and zero or more worker roles.
  • The new PowershellRole sample hosts the Powershell runtime within a Windows Azure role. It demonstrates a simple remote console web role as well as a worker role whose implementation is a Powershell script. The host also includes the CloudDrive sample snap-in to provide access to Windows Azure Storage from script.

What’s new in Windows Azure Tools for Visual Studio

  • New project creation dialog
  • Support for developing and deploying services containing multiple web and worker roles. A service may contain zero or more web roles and zero or more worker roles with a minimum of one role of either type.
  • Ability to associate any ASP.NET Web Application project in a Cloud Service solution as a Web Role
  • Support for building Cloud Services from TFS Build
  • Enhanced robustness and stability

The new CTP Release can be downloaded from this link.

Azure Pricing Revealed

 Jul 14th, 2009 

 , , ,

Today, at PDC, Microsoft announced the pricing for Windows Azure, SQL Services and .NET Services. The business model is the one described in the table below:

Windows AzureSQL Azure.NET Services
Compute: $0.12/hourWeb Edition (up to 1 GB relational database): $9.99Messages @ $0.15/100K message operations , including Service Bus messages and Access Control tokens
Storage: $0.15/GB storedBusiness Edition (up to 10 GB relational database): $99.99
Storage Transactions: $0.01/10K
Bandwidth across all three services will be charged at $0.10/GB in and $0.15/GB out

Windows Azure compute hours are charged only for when your application is deployed so while developing and testing your application you may want to remove the compute instances that are not being used to minimize compute hour billing. Windows Azure storage is metered in units of average daily amount of data stored (in GB) over a monthly period. Storage is also metered in terms of storage transactions used to add, update, read and delete storage data. These are billed at a rate of $0.01 for 10,000 (10k) transaction requests. Bandwidth is charged based on the total amount of data going in and out of the Windows Azure platform services via the internet in a given 30-day period.

Microsoft Partners receive an additional 5 percent promotional discount on Windows Azure compute, SQL Azure and .NET Services.

A more detailed description on the pricing model is available on the Windows Azure Blog.

Software + Services. A Modern Approach. Part 2

 May 18th, 2009 

 , , , ,

Part 2 – The idea

< Part 1 (Intro)

Contents:

  1. A little more Live Mesh (CTP)
  2. The Actors
  3. The Modern Approach

1. A little more Live Mesh (CTP)

Today, online and offline tend to be two different approaches for building software. Most software companies offer either online or offline versions of their software.

If they somehow offer both then mostly sure one is a limited (reduced functionality) version of the other. Moreover companies tend to create a gap between the time when the offline and the online version gets updated. You always hear thing like “the online version does not yet support feature X that is available in the desktop version. Will be available soon”. The bad thing is the soon might mean a couple of months.

Creating software that works the same way both online and offline is not a new idea but until not it would require a lot of overhead. There was the need to simulate either the offline environment online or the reverse.

Now, with Live Mesh, the online environment is simulated on the local machine with no overhead for the developer. The guys from Microsoft resolved this problem and they’ve simplified our lives.

There are some aspects that need to be clarified as pointed in Part 1 about online services and applications:

  • The user experience: this problems was somehow resolved by enabling applications to be based on Silverlight. This technology enables web applications to deliver an improved experience compared to the classical web apps. It is client-side technology.
  • The need of permanent connectivity: just like smart clients, Mesh Enabled Applications can run with no network connectivity, persist offline what needs to be processed online and continue the process when connectivity is available. In other words what can be done offline is done anytime and if Internet access is required the task is queued.

2. The Actors

Lets consider a company named InvoiceGuys which offers a service called InvoiceService that exposes functionality for processing invoices. Anyone can subscribe the this service – for the sake of simplicity we’ll just ignore authorization and authentication; just don’t do this in real life!

Read the rest of this post »

Software + Services. A Modern Approach. Part 1

 Apr 20th, 2009 

 , , , ,

Part 1 – Intro

Part 2 (The Idea) >

Contents:

  1. What is Software + Services
  2. Azure Services Platform
  3. Live Mesh

1. What is Software + Services

Over the past decade, the world we live in has been transformed by the Web. More and more people gain Internet access, services become more accessible  and the experience is improving. There are a lot of advantages of using Internet services:

  • Low hardware requirements: services use the resources provided by the vendor and not the local ones. We only need devices capable of displaying the information that the service is sending. Most of the time no processing is done locally.
  • Device independence: a service can be accessed from any device connected the Internet. It does not require special privileges on the local machine and no installation is required.
  • No maintenance: services are maintained and updated by the service provider, the client must do nothing to configure it. The service is an out of the box solution.
  • Flexibility: we can change the service provider whenever we want. This capability creates new opportunities for businesses that can dynamically swap services and choose the one that matches their needs.

However there are still some limitations for which running local software is preferred instead of a web application/service:

  • User experience: browsers are not yet capable of delivering the same user experience as a local running application.
  • Privacy: there are situations when a company chooses the keep all its data within its controlled/trusted borders. There are many privacy concerns when using 3rd party services because there is no control over the security and must rely on the provider’s security. Some complex federation problems might occur.
  • Offline experience: even though the Internet is now available most of the time there are still situation when network access is not available (maybe some technical problems) and the service  cannot be accessed.

What do we do when we want to power of local running applications and the flexibility and ease-of-use of the Internet services? Simple: we take the best part of each, create an architecture that combines them and use it for application that work both online and offline. Ray Ozzie (Microsoft Chief Software Architect) mentioned that “when you combine the ever-growing power of devices and the increasing ubiquity of the Web, you come up with a sum that is greater than its parts. … Software-plus-Services is the next logical step in the evolution of computing.  It represents an industry shift toward a design approach that is neither exclusively software-centric nor browser-centric” [1].

Read the rest of this post »

New Windows Azure Features (March 2009)

 Mar 19th, 2009 

 , , , , ,

Now that Mix09 is talking place we have a lot of nice announcements from Microsoft. I want to focus this post on the new Azure features, SDK and Visual Studio Tools that have been released a few hours ago.

For those who don’t know, Windows Azure is the Microsoft’s cloud operating system. It is an operating system that runs in the cloud and only in MS’ data centers so don’t bother asking how can you install this new OS because there is no way you can do it. If you want more details about cloud computing and Windows Azure join my live presentation on GeekMeet Brasov on March 28 (it’s a presentation in Romanian).

Let’s see what new goodies are in the March release:

First of all there is support for FastCGI which allows developers to deploy and run web applications written with 3rd party programming languages such as PHP.  This provides developers using non-Microsoft languages the ability to take advantage of scalability on Windows Azure. Also the IIS URL Rewrite Module has been enabled.  URL rewriting, a feature often used by FastCGI developers, enables the creation of URLs that are easier for users to remember and easier for search engines to find. The Visual Studio Tools for Windows Azure includes a FastCGI Web Role that creates a Web Application project tailored to make it easier to configure, run and package a FastCGI application.

Geo-location provides developers with the ability to specify a location for their applications and data to build responsive services with lower network latency as well as the capability to meet location-based regulatory and legal requirements. Until now there were Azure data centers only in the north western United States but now you can also choose the data centers in south. Some officials from Microsoft said that “Going forward, we plan on expanding our presence to more locations, especially outside the U.S”.

One of the great things about Windows Azure is that it handles the deployment, monitoring, and management of your service so that you have more time to focus on the business logic.  Until recently, realizing these benefits meant your code had to run under Windows Azure partial trust, a code access security (CAS) level which locks down certain .NET functionality. Windows Azure now offers the option of running the code in your Web and worker roles under full trust.  This unlocks a number of compelling scenarios such as:

  • Invoking non-.NET Code: Many developers have existing investments in native code or may choose to use native code for some specialized tasks.  .NET full trust makes it possible to use native code via spawning processes or Platform Invoke (P/Invoke).
  • Using .NET Libraries that Require Full Trust: Certain .NET libraries, including libraries in the .NET Services SDK, require full trust and can now be used in Windows Azure.
  • Inter-process Communication via Named Pipes: If you application spawns processes, you can communicate among them via named pipes.

However you must be aware that the Full Trust is not really Full Trust :) There are some obvious limitations like writing to registry and writing to the file system. These limitation might not be that obvious when programming against the local development environment.

Least but not last, even though it was not officially announced, I think there are plenty of bug fixes and other nice things.

The SDK and Tools for Visual Studio can be downloaded from the following links:

Windows Azure Tools for Microsoft Visual Studio (March 2009 CTP) – now include the SDK
Windows Azure Software Development Kit (March 2009 CTP) – if you don’t need the Visual Studio Tools

Learn About Azure Services Platform

 Feb 12th, 2009 

 , , , , , , ,

Microsoft provides two ways of learning about Azure Services:

1. Azure Services Traning Kit

The Azure Services Training Kit which includes a comprehensive set of technical content including hands-on labs, presentations, and demos that are designed to help you learn how to use the Azure Services Platform. The February release includes the following updates:

  • 19 demo scripts that walkthrough several of the services
  • 10 presentations covering the entire Azure Services Platform
  • 3 additional hands-on labs for Live Services’

The technical content covers services including: Windows Azure, .NET Services, SQL Services, and Live Services.

It can be downloaded from here.

2. “How Do I?” videos for Azure Services Platform

For Windows Azure:

How Do I: Get Started Developing on Windows Azure?If you’re a developer and you’re new to Windows Azure, start here! You’ll see what you need to download and install, and how to create a simple “Hello World” Windows Azure application.
How Do I: Deploy a Windows Azure Application?In this brief screencast you’ll see what it takes to move your application into the cloud – you’ll see how to request and register a token, how to upload your Windows Azure application and how to move it between staging and production in the cloud.
How Do I: Store Blobs in Windows Azure Storage?In this brief screencast, learn how to leverage Windows Azure storage to store data as blobs. You’ll learn about blob storage, containers and the API that makes it easy to manage everything from managed code.
How Do I: Leverage Queues in Windows Azure?In this screencast, learn how to use queues to facilitate communication between Web and Worker roles in Windows Azure.
Debugging Tips for Windows Azure ApplicationsThe Windows Azure SDK provides a development fabric that provides a “cloud on your desktop.” In this screencast, learn how to debug your Windows Azure applications in this environment.

For .NET Services:

How Do I: Get Started with .NET Services?.NET Services are a set of highly scalable building blocks for programming in the cloud. In this brief screencast, you’ll learn about the registration process, the SDK and the built-in samples – everything you need to know in order to get started.
How Do I: Harness the Microsoft .NET Service Bus?The .NET Service Bus makes it easy to access your Web services no matter where they are. In this brief screencast, you’ll see how to take a basic Windows Communication Foundation (WCF) service and expose it to the Internet with the .NET Service Bus.

For Live Services:

How Do I: Get Started with the Live Framework?If you are looking to get started developing with the Live Framework, this is the place to start! In this screencast you’ll learn how to get a Live Services token and what you need to download in order to start writing Live Framework applications.
How Do I: Use the Microsoft Live Framework Resource Browser?The Live Framework Resource Model is a simple, straightforward information model based on entities, collections and relationships. In this brief screencast you’ll learn how to navigate the relationships between entities by using the Live Framework Resource Browser, which is a tool that ships with the Live Framework SDK.

Windows Azure Application Architecture

 Jan 10th, 2009 

 , , ,

Windows® Azure is a cloud services operating system that serves as the development, service hosting and service management environment for the Azure Services Platform. Windows Azure provides developers with on-demand compute and storage to host, scale, and manage Web applications on the Internet through Microsoft® data centers.

A service hosted in the Windows Azure fabric implements one or more roles. A role is a scalable component built with managed code. A service may run multiple instances of a role. Within the Windows Azure fabric, running instances of a role are replicated across multiple physical machines to implement all or part of the functionality of a service. Each role runs in a virtual machine that has following predictable resources allocation: 64bit Windows Server 2008 OS, 1.5-1.7 64 bit CPU, 1.7 GB RAM memory, 100 MB/s network and 250 GB storage space (only 50 available in the CTP). So basically the developer creates the application as being used by one user and, in the cloud, many instances of it are created to support multiple clients.

The Windows Azure fabric currently supports two types of roles:

  • Web Role is an application accessible through HTTP and/or HTTPS endpoints. A web role is hosted in an environment designed to support a subset of ASP.NET and Windows Communication Foundation technologies.
  • A Worker Role is a background processing application. A worker role may communicate with storage services and with other Internet-based services. It does not expose any external endpoints. A worker role can read requests from a queue defined in the Queue storage service.

Because workers do not have some public endpoints some architectural considerations must be taken. How can a worker process external data? How web roles and workers exchange information? Why do we need workers?

Web roles can send/receive data to/from workers using the Storage Services. Storage Services include Blob, Queues and Tables.

  • Blobs are sets of binary data; they are similar with files from your local windows storage. Blobs are organized in catalogs that are similar to folders.
  • Queues are just message queues. They are FIFO (First In First Out) data structures that can hold messages up to 8kb each.
  • Tables provide structured storage in the form of tables. However this is not a relational database system! They are just some tables that hold data with no relation between them.

Of course, web role or worker role can make any external HTTP/HTTPS request. Also blobs, queues and tables can be accessed from outside the cloud through HTTP(S) requests. I will focus today on the internal could application architecture and not on the outside requests.

architecture

Read the rest of this post »

Microsoft Patent no. 20080319910

 Dec 31st, 2008 

 , , ,

Metered Pay-As-You-Go Computing Experience

A computer with scalable performance level components and selectable software and service options has a user interface that allows individual performance levels to be selected. The scalable performance level components may include a processor, memory, graphics controller, etc. Software and services may include word processing, email, browsing, database access, etc. To support a pay-per-use business model, each selectable item may have a cost associated with it, allowing a user to pay for the services actually selected and that presumably correspond to the task or tasks being performed. An administrator may use a similar user interface to set performance levels for each computer in a network, allowing performance and cost to be set according to a user’s requirements.

Microsoft published on Christmas Day a new patent that changes out current vision about computer and software prices. They propose a “Pay-As-You-Go” method meaning that the user will (probably) get a free PC and will pay for its usage.

As wrote above in the patent’s abstract, Microsoft wants “a computer with scalable performance level components and selectable software and service options has a user interface that allows individual performance levels to be selected”. So the user will be able to choose low Read the rest of this post »