Welcome to MSDN Blogs Sign in | Join | Help

Changes to Alerts, Analytics, and Windows Live ID Integration

Today we’re rolling out a set of changes in the Azure Services Developer Portal to alerts, analytics, and Windows Live ID integration.  The following changes will go live tonight:

Alerts

A number of CTP participants told us they wanted greater opportunities to customize the way their application sends critical alerts.  To that end, we’re in the process of building a new platform for alerts that will give developers the ability to choose how alerts are sent.  The current alerting system based on Windows Live Alerts will go offline today and will be replaced by this new pluggable platform this summer.

Analytics

When we announced our first preview last October, we wanted to make sure that CTP participants could get a feel for their usage, so we provided the simple analytics you’ve seen displayed in the web portal to date.  As we move towards commercial availability, we’re continuing to refine this metering.  The analytics view in the web portal will be removed today, and it will be replaced with the new metering system this summer.

Windows Live ID Integration

Until today, when you created a Windows Azure hosted service, you also saw an Application ID and secret key that you could use to perform Live ID authentication.  We’re now decoupling the two, so you’ll see a separate Live Services project in the Azure Services Developer Portal that contains the same information.  For new hosted services, if you want to use Live ID authentication, you’ll need to create a separate “Live Services: Existing APIs” project and configure it to point to your <app name>.cloudapp.net domain.  This change makes the process of using Live ID authentication with a Windows Azure application the same as for any other application.

Posted by WindowsAzure | 1 Comments

New Windows Azure Storage Features – May 2009

Today we released a new set of features for Windows Azure Storage. The main features in this release are:

  • Entity Group Transactions for Windows Azure Table – It is now possible to perform a transaction across entities stored within the same table and same partition (i.e., entities having the same partition key value). An application can now atomically perform multiple Create/Update/Delete operations across multiple entities in a single batch request to the storage system, as long as the entities in the batch operation have the same partition key value and are in the same table.   This feature allows applications to now (a) perform batch inserts, updates and deletes (up to 100 entities per batch operation) in a single request to the system, and (b) perform atomic operations across multiple entities.
  • Copy Blob for Windows Azure Blob – We now allow applications to copy a blob from a source blob to a destination blob within the same storage account.   This copies the whole blob, including the blob metadata, properties, and committed block list.   This enables applications to (a) create backup copies of blobs, (b) move blobs between containers and (c) rename blobs (copy to new name followed by delete of the old name).
  • Get Block List for Windows Azure Blob – We have added the ability to GetBlockList to retrieve the uncommitted block list, as well as the committed block list. GetBlockList provides the ability to retrieve the list of blocks that have been uploaded as part of a blob.  There are two block lists maintained for a blob, and this function allows retrieval of either of the two or both:
    • Committed Block List - This is the list of blocks that have been successfully committed as part of a PutBlockList for a given blob. In doing a GetBlob, this is the list of blocks that constitute the readable version of the blob.
    • Uncommitted Block List - This is the list of blocks that have been uploaded using PutBlock for a blob since the last successful PutBlob or PutBlockList for the blob.  These blocks represent the temporary/uncommitted blocks that have not yet been committed.   One benefit of allowing applications to retrieve this list is that it helps the client more easily deal with continuation of upload if the client crashes. For instance, if a client that is uploading blocks crashes, when it restarts it can retrieve the list of uncommitted blocks that have already been uploaded, and continue uploading where it left off.
  • API Versioning - For all of the Windows Azure Storage solutions we have introduced a new HTTP header called “x-ms-version”.     All changes to the storage APIs will be versioned by this header.  This allows prior versions of commands executed against the storage system to continue to work, as we extend the capabilities of the existing commands and introduce new commands.  The new version introduced with this release is “x-ms-version: 2009-04-14”.   We still support all of the PDC 2008 CTP commands without the version header, so everything will continue to work for existing storage customers.   In order to use the new functionality described above (Entity Group Transactions, Copy Blob, and Get Block List), the version header must be used as part of the REST request.

    Although it’s not currently required for older operations, we recommend that you begin including the x-ms-version header on all calls against non-public resources. Once Windows Azure is released commercially, versioning will be required on all operations, with the exception of anonymous operations against the Blob service.

In addition to the above, there are two additional changes to the semantics of Windows Azure Tables:

  • Property Names – We now support C# Unicode characters for the property names. With this change we no longer support “-“, since it is not supported by ADO.NET data services. This is a versioned change, so the application must specify “x-ms-version: 2009-04-14” header to start using the new characters in the property name, and with this version “-“ is no longer supported as part of the property name.
  • PartitionKey and RowKey sizes – The PartitionKey and RowKey have a limit of 1K of characters each.   Originally, we had documented that these could be up to 64KB, but there was a bug in the CTP release that actually limited these to less than 256 characters. With this release the limit is now 1K characters each.

Finally, we want to give a heads up to a future change for the max timeout allowed for some of the Windows Azure Storage operations. If the request specifies a timeout greater than this, we ignore the request timeout and instead use the max timeout specified below. If the request specifies a shorter timeout, we use the request’s timeout. Listed below are the current max timeouts that we support, along with the future change for List and Query operations.

  • All Storage Timeouts – The following are the maximum timeouts allowed for Windows Azure Storage operations:
    • GetBlob – A get bob request is allowed to take up to 2 minutes per MByte transferred, before the server side times out.
    • PutBlob – A put bob request is allowed to take up to 10 minutes per MByte transferred, before the server side times out.
    • PutBlockList and GetBlockList – These have a max timeout of 60 seconds.
    • Table Query and All List Operations – Current max timeout is 60 seconds. In the future this will be changed to 30 seconds.
    • All other commands in Blobs, Tables and Queues have a max timeout of 30 seconds.

Note that the above features for this new release are currently only available via the Windows Azure Storage REST interface and ADO.NET client library. They are not yet part of the Windows Azure SDK or the sample storage client library that ships with the SDK. The reason for this is that our goal is to have an agile release process, and release the features as soon as the REST interfaces are ready, and then a future SDK release will include support for these changes.

For more information, details about these new features can be found in the MSDN documentation here:
http://msdn.microsoft.com/en-us/library/dd179355.aspx

In addition, May 2009 versions of the Windows Azure Storage Table and Blob White papers, with information about these features, will be pushed here soon:
http://msdn.microsoft.com/en-us/azure/cc994380.aspx

Steve Marx will have some examples on using the above new functionality on his blog soon:
http://blog.smarx.com/

As always, we appreciate any feedback you might have.

Brad Calder
Windows Azure Storage

Posted by WindowsAzure | 0 Comments

May CTP of Windows Azure SDK Released, Including Visual Studio 2010 Support

Today we released new versions of the Windows Azure SDK and the Windows Azure Tools for Visual Studio.  Both are available now on http://dev.windowsazure.com.  The major news is support for the recently released Visual Studio 2010 Beta 1.

What’s new in Windows Azure Tools for Visual Studio?

Windows Azure Tools for Visual Studio now supports using Visual Studio 2010 Beta 1 to develop scalable web applications and services deployed to Windows Azure. The update is now available at http://dev.windowsazure.com.  It also installs the May CTP of the Windows Azure SDK. The Windows Azure Tools CTP specifically includes:

  • Microsoft Visual Studio 2010 Beta 1 support
  • Update for Visual Studio 2008 support
  • Improved integration with the Development Fabric and Storage services to improve the reliability of debug and run of Cloud Services from Visual Studio
  • Enhanced robustness and stability

What’s new in Windows Azure SDK?

Developers will be able to take advantage of the Windows Azure CTP improvements via the Windows Azure SDK update which is now available for download at http://dev.windowsazure.com .  The SDK update includes:

  • Enhanced robustness and stability
  • Improved Visual Studio integration with Development Fabric and Development Storage
Posted by WindowsAzure | 1 Comments

CTP of the PHP SDK for Windows Azure Released

Earlier this week, the initial CTP of the “PHP SDK for Windows Azure” was released on Codeplex.

You can read more about this project on the Interoperability @ Microsoft blog.  From the blog post:

The PHP SDK for Windows Azure focuses on REST and provides the following core features:

  • PHP classes for Windows Azure blobs, tables & queues
  • Helper Classes for HTTP transport, AuthN/AuthZ, REST & error management
  • Manageability, instrumentation & logging support

The current CTP release supports accessing Windows Azure blob storage from PHP.

Posted by WindowsAzure | 0 Comments

Windows Azure Geo-location Live

At MIX ‘09, we announced the upcoming support for geo-location, and we’re pleased to announce that last night this functionality went live.

Choosing a Location

The first thing you’ll notice when creating a new storage account or hosted service is that there’s a new “affinity group” section.  The simplest thing you can do here is choose a region (currently limited to “USA – Anywhere,” “USA – Northwest,” and “USA – Southwest”) where you’d like your storage or hosted service to run.

image

Using Affinity Groups

One of the reasons to choose where your storage accounts and hosted services are running is to make sure that the two are very close to each other, to make sure you have high bandwidth and low latency between your running application and the data it depends on.  Using our new geo-location functionality, you can now specify an affinity between different hosted services and storage accounts.  This is better than just choosing the same region, because it tells Windows Azure that you want everything in this affinity group to be as close as possible.  We’ll use that information to make decisions about exactly how to lay out applications and data in the data center.

To use affinity groups, just choose the second option in the new affinity group section.  In this screenshot, you can see I’ve chosen to create a new affinity group called “geo test affinity” and locate that in the “USA – Southwest” region.

image

Now when I create a storage account to use with my new application, I can choose to use that existing affinity group, as you can see in the screenshot below.

image

Try it Out!

For a full description of the functionality we’ve just rolled out, please go back and read the original announcement from MIX ‘09.  Then please try out the new functionality, and as always, we’d love to hear your feedback.

If you haven’t yet signed up for the Windows Azure CTP, now’s a great time!  Head over to http://dev.windowsazure.com and click the register button.  You should receive your invitation token by email within about 24 hours.

Posted by WindowsAzure | 2 Comments

New Azure Training Kit Available

Today we released an updated version of the Azure Services Training Kit.   The first Azure Services Training Kit was released during the week of PDC and it contained all of the PDC hands-on labs.   Since then the team has been creating new content covering new features in the platform.

The Azure Services Training Kit April update now includes the following content covering Windows Azure, .NET Services, SQL Services, and Live Services:

  • 11 hands-on labs – including new hands-on labs for PHP and Native Code on Windows Azure.
  • 18 demo scripts – These demo scripts are designed to provide detailed walkthroughs of key features so that someone can easily give a demo of a service
  • 9 presentations – the presentations used for our 3 day training workshops including speaker notes

 

The training kit is available as an installable package on the Microsoft Download Center. You can download it from http://go.microsoft.com/fwlink/?LinkID=130354

Application Accessibility Restored

Today a number of applications running in Windows Azure were unreachable for a period of time.  The earliest occurrence took place at 1:15pm PDT today (April 2nd), our team restored affected applications throughout the day, and all applications were accessible by 9:00pm PDT.  The storage service was unaffected.  We communicated throughout the afternoon on this thread on the Windows Azure forum.

What Happened?

One of the responsibilities of the Fabric Controller is to monitor the health and status of servers and applications in the cloud and automatically restore functionality when applications are unhealthy.  To do this, it regularly communicates with servers to request their status.  This afternoon, a number of servers stopped responding to the Fabric Controller.  The Fabric Controller immediately marked those server as malfunctioning, stopped routing traffic to them, and started migrating affected application instances to new servers.  A bug in the Fabric Controller prevented it from moving those instances as quickly as it was designed to do.   An application with all its instances on affected servers became unreachable during this period.

What are We Doing in the Future?

In addition to fixing the particular bug mentioned above, we’re continuing our ongoing work to improve our detection and response algorithms in the Fabric Controller, including giving the Fabric Controller a more granular view of the health of applications.

For those who are wondering, though the underlying cause of the March 13th malfunction was very different, the same improvements we're making in detection and response in the Fabric Controller apply.

Posted by WindowsAzure | 0 Comments

Windows Azure Delivers New CTP Capabilities

Since we announced our Community Technology Preview (CTP) in November our team has gathered input from customers all over the world in every major industry.  The feedback is very helpful in this early stage of the CTP as we prioritize new features. 

Today leaders from our engineering team reviewed several new capabilities with attendees at MIX that continue to deliver on our commitment to providing a comprehensive and flexible cloud platform.  Developers can begin taking advantage of:

FastCGI 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. 

NET Full Trust  provides developers with a level of flexibility in Windows Azure that removes limitations on .NET Libraries which require full trust (including .NET Services) .NET Full Trust, via spawning process and p/invoke, also allows developers to leverage existing investments in native code or legacy components that they will now be able to invoke on Windows Azure.

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.

You can read more details on these features written by the program managers who led these efforts. 

Read more about FastCGI and .NET Full Trust from Mohit Srivastava

Read more about Geo-location from Sriram Krishnan

Using 3rd Party Programming Languages via FastCGI

One of our goals for MIX was to give our developers more flexibility while ensuring they still benefit from the unique time-saving deployment, monitoring, and management features of Windows Azure.  One way in which we went about this was to enable IIS FastCGI module in the Web role.  This module enables developers to deploy and run applications written with 3rd party programming languages such as PHP.

How to Get Started

1) As with the .NET full trust example, the first step is to set the enableNativeCodeExecution attribute to true in your Service Definition file:

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="MyService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

  <WebRole name="WebRole" enableNativeCodeExecution="true">

    <InputEndpoints>

      <InputEndpoint name="HttpIn" protocol="http" port="80" />

    </InputEndpoints>

  </WebRole>

</ServiceDefinition>

2) Install the following required fix for FastCGI in the Windows Azure Development Fabric: http://support.microsoft.com/kb/967131.

3) To enable FastCGI, include a Web.roleconfig file in the root of your project, telling us which FastCGI application you will be using.  For example, for PHP:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <system.webServer>

    <fastCgi>

      <application fullPath="%RoleRoot%\php\php-cgi.exe" />

    </fastCgi>

  </system.webServer>

</configuration>

Note: The FastCGI application must be xcopy-deployable and contained in your project.  In this case, it is in the “php” subdirectory and specified via the special %RoleRoot% environment variable.  An xcopy-deployable version of PHP for Windows can be downloaded from http://php.net.

4) Finally, modify your Web.config to configure your handlers.  This tells us which paths (e.g. *.php) map to the FastCGI application:

<configuration>

  <system.webServer>

    <handlers>

      <add name="PHP via FastCGI"

           path="*.php"

           verb="*"

           modules="FastCgiModule"

           scriptProcessor="%RoleRoot%\php\php-cgi.exe"

           resourceType="Unspecified" />

    </handlers>
  </
system.webServer>

</configuration>

Putting It All Together

Now, you should be able to invoke your FastCGI application.  Here is an example of a multi-instance PHP-based application that has been one-click deployed to the Development Fabric (a simulation of the cloud environment).  It has been configured to use three Web role instances via a simple modification to the Service Configuration file:

 

As a bonus...

  1. We have also enabled the IIS URL Rewrite Module.  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.
  2. 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.

For more detail, please refer to the documentation and FastCGI sample in the Windows Azure SDK.  Enjoy!

Hosting Roles Under .NET Full Trust

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.

Note:  While .NET full trust lifts CAS limitations, Windows Azure applications run with restricted “User” privileges in the cloud.  Accordingly, certain operations such as modifying the registry and writing to the system directory are not possible at this time (even though they may succeed in your local development environment).

How to Get Started

To enable full trust, simply add the enableNativeCodeExecution attribute to your role in the Service Definition file and set the attribute value to true:

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="MyService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

  <WebRole name="WebRole" enableNativeCodeExecution="true">

    <InputEndpoints>

      <InputEndpoint name="HttpIn" protocol="http" port="80" />

    </InputEndpoints>

  </WebRole>

</ServiceDefinition>

For more detail, please refer to the documentation and the FullTrust sample in the Windows Azure SDK.  Enjoy!

Mohit Srivastava
Program Manager

Posted by WindowsAzure | 2 Comments

Geo Location Enables Developers To Choose Data Centers and Group Applications & Storage

At MIX 09, we are announcing that we’ll be launching a set of ‘geo’-related features. We’ll be rolling out the features to all our users very soon. In Microsoft-speak, we are ‘super-excited’ about this since we can finally unveil in public what we’ve been working on for the past several months.  Before I talk about what exactly we are releasing, I wanted to explain *why* we’re doing this.

Why are we doing this?

  • Performance — We heard loud and clear that our users wanted to have more choice on where the data is placed so that they could get it as close to their end users as possible and reduce network latency. We also saw how important it was for us to ensure that code and data are as close together as possible (more on that later).
  • Legal/regulatory reasons — Several users had requirements on where they can place their code and data and where they cannot.
  • Business continuity/backup — Users wanted locations geographically spread. You can now make copies of your data across locations so in case of a natural disaster or if the Cloverfield monster came and stomped on one of our datacenters, your data would be safe

What are we announcing ?

We are announcing a few major things.

  • First, we are now present in two geographic locations rather than one. Previously, we had a presence only in north western United States and we now have a presence in the south. Going forward, we plan on expanding our presence to more locations, especially outside the U.S
  • Users will have the ability to pick where they want to host their sevices and/or their data between these two geo locations (and more in the future). For example, when you create a storage account, you can choose where to host it based on your business needs and the storage systems will do some magic behind the covers to route requests to your data. The same holds true for creating a hosted service account and running code. Both geo-locations support all features of Windows Azure. If you don’t have specific requirements on where you want your code/data, you can choose ‘US- Any’ and we’ll pick a location for you.
  • User can create ‘affinity groups’ to put their storage account and/or hosted services in. This goes to what I said about putting code and data as close to each other as possible. Accounts inside an affinity group will be dealt with as one unit and placed together for connectivity. For example, if you create an affinity group placed in North Western United States and place multiple storage accounts and hosted services in there, we’ll allocate these together in that geographical region, so that all of the accounts will be close together from a network perspective

We plan on expanding our presence to more than just two geo-locations. We’d love to hear your feedback on what we’re shipping and what you would like to see. You can leave a comment or contact us through the link on the side. We are pretty excited about what we are shipping. Please do try our features out once we’ve finished rolling them out and tell us what you think!

Sriram Krishnan
Program Manager

The Windows Azure Malfunction This Weekend

First things first: we're sorry.  As a result of a malfunction in Windows Azure, many participants in our Community Technology Preview (CTP) experienced degraded service or downtime.  Windows Azure storage was unaffected.

In the rest of this post, I'd like to explain what went wrong, who was affected, and what corrections we're making.

What Happened?

During a routine operating system upgrade on Friday (March 13th), the deployment service within Windows Azure began to slow down due to networking issues.  This caused a large number of servers to time out and fail.

Once these servers failed, our monitoring system alerted the team.  At the same time, the Fabric Controller automatically initiated steps to recover affected applications by moving them to different servers.  The Fabric Controller is designed to be very cautious about taking broad recovery steps, so it began recovery a few applications at a time.  Because this serial process was taking much too long, we decided to pursue a parallel update process, which successfully restored all applications.

What Was Affected?

Any application running only a single instance went down when its server went down.  Very few applications running multiple instances went down, although some were degraded due to one instance being down.

In addition, the ability to perform management tasks from the web portal appeared unavailable for many applications due to the Fabric Controller being backed up with work during the serialized recovery process.

How Will We Prevent This in the Future?

We have learned a lot from this experience.  We are addressing the network issues and we will be refining and tuning our recovery algorithm to ensure that it can handle malfunctions quickly and gracefully.

For continued availability during upgrades, we recommend that application owners deploy their application with multiple instances of each role.  We'll make two the default in our project templates and samples.  We will not count the second instance against quota limits, so CTP participants can feel comfortable running two instances of each application role.

Posted by WindowsAzure | 1 Comments

SQL Data Services announces plans to accelerate core relational database features

Developers using the Windows Azure CTP have been asking about the roadmap for SQL Data Services.  Today the team detailed some important announcements most importantly they will deliver full relational database capabilities delivered as a service. 

Also note that SDS will stop supporting the current ACE (Authority, Container, Entity) data model and developer experience since Windows Azure storage has a similar data model.  Windows Azure tables provide structured storage as a set of entities, which contain a set of properties.  An application can manipulate the entities and query over any of the properties stored in a Table.  More information on Windows Azure tables here.

 Read the details of the SDS announcement at the team blog.

Posted by WindowsAzure | 0 Comments

Moving to Coordinated Universal Time (UTC) starting this Sunday

As a follow-up to our earlier post "Moving to Coordinated Universal Time (UTC)", I'd like to announce that we've locked down on a timeline.  We'll begin the migration to UTC starting this Sunday, March 8th, at 10:00am GMT.

For details about the change and its potential impact, please see the original post.

Posted by WindowsAzure | 0 Comments

Moving to Coordinated Universal Time (UTC)

Currently, the time zone within Windows Azure is Pacific Standard Time (PST).  Soon, we’ll be migrating to Coordinated Universal Time (UTC).  This is potentially a breaking change for applications which rely on local time.

When will we make the change?

UPDATE [3/6/2009]: We'll be making this change starting Sunday, March 8th, at 10:00am GMT.  Thanks to all who gave us feedback on this plan.

We’d like to make this change soon, within the next few weeks.  Feedback from the community and the results of our internal testing will help us choose exactly when.  We'll post again to the blog and to the forum when the exact timing has been determined.

Why are we doing this?

Windows Azure is a global service.  To ensure that applications behave the same way regardless of their physical location, it’s important that Windows Azure have a consistent time zone across all geographies.  UTC is a natural choice given our global customer base, and UTC is not subject to Daylight Saving Time (and the associated risk of bugs).

What’s the potential impact to you?

If your application running in Windows Azure relies on local time, you will be impacted by the migration to UTC.  Here are a few examples of potential issues:

  • Gaps may occur in event logs if local timestamps are used.
  • User interfaces that depend on local timestamps may show different results.
  • Local timestamps stored by your application may be interpreted differently after the changeover.

Many applications have already been designed to rely only on UTC time.  These applications should be unaffected.

Questions or concerns?

Please don’t hesitate to contact us on the Windows Azure blog or discuss this on the Windows Azure forum.

Posted by WindowsAzure | 5 Comments
Filed under:
More Posts Next page »
 
Page view tracker