Strive for excellence through continuous improvements

Windows Azure - Cloud computing blog

Posts
  • Strive for excellence through continuous improvements

    SQL Azure prices have been reduced by up to 75%

    • 0 Comments

    The SQL Azure team has announced a new drop in the SQL Azure Prices.

    The new prices have been significantly reduced, for instance a SQL Azure database
    of 25GB used to cost $299.97 per month, and with the new price schema it will cost $75.99.

    You can see all the details here: Announcing Reduced Pricing on SQL Azure and New 100MB Database Option

  • Strive for excellence through continuous improvements

    Web roles under IIS Classic pipeline mode for backward compatibility

    • 3 Comments

    If you have been involved in moving ASP.NET 2.0 Web applications to Windows Azure, you probably have faced some compatibility issues related with the IIS Pipeline mode used by default in a web role.

    Windows Azure by default uses integrated mode, but for the sake of simplicity, in some migration scenarios, you could also use Classic mode, that will give you the chance to keep your components as they are.

    In order to do that, follow the next steps:

    • You need to add a reference to the library Microsoft.Web.Administration.dll
    • You need to override the OnStart event and add the following code:

       

      Imports System

      Imports System.Collections.Generic

      Imports System.Linq

      Imports Microsoft.WindowsAzure

      Imports Microsoft.WindowsAzure.Diagnostics

      Imports Microsoft.WindowsAzure.ServiceRuntime

      Imports Microsoft.Web.Administration

       

      Public Class WebRole

      Inherits RoleEntryPoint

       

      Public Overrides Function OnStart() As Boolean

       

      'Configure Azure Tracing

      ConfigureTracing()

       

      'Configure Azure Pipeline

      SetClassicIISPipelineMode()

       

      Return MyBase.OnStart()

       

      End Function

      ''' <summary>

      ''' Set IIS Pipeline mode to Classic

      ''' Only use that method when the app needs backward compatibility

      ''' </summary>

      ''' <remarks></remarks>

      Private Sub SetClassicIISPipelineMode()

       

      Dim srvManager As New ServerManager()

       

      Try

      Trace.WriteLine("SetClassicIISPipelineMode starting...")

       

      Dim appSite = (From site In srvManager.Sites

      Where site.Name.Contains(RoleEnvironment.CurrentRoleInstance.Role.Name)).FirstOrDefault()

      If Not appSite Is Nothing Then

      Trace.WriteLine("AppSite reference retreived")

      Dim appPool = (From pool In srvManager.ApplicationPools

      Where pool.Name = appSite.Applications(0).ApplicationPoolName).FirstOrDefault()

      If (Not appPool Is Nothing) Then

      Trace.WriteLine("AppPool reference retreived. Changing mode...")

      appPool.ManagedPipelineMode = ManagedPipelineMode.Classic

      srvManager.CommitChanges()

      Trace.WriteLine("Changes Commited")

      End If

      Else

      Trace.WriteLine("Unable to get AppSite reference")

      End If

       

      Catch ex As Exception

      Trace.WriteLine("SetClassicIISPipelineMode Exception: " + ex.ToString())

      Finally

      srvManager.Dispose()

      End Try

      End Sub

       

       

      Private Sub ConfigureTracing()

      System.Diagnostics.Trace.Listeners.Add(New Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener())

      'The Config is Done using the diagnostics.wadcfg file

      End Sub

       

      End Class

     

    And that's it, after these changes, your application will run under IIS classic pipeline mode and you won't have to modify any of your components based on classic pipeline mode.

  • Strive for excellence through continuous improvements

    And again,a new way ahead of us, and now as Windows Azure TSP

    • 0 Comments

    I remember when I started to work with early CTPs of Windows Azure; I really thought that because of its unique functionalities and because Microsoft commitment to Cloud Computing, Windows Azure was going to be the most productive and cost effective platform very soon. And now we have a lot of enterprise customers using Windows Azure services, the rhythm of Windows Azure innovation is incredible fast, so that's why I have decided that it is time to be fully dedicated to Windows Azure. So After more than 4 years working as a Senior Consultant in Microsoft Consulting Services based in Spain, I have started my new role as Windows Azure Technical Sales Professional based in the UK.

    I really look forward to working with all of you; one of my objectives for this year is to help the community as much as possible, so stay tuned!!

     

  • Strive for excellence through continuous improvements

    SQL Azure at Tech-Ed 2010

    • 0 Comments

    Important announcements and updates about SQL Azure  have been made at Tech-Ed:

    For more details, have a look to the SQL Azure Team Blog :SQL Azure at TechEd 2010

  • Strive for excellence through continuous improvements

    Security Best Practices for Developing Windows Azure Applications

    • 0 Comments

    This is an interesting new whitepaper about Windows Azure security mechanisms as well as recommended patterns for building robust cloud applications based on Windows Azure.

    I would really recommend to spent some time to read it :

    Security Best Practices for Developing Windows Azure Applications

  • Strive for excellence through continuous improvements

    Tribune Transforms Business for Heightened Relevance by Embracing Cloud Computing

    • 0 Comments

    Tribune Transforms Business for Heightened Relevance by Embracing Cloud Computing

    This case is a great example of how Windows Azure can help to redefine IT services as Business services.The agility provided by Windows Azure allows Tribune to dynamically  grow their IT capabilities without any limit :

    In Steve’s own words :

    * Adopting Windows Azure helps us heighten our relevance … in a scalable, cost-effective way. The pay-as-you-go model is a lot less expensive than the $1.5 million annually that we would have spent.
    *

    Steve Gable
    Executive Vice President and Chief Technology Officer, Tribune Company

  • Strive for excellence through continuous improvements

    Microsoft passes the 10,000 customer milestone with Azure

    • 0 Comments

    Interesting interview with Doug Hauger, General Manager of Windows Azure.In that article,he describes the state of Windows Azure business :

    Microsoft passes the 10,000 customer milestone with Azure

  • Strive for excellence through continuous improvements

    Azure Deployment for your Build Server

    • 0 Comments

    WAZ.png

    Scott Densmore has published a useful post about how automatic deployments  can be done in Windows Azure and integrate that deployments in your ALM tasks: Azure Deployment for your Build Server.

  • Strive for excellence through continuous improvements

    AzureScope : Extreme computing group

    • 0 Comments

    AzureScope : This is a great resource about Windows Azure,I really recommend you to  invest some time and read the content it contains.You will find really valuable information about:

    • Benchmark test cases and throughput reports
    • Best practices on developing on Windows Azure.
    • Code Samples.

    Hope that you find it useful.

    Additionally I would also recommend to have a look to Azure Research Engagement, it contains interesting information about how Azure is being applied in research projects.

  • Strive for excellence through continuous improvements

    Maximizing utilization while reducing TCO

    • 0 Comments

    If you didn’t attend the PDC session The Business of Windows Azure: What you should know about Windows Azure Platform pricing and SLAs I would recommend you to watch it, it really helps to understand the pricing and license model.

    Additionally it also helps to understand the value of Cloud computing and being more precisely Azure.

    Linked with my previous post Auto-scaling in Azure, I wanted to talk about the most common workload patterns.

    On and Off patternimage

    Growing fast

    image

    Unpredictable bursting

    image

    Predictable burstingimage

    Identifying your service workload pattern helps you to maximize the compute capacity utilization and reducing TCO.

    As I described in the post Auto-scaling in Azure you can dynamically grow or decrease your service compute capacity.So you could schedule the computing capacity of your service according to the workload pattern.

  • Strive for excellence through continuous improvements

    Auto-scaling in Azure.

    • 1 Comments

    A really complete example has been published on Windows Azure Dynamic Scaling Sample talking about this topic.

    If you are still interested on knowing how this requirement can be “manually” implemented,continue reading this post,otherwise I would recommend you to visit the Windows Azure Dynamic Scaling Sample

     

    Combining the strengthens of the Windows Azure Diagnostics API and the Service Management API makes really easy to implement your own logic for auto-scaling your Azure Services.

    In this post I will show you how I have implemented a PoC for auto-scaling an Azure Solution and the different options that you have for implementing a similar solution.

    1. Solution architecture

    The solution components are :

    • The Financial service : A WCF service hosted in Azure Web roles.It has two web roles distributed across two upgrade domains for assuring availability.
    • The controller Service :  A Controller service hosted in a Azure Worker role.
      • Using the Diagnostics API, it remotely requests the Financial Service to transfer its performance counters to a Azure Table Storage.
      • If it detects a high CPU usage (90% Usage for 3 minutes) Using the Service Management API it will automatically scale the Financial Service.

    The following diagram illustrates the solution architecture :

    AutoScaling_2

    It would also have been possible to host the Controller Service in a traditional on premise service.The following diagram illustrates that option:

    AutoScaling_1

    2.  Using the Diagnostics API for reading performance counters

    With the Diagnostics API you can :

    • Dynamically modify the set of counters and traces that your Azure Service will generate.You can modify this configuration from inside your Azure service or remotely (from another Azure Service or from an on premise application).For that purpose you will have to use the class DeploymentDiagnosticManager.

     

    • Request to transfer diagnostic data to Azure Storage,from inside the role that you want to instrument or also remotely (for instance another role or a traditional in-premise service).

    The following table outlines the traces and counters that can be activeted and where are stored .

     

    Diagnostic Data Type

    Default Configuration

    Stored in WA Storage as

    Windows Azure Logs

    Enabled and generating logs locally

    Contains logs from the diagnostic infrastructure, which help the user troubleshoot issues with the diagnostic monitoring system itself.

    Table

    WADInfrastructureLogsTable

    Diagnostic Monitor Logs

    Enabled and generating logs locally

    Contains the logs generated by your service using standard .NET Tracing APIs.

    Table

    WADLogsTable

    Performance Counters

    Not Enabled

    Table

    WADPerformanceCountersTable

    Windows Event Logs

    Not Enabled

    Table

    WADLogsTable

    Application Crash Dumps

    Not Enabled

    Blob

    wad-crash-dumps

    IIS Logs

    Enabled and generating logs locally

    Blob

    wad-crash-dumps

    Failed Request Logs

    Enabled

    Blob

    wad-iis-failedreqlogfiles

    Arbitrary Logs

    Not Enabled

    Blob

    For detailed information about implementing diagnostics in Azure go to the link Implementing Windows Azure Diagnostics

    3. Scaling an Azure Service

    For scaling an Azure service, you must consume the Service Management API.

    Before being able to consume the API, you should generate a self-signed certificate for authenticating the service requests.You can show how this can be achieved in the following link Authenticating Service Management Requests.

    After that, you have the following options for consuming the service management API and scaling the service:

    When updating the service configuration,the key it’s to modify the Instances count param of the service configuration.For instance, this XML represents Financial Service configuration contained in the .csfg file

    <Role name="GRC.BasicFinancialService">
        <Instances count="1" />
        <ConfigurationSettings>
          <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" />
        </ConfigurationSettings>
      </Role>

    If you want to scale the service using a the power shell cmdlets here you have an example :

    string scaleScript="Add-PSSnapin AzureManagementToolsSnapIn "+

    "Get-HostedService $serviceName -Certificate $cert -SubscriptionId $subId | "+

    "Get-Deployment -Slot Production | " +

    "Set-DeploymentConfiguration {$_.RolesConfiguration[$roleName].InstancesCount+=1}" ;

     

    I hope that this post has helped you to see the wide set of options that you have for implementing diagnostics in your Azure Service.

    I will upload the PoC I have used as soon as it is fully tested.

  • Strive for excellence through continuous improvements

    Upgrading an Azure service

    • 0 Comments

    Continuing with the last post Update and upgrade domains, I wanted to give more details about the choices in Azure for upgrading a service.

    First of all, we can upgrade the service from two places:

    • Using the Azure Developer Portal
    • Using the Service Management API. The Service Management APIs are a set of REST services that can be consumed from a azure role or from outside Azure.In order to consume the Service Management Services you can develop your own .NET API or use the Azure Service Management CmdLets

    Additionally, Windows Azure provides two mechanisms for upgrading your service:

    • In-place Upgrade: Windows Azure will stop and upgrade the services contained in each upgrade domain, so if you have distributed your roles in several upgrade domains your service will be responsive in a upgrade process.The following diagram illustrates the process :

    Upgrade service

    You can do Automatic In-Place upgrades to automatically upgrades all domains or Manual for upgrading one domain at one time.

     

    • VIP Swap Upgrade: You can deploy a new version of your service to the staging server, then swap that deployment with the deployment currently in production. This type of upgrade is referred to as a VIP swap (Virtual IP) swap because the address of service running on the staging slot is swapped to the address of the service running in the production slot, and vice versa. See Performing Virtual IP Swap Upgrades for more information.

    For more details about the upgrade points, see Upgrading a Service

  • Strive for excellence through continuous improvements

    Update and upgrade domains

    • 0 Comments

    The Azure Fabric Controller (FC) is the service that automatically manages all roles and resources in Azure, is in charge of :

    • Mapping declarative service specifications to available resources and allocate them
    • Assuring system health and satisfies SLAs
    • Performing application and OS updates

    Keeping in mind that, there are two concepts that are particularly important for assuring the availability of your services :

    • Fault domains are a physical unit of failure (you could associate that concept with a server rack for instance),the FC distributes the services in different update domains for assuring that if one physical unit becomes unavailable , your service will remain available .
    • Update domains are a logical unit, that allows you to specify how your service will be updated(for an application or OS update).When the FC is updating a service, it updates the roles in the same update domain at the same time and in a transactional way,so if you distribute your roles in different update domains,your service wont’ become unavailable during an update.You can distribute the roles in different update domains specifying the upgradeDomainCount attribute in the service definition file.

    You can associate these two concepts with a vertical and horizontal partition.The following diagram illustrates a Azure service distributed in 2 fault domains and 3 update domains.

    Domains

  • Strive for excellence through continuous improvements

    Operating system versioning in Windows Azure

    • 0 Comments

    A new interesting feature ,you can now choose when your applications will receive operating system updates and patches by selecting which version of the operating system your applications will run on in Windows Azure.

    This feature allows you to test your application before upgrading your production deployment.

    To select an operating system version for your application, add the new osVersion attribute to your service configuration file.  The full list of available operating system versions is maintained in the Configuring Operating System Versions topic in the Windows Azure MSDN documentation.

  • Strive for excellence through continuous improvements

    Azure pricing and business model

    • 0 Comments

    If you missed the The Business of Windows Azure: What you should know about Windows Azure Platform pricing and SLAs PDC session,it gives a clear vision of Azure business model.

    Some important highlights about this session :

    • There will be three purchasing models :
      • Pay as you go
      • Subscription licensing are plans for payment predictability
      • Volume licensing :Available through centralized purchasing experience and will have volume discounts
      • Additionally,there are some offers that you can join with important benefits (some of them requires an MSDN subscription)
    • The TCO Analyzer Tool helps you to  quickly determine the value of using Windows Azure.
    • SLAs : One of the key parts of the Windows Azure Platform is the Service Level Agreements,you can check the terms of the agreement in the link.

    I would recommend you to attend this session,it’s really worthless!

  • Strive for excellence through continuous improvements

    Let’s start from the beginning. The magic words about cloud computing

    • 0 Comments

     

    I wanted to start from the beginning describing what cloud computing is, just using a set of "magic words",it's complicated to resume this computing paradigm using a reduced set of words, but here it's my try:

    • Computing as utility
    • Accessible through broad networks like Internet
    • "Unlimited" pool of resources
    • On-demand self-service
    • Growing on demand
    • Pay as you go

     

    I know that there is much more to talk about cloud computing, but these are the essential ideas.

    I also liked the NIST Notional Definition of Cloud Computing, it's quite a complete description and it can be read in less than 2 minutes...

    In the next post I will show you how these concepts are made true in Microsoft Azure…hope to see you then!

  • Strive for excellence through continuous improvements

    A new way ahead of us…

    • 0 Comments

    Hi Everyone,

    Firs of all, thank you for reading my blog. I am Gonzalo Ruiz, a Microsoft Consultant from Spain.I am specialized in .NET Custom solutions, WCF, BizTalk, ILM and many other cutting-edge Microsoft technologies. But, I have left the best for the end, Windows Azure Platform and Microsoft Business Productivity Online Suite, also known as BPOS.

    This blog is the beginning of a new age in my professional life. Some weeks ago I decided that I had to become more interactive with the communities, so the first objective of this blog is sharing as much exciting experiences and knowledge about Microsoft technologies as possible with you, mainly Azure Platform and BPOS. Windows Azure Platform and BPOS (Business Productivity Online Standard Suite) are key technologies in the Microsoft S+S strategy and I am sure that in a short term we will hear more and more about it.

    The second objective of this blog is to know as much as possible about you, your thoughts about Microsoft technologies and your experiences on the field, so please, don't hesitate to write me, I'll do my best in trying to answer and help you!! You are the most important part of this blog.

    I hope that you stay with me till the end and enjoy that trip, I am sure that I will be worthless.

    In closing that post,I wish you and yours Merry Christmas,and If you celebrate other Holidays, I also hope you enjoy your Holiday Season.

    Gonzalo Ruiz.

Page 1 of 1 (17 items)