Application Insights is Yet Another Reason to Use Azure Web Sites!

As posted previously, hosting a web site can be easily done using IAAS services.  Create your own VMs and you can host PHP, MySQL, .NET or any other type of web application.  However, now you have to patch your VM, upgrade all the software, monitor it, back it up, etc.

This is where Azure Web Sites is such a compelling offering – if you’re running an ASP.NET, PHP, Java, Python or Node.JS you can deploy your site and have Microsoft manage the infrastructure for you.  In addition, you now get auto-scaling up to 10 instances of your web site and access to a number of different storage options including SQL Server, Azure Document DB, Mongo DB, Azure SQL, Blob Storage, etc.

As part of Azure Web Sites, Microsoft is now including a full monitoring solution called Application Insights at no extra cost.  You can turn it on through the portal or you can enable it when you create your web site in development using Visual Studio.

Application Insights not only monitors your web site  but auto-discovers dependencies such as the underlying database and monitors those as well.

Read More

Migrate Larger Emails to Office 365–Size Limit Increased to 150 MB

As part of its regular updates, Microsoft announced that you can now migrate larger emails to Office 365 Exchange Online.  The previous limit of 25 MB has now been increased to 150 MB.

The limit increase only applies to emails being migrated – if you create one through Exchange Online the limit of 25 MB still applies.

See the Office 365 Exchange Online Limits page for more details on various limits on the Exchange Online service.

Read More

Brandoo Plugin for WordPress NOT Recommended on Azure Web Sites

As posted previously, this blog currently runs on WordPress and recently I migrated the blog to Azure SQL using the Brandoo Plugin.

The primary reason to migrate was that I don’t like the ClearDB MySQL database option as the free version is limited to 4 connections and the paid version is not cheap and/or scalable as running Azure SQL.  I really want to have a site that can run as light weight as possible to recommend to people looking for low cost approaches for running sites on Azure Web Sites.

Unfortunately, it seems that the Brandoo project has run into a lot of challenges with the ongoing changes in WordPress.  I heard from the Brandoo project owner himself:

Hello Christopher,
I’m the maintainer of Brandoo WordPress. Changes in WordPress upstream is making debugging of Brandoo WordPress almost impossible today. There is many “strange” changes in WordPress, making translation to AzureSQL/MS SQL impossible at all. We do not want to change WordPress core and build fork. Without community we will be not able to work on it. There is no support form developers community so we are fighting alone. Second thing is that today it is possible to connect Azure Web Site with Your own MySQL cluster or single VM via VPN. So You can create HA WordPress on Azure without AzureSQL – I think that this will be a new direction for Brandoo WordPress. I’m father of this project and it is not so simple to tell You, that we are slowly going to the end of Brandoo WordPress in form You know and use.
Best Regards,

What this means is that if running Brandoo is a use at your own risk option.  While my experience has been positive so far (except for search not working), it means that it’s not a well supported option and one that I couldn’t recommend as a solution to those wanting to run a low cost web site or blog on Azure Web Sites.

My next step for this blog is to look at alternatives to WordPress that will work on a standard Azure Web Site with an Azure SQL database (or even better, no database requirement at all).  I’ll keep everyone posted as I look at various options – currently I’m looking at C1 Composite, Ghost, and a few others (I’ve ruled out both Joomla an Drupal as they don’t seem to deploy properly to Azure SQL).

Read More

Running WordPress on Azure SQL – Search Doesn’t Work

As posted last week, this blog now runs on WordPress with Azure SQL as its database.  The Brandoo plugin is used to translate the original MySQL database layer and maps it to SQL Server. 

One challenge with the plugin – WordPress native search does not work using the Brandoo plugin.  I created a brand new site just to test it out and verified that this is a basic defect in the plugin.  There is also a documented conversation here that documents this as a bug.


I’ll be continue to dig into this issue to see if there are alternative solutions to the out of the box search capabilities.

Read More

Office 365 Usage Grows but On Premise SharePoint Will Linger For Years to Come

Office 365 is definitely growing significantly – revenue and number of users has increased dramatically in 2014.  However, despite the growth rate, the long tail of many years of SharePoint on-premise means that on-premise SharePoint still continues to be dominant across the market.

Redmond Magazine just published the following Forrester Research that shows the breakdown of how many customers are still on legacy versions of SharePoint including a significant percentage of customers with multiple versions of SharePoint still running on premise.


We see this ourselves with many of our customers wanting to move to the latest version of SharePoint either on prem or to the cloud but with lots of challenges in migrating existing platforms.  We are currently working with several of our customers to migrate them both to SharePoint 2013 on premise and to Office 365.  We expect the growth rate to continue but it will take several years to migrate all the existing customers who have invested in SharePoint as a platform, in particular those with custom developed intranets, public facing web sites or line of business applications that will need to carefully migrated to move to either SharePoint 2013 on premise or to Office 365. 

Read More

Azure Key Vault Now In Preview

Microsoft has announced the preview of a new service – Azure Key Vault.  Key Vault is a service specifically for storing cryptographic keys and managing other secrets to be used with other cloud services.

Secure key management is essential to protecting data in the cloud. With Key Vault, you can encrypt keys and small secrets like passwords with keys stored Hardware Security Modules (HSMs). For added assurance, import or generate your keys in HSMs certified to FIPS 140-2 level 2 and Common Criteria EAL4+ standards – so that your keys stay within the HSM boundary. Key Vault is designed so that Microsoft does not see or extract your keys. Monitor and audit key use with Azure logging – pipe logs into HDInsight or your SIEM for additional analysis and threat detection (coming soon).

The key message here is that you create keys offsite which means Microsoft never sees your private keys.  The key vault takes your already created keys, allows you to upload them into a secure container and then delegate permissions to other third party applications.  Currently, only Asymmetric keys are supported but Elliptic Curve and Symmetric keys will be supported in the future.

Where would we use such a service? 

  • Storage of service account passwords used within custom LOB applications
  • Storage of user account passwords used within custom LOB applications
  • Storage of keys used to encrypt files or SQL Server databases
  • Storage of keys used to encrypt VM images

In addition, the Key Vault architecture supports SAAS vendors who want to enable their customers to upload their own keys without the SAAS vendor being able to access them. 

Overview of Azure Key Vault

Read More

Migrating WordPress to Azure SQL from MySQL

As traffic grows, we have been making some changes to the underlying infrastructure in Microsoft Azure and doing some performance tests against the environment.  The goal in all cases is to run this blog as cheaply as possible by limiting the footprint while allowing for lots of increased traffic.

One of the key changes we have decided was to migrate the database from MySQL to Azure SQL.  The primary reason for this is that the bundled free version of MySQL is limited to 4 connections.  As my blog was increasing traffic, I was finding that the connection limit was being overwhelmed and then the blog was generating errors connecting to the database.


There is also a limitation on how many MySQL databases you can have – with Azure Web Sites you are limited to a single free database. 

If you can run using Azure SQL, you can have a free 20 MB database with any Azure Web Sites.  This option is technically a “retired” plan (e.g. it will be unavailable in September, 2015) but at that time I can upgrade to Basic which provides me a 2 GB database for $6 / month or go crazy and get a 250 GB standard database starting at $16 / month.

In comparison, ClearDB’s “Bronze” package only gives me a 1 GB database and maxes out at 15 connections.  SQL Server in comparison has no limitations on connections.

Migration of the site was pretty simple – I created a new WordPress site using the Brandoo WordPress plugin.  The Brandoo WordPress plugin allows you to run WordPress through an adapter that translates the calls to a standard SQL database instead of MySQL. 


Once created, I had a standard WordPress site.  I reinstalled all the plugins, themes, and settings from the existing site manually and then did an import of all the content from the existing site.  I then ran some performance tests against the site to see how the site would perform under load (the results are posted here).

Once up and running, I simply switched my domain to the new site and we were up and running!

So far, I haven’t seen any issues other than the web site seems to consume more memory than the old WordPress site.


This means that I cannot run the site under a single shared instance – I need at least two just to have enough memory quota to keep the site running.  I had moved to two shared instances with the previous site because it was just under the quota limit and occasionally would go over the 512 MB instance quota and kill the site.  So far, the site performs well and runs comfortably within two shared instances using the 1024 MB memory usage limit.

Tweet me your feedback at @microsoftrend – let me know what your experience is as a consumer of the web site!

Read More

Performance Testing WordPress on Microsoft Azure

Over Christmas, I developed a set of performance tests against all the various hosting plans in Microsoft Azure using the basic Bakery ASP.NET application.  The results are published here.

In renovating this blog for 2015, I have started moving it to SQL Azure using the Brandoo WordPress Plugin for SQL Server and wanted to test the performance.  This gave me the opportunity to do the same performance test but with a more real world application – running a WordPress blog.  Here are the results.


Shared provides reasonable scalability but the quotas are quickly overloaded by WordPress.  With 4 concurrent users, I was able to disable the site by overloading the quotas.


Using my earlier performance tests, I have concluded that Basic and Standard small essentially perform the same way.  With Standard, you have more scalability options but the basic VM performance is the same.

In the same as my previous tests, I found that Basic or Standard Small were too small to handle any serious load.  While they don’t break, with more than 8 concurrent users the response time becomes very slow at more than 5 seconds on average to respond to the request.

If you look at the Azure dashboard, it seems to be maxed out at 70-80 requests per minute.



In our previous tests, Basic and Standard Medium did quite well.  They scaled nicely until about 50 concurrent users and then slowed down as the instance was overloaded.

In this WordPress test, scalability was improved over Small.  While Small peaked at 80 requests per minute, Medium peaked at 170 requests per minute.  However, performance degradation still occurred at 8 concurrent users although the drop wasn’t as significant as Small.  With Medium, performance with 20 concurrent users is still below 5 seconds under load per request.  However, with 50 users, that jumps to 17 seconds per request on average.


As expected, Large performs really well and scales a lot better than Small or Medium.  It performs solidly at 8 concurrent users with only minor drop off in performance.  Even at 20 concurrent users, the average response time is still under 5 seconds.  At peak, the single instance is able to generate 575 requests per minute.

Shared x 3

Shared x 3 provides similar scalability to Shared which is rock solid.  However, you’re still up against quota limitations but they have been tripled because of the three instances.  This is particularly helpful with CPU time and memory usage in that WordPress seems to spike just above the memory threshold of 512 MB for a single instance from time to time when it is under load (it’s probably not WordPress but the  .NET run time accumulating garbage to be collected).  With 1.5 MB in memory usage available, WordPress sits comfortable within that threshold.

However, running more than 8 concurrent users will use up the available CPU time within 5 minutes and shut down the site, even with three instances running.  It can handle the surge in traffic better than a single Shared instance but it cannot handle a sustained load.

Medium x 3

Basic Medium x 3 provides very good scalability and superior performance to a single Standard Large server.  Given the cost of 3 Basic Mediums is $357 / month and a single Standard Large is $314 / month, you’re better to scale horizontally across Medium instances than go up to the Large instance.

Even at 50 concurrent users pounding away, the three Medium instances were still serving pages in under 5 seconds on average.   This is almost double the performance of the single Standard instance we tested above.

Large x 3

Basic Large x 3 can  handle a LOT of traffic.  It could easily handle 20 concurrent users at full speed with no degradation in performance.  With 50 users, we were still running less than 5 seconds for an average page request.  Even with 100 concurrent users, the response time was about 6 seconds per page load.

The site was able to peak at more than 1200 requests per minute – that’s about 1.7 million requests per day.


Read More

Office 365 Delve Adopts Pinterest Style Boards

Microsoft has just announced the addition of a new feature in Delve – the ability to create Boards.  Boards allow you to pin items in Delve to a particular topic and save them.  They are shared across the enterprise so that you can have a collection of items that are kept together and added by members of your team.  Board represent a way to curate content generated by delve so that it can be preserved and shared.

If you want to see where the idea comes from, just check out Pinterest – they have had a similar implementation for consumer facing social networking.

Delve Boards 2

Read More