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 databaseof 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
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:
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")
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 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.
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!!
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
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
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
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
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.
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.
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:
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.
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 pattern
Growing fast
Unpredictable bursting
Predictable bursting
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.
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 following diagram illustrates the solution architecture :
It would also have been possible to host the Controller Service in a traditional on premise service.The following diagram illustrates that option:
2. Using the Diagnostics API for reading performance counters
With the Diagnostics API you can :
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
Contains the logs generated by your service using standard .NET Tracing APIs.
WADLogsTable
Performance Counters
Not Enabled
WADPerformanceCountersTable
Windows Event Logs
Application Crash Dumps
Blob
wad-crash-dumps
IIS Logs
Failed Request Logs
Enabled
wad-iis-failedreqlogfiles
Arbitrary Logs
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.
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:
Additionally, Windows Azure provides two mechanisms for upgrading your service:
You can do Automatic In-Place upgrades to automatically upgrades all domains or Manual for upgrading one domain at one time.
For more details about the upgrade points, see Upgrading a Service
The Azure Fabric Controller (FC) is the service that automatically manages all roles and resources in Azure, is in charge of :
Keeping in mind that, there are two concepts that are particularly important for assuring the availability of your services :
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.
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.
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 :
I would recommend you to attend this session,it’s really worthless!
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:
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!
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.