Category: Infrastructure


Microsoft Azure Certification Exams Get Major ARM Refresh

Over the last 2 years, since the 3 core Microsoft Azure certification exams were originally published there have been a tremendous amount of changes to the Microsoft Azure platform and ecosystem. These 3 core exams targeted towards Architecture, Infrastructure, and Developer roles were originally published before Azure Resource Manager (ARM) existed and fully covered Azure Service Manager (ASM). Not only has ARM been released since then, but also a very large number of new Microsoft Azure services have been released too! Newer services like Azure Functions, Logic Apps, DocumentDB, and others weren’t covered on these original exams.

However, these core Azure certification exams have been updated a couple times over the last 2 years. This has kept them relevant over the years, but the most recent previous update was published in March 2016, and it didn’t even full cover Azure Resource Manager (ARM) as well as a few other features and services. Since that latest update was about 8 months ago, it really is time for another refresh, and hopefully one that add much more than the last.

Luck is in our favor, as Microsoft will be publishing another new update / refresh to these 3 core Microsoft Azure certification exams on November 22, 2016. This update will include major ARM updates, including the removal of the old Azure Service Management (ASM) APIs, as well as the inclusion of Azure Functions, Logic Apps, DocumentDB, and other newer Azure services.

Microsoft will be publishing another new update / refresh to these 3 core Microsoft Azure certification exams on November 22, 2016.

For a full listing of the new exam objectives on these exams, see these links:

In addition to these 3 core Microsoft Azure exams, there have been 2 additional Big Data focused exams released. These 2 exams have been out for about a year now, and are not getting updated right now. I would expect these to be updated sometime in the next few months, perhaps. Here’s links to further information on these 2 Big Data focused exams:

Also, Microsoft recently announced some major changes to the Microsoft Certification program that greatly embeds the Azure exams into the various certification tracks. Along with these announcements was the release of the brand new Microsoft Certified Solutions Expert (MCSE): Cloud Platform and Infrastructure certification,and a few Microsoft Certified Solution Associates (MCSA) certifications it builds on top of.

There’s been lots changing technology-wise, as well as many major certification changes lately!

Happy studying!


Azure Infrastructure Exam (70-533) Gets ARM Refresh

MS_Azure_Infrastructure_SolutionsIt’s been about 2 years since the 70-533 Implementing Microsoft Azure Infrastructure Solutions certification exam was first release. Over that time there’s been a couple updates to keep it relevant with the ever changing landscape of the Microsoft Azure platform. The previous update was released in March 2016, which is a very long time when it comes to the cloud. The good news is that another update is on it’s way, and this time it will be including a full update of adding Azure Resource Manager (ARM) to the exam, in addition to many other new features and services. This update looks to be bringing the 70-533 Implementing Microsoft Azure Infrastructure Solutions exam back to relevancy and not so outdated as it’s been for nearly an entire year now. Read More


Hosting Azure Web App on Linux

Since the introduction of Azure App Service and Azure Web Apps in early 2015, as well as the Azure Websites feature even earlier, the only option has been to use a Windows VM underneath to host Web Apps. That was until recently! Microsoft recently released a new feature into Preview that allows Azure Web Apps to be hosted on a Linux VM under the covers. With the availability of the Azure Web App on Linux Preview it’s now possible to choose either Windows or Linux as the host OS for the underlying VM Web Apps are deployed to.

With the availability of the Azure Web App on Linux Preview it’s now possible to choose either Windows or Linux as the host OS for the underlying VM Web Apps are deployed to.

Provisioning an Azure Web App on Linux

Once logged into the Azure Portal (, the “Web App on Linux” option is available within the Azure Marketplace when choosing what resource(s) to provision in an Azure Subscription.

Clicking on “+NEW” in the portal will reveal Web App on Linux under the “Web + mobile” section of the Marketplace, or by typing in “Web App on Linux” in the marketplace search.


azureportal_webapponlinux_provisioningOnce the Web App on Linux resource is chosen, the prompt to choose the settings for creating a new “Web App on Linux” deployment is almost identical to the options when creating a standard “Web App” deployment that uses the Windows OS. The App name, Resource Group, and App Service Plan are still required just the same, as well as the option to turn App Insights On or Off.

However, there is an additional option to specify. The additional option is the Runtime Stack. The Runtime Stack configuration is a required field that specifies the specific version of either Node.js or PHP that is necessary for the chosen deployment.

The available options (at least in the current Preview state of the service) for Node.js version are:

  • Node.js 6.6.0
  • Node.js 6.2.2
  • Node.js 4.5.0
  • Node.js 4.4.7

The available options (at least in the current Preview state of the service) for PHP version are:

  • PHP 7.0.8
  • PHP 5.6.23

It’s worth noting that even though the PHP or Node.js version needs to be specified when creating a new Web App on Linux resource, the version can be changed later on within the Application settings for the Web App. It is also possible to switch the configuration from Node.js to PHP or the other way on an existing Web App on Linux resource as well.

Supported Regions

Since the Web App on Linux service is currently in Preview, it’s not supported to be deployed out to all Azure regions just yet. This is part of the standard way with how Azure Preview services are rolled out and eventually deployed across the Microsoft Azure Platform. First, Preview services are rolled out to only 1 or a few Azure regions / locations. Then, later on, once the service reached General Availability (GA) the service will be rolled out to be supported across the rest of the Microsoft Azure regions / locations.

It the current Preview state of the Web App on Linux support, the service is available in the following 3 regions:

  • West Europe
  • Southeast Asia
  • West US

Pricing Plans

While it’s expected that Web Apps on LInux will eventually receive the same App Service plan Pricing tier support once the service reached General Availability (GA), the current Preview doesn’t support all the same pricing tiers just yet. Currently, it supports a few of the Pricing tiers for the smaller Instance Sizes which still give plenty of options to use this new Preview service.

Here’s the list of the currently supported Pricing tiers for the Web App on Linux Preview service:

  • Standard S1 (1 Core, 1.75 GB RAM)
  • Standard S2 (2 Cores, 3.5 GB RAM)
  • Standard S3 (4 Cores, 7 GB RAM)
  • Basic B1 (1 Core, 1.75 GB RAM)
  • Basic B2 (2 Cores, 3.5 GB RAM)
  • Basic B3 (4 Cores, 7 GB RAM)


As can be seen in the above screenshot of the Pricing tier options, there are many standard features of Azure Web Apps supported.

  • Up to 50 GB Storage
  • Custom domains
  • SSL Support
  • Up to 10 instances
  • Daily backup
  • Up to 5 Deployment Slots

Each of the Azure App Service Pricing tiers for the Web App on Linux Preview service also shows a listing of “Preview Pricing” for both the Standard and Basic pricing tiers. This indicates that the pricing of the Web App on Linux service while it’s in Preview is actually charged at a 50% discount of the prices shown. The price displayed for the Standard S2 tier is $89.29 USD, so with the 50% discount, the price you’ll pay to use a Standard S2 instance with the Web App on Linux Preview will actually be $44.65 USD.

Linux App Service Plan

When provisioning a Azure Web App, whether a “standard” Web App or a Web App on Linux, there needs to be an Azure App Service Plan provisioned. The App Service Plan is what determines the Pricing tier and each App Service Plan can be used to host 1 or more Web Apps. There is however a difference between the App Service Plans.

An App Service Plan for a Web App for Linux resource can only be used to host other Linux based Web Apps, and an App Service Plan for a “standard” Web App resource can only be used to host Windows based Web Apps.

While a Web App or a Web App on Linux can be provisioned, the starting point you use (which of these that’s chosen to start provisioning) will determine the NEW App Service Plan that gets created. A Web App, as it’s hosted on a Windows VM underneath, will have a Windows based App Service Plan provisioned. A Web App on Linux, as it’s hosted on a Linux VM underneath, will have a Linux based App Service Place provisioned.

However, there’s one thing to be aware of when provisioning a new Web App if there are already both Windows based and Linux based App Service Plans running on an Azure Subscription. When a new Web App is created, although it will create NEW App Service Plans that support Windows, if an existing Linxed based App Service Plan is chosen as the App Service Plan to use for hosting the Web App, the resulting Web App that gets provisioned, since it’s configured to use a Linux App Service Plan, will in fact be a Web App on Linux instead. This is a seemingly small detail that needs to be kept in mind when provisioning both Web App and Web App on Linux resources within an Azure Subscription.

What distribution of Linux?

Since Azure Web Apps are a Platform as a Service (PaaS) service in the cloud, it does fully abstract away the underlying Virtual Machine (VM) and Operating System (OS) that is hosting the Web App. However, there are times when it’s useful to know what OS and Version is hosting something, and using the Kudu portal (which is available to all Azure Web Apps) it’s possible to gleam into what OS, Web Server, and other System Information of the underlying OS.

The OS that Web App on Linux resources / instances are running on is: Debian GNU/Linux 8 (jessie)


Also, the web server running on the Web App on Linux resource / instances is: Apache/2.4.10

Here is some additional Environment / System information about the Linux VM underneath Web App on Linux instances.

System info

  • System up time: 3.17:07:04.9990000
  • OS version: Unix
  • 64 bit system: True
  • 64 bit process: True
  • Processor count: 1
  • Machine name: fc53b9b63c6f
  • Instance id: fc53b9b63c6f
  • Short instance id: fc53b9
  • CLR version: 4.0.30319.42000
  • System directory:
  • Current working directory: /
  • IIS command line: /usr/lib/mono/4.5/mod-mono-server4.exe –filename /tmp/mod_mono_server_default –applications /:/opt/Kudu –nonstop

Environment variables

  • APACHE_LOCK_DIR = /var/lock/apache2
  • APACHE_LOG_DIR = /var/log/apache2
  • APACHE_PID_FILE = /var/run/apache2/
  • APACHE_RUN_DIR = /var/run/apache2
  • APACHE_RUN_GROUP = www-data
  • APACHE_RUN_USER = www-data
  • APPDATA = /opt/Kudu/local
  • APPSETTING_ScmType = None
  • DEBIAN_FRONTEND = noninteractive
  • HOME = /home
  • HOSTNAME = fc53b9b63c6f
  • KUDU_APPPATH = /opt/Kudu
  • KUDU_MSBUILD = /usr/bin/xbuild
  • KUDU_RUN_USER = 31c21a883af01a04cb9bd231
  • LANG = C
  • MONO_IOMAP = all
  • MONO_SHARED_DIR = /tmp
  • PATH = /home/site/deployments/tools;/opt/Kudu/bin/Scripts;/usr/bin;/usr/bin;;;Microsoft SDKs/F#/3.1/Framework/v4.0;/usr/bin;/usr/share/npm;/usr/local/bin;/usr/local/bin;/usr/local/bin;/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/nodejs/4.5.0/bin
  • PWD = /
  • SCM_BIN_PATH = /opt/Kudu/bin
  • ScmType = None
  • WEBSITE_SITE_NAME = linuxwebapp42

It’s worth nothing that anywhere the value “linuxwebapp42” is shown in the above settings / information that this is the Name of the Web App on Linux that was created and subsequently used to access all this information.

If you’re curious how the above Environment / System information was obtained, it was retrieved by using the Kudu portal. Kudu is the engine used behind the scenes for git/hg deployments, WebJobs, and various other features of Azure Web Apps. Every instance of Azure Web Apps (both Windows and Linux) have an instance of Kudu running that can be accessed through the Azure Portal or directly via its HTTP endpoint.


Manage Azure App Service Deployments with Deployment Slots

Every App Service resource in Azure has the ability to have multiple deployment slots configure. These deployments slots are a feature than can greatly help with the implementation of streamlined testing, staging, and deployment process. Along with the ability to configure multiple hosting environments, the use of Deployment Slots enables zero downtime when deploying application changes, or even rolling back a failed deployment.

Creating Deployment Slots

Deployment slots are a feature of Azure App Service Plans. As a result, every App Service resource (Web App, Web API, Mobile App) in Microsoft Azure has the ability to create up to 4 additional deployment slots with the Standard tiers, and up to 20 deployment slots with the Premium tiers.

Each App Service (in Standard tiers) can have up to 4 additional Deployment Slots in addition to the Production slot.

Each Deployment Slot allows for a separate instance of the application to be hosted in isolation from the other deployment slots and production slot of the App Service. The VM behind each Deployment Slot is the same VM Instance that hosts the production deployment slot. This means that the App Service and 4 additional Deployment Slots will all be hosted in and share the same VM Instance and resources.

To create App Service Deployment Slots in the Azure Portal, just navigate to the App Service, select the Deployment slots section and click the Add Slot button to create a new Deployment Slot.


Additionally, in order to use the Deployment Slots feature of Azure App Service, the pricing tier must be either Standard or Premium. The Free, Shared, and Basic pricing tiers do not support deployment slots.

It’s important to keep in mind that all Deployment Slots share the same VM Instance and server resources.

Deployment Slot URL / Endpoint

Azure App Service applications get a unique URL that is made up of the App Service Name as the subdomain of the domain. In the above screen shot, the App Service Name is “testapp2063” which means the URL / endpoint for the Production slot of the App Service is located at

When creating Deployment Slots each slot gets it’s own URL / Endpoint. The endpoint for each deployment slot derives from the endpoint for the Production slot by appending the name of the deployment slot with a hyphen.

With an App Service named “testapp2063” the URL / Endpoint for the following deployment slots will have the following values:

  • dev =>
  • test =>
  • stage =>


Deployment Slot Swapping

Swapping Deployment Slots is the method of copying the currently deployed application code and settings of one deployment slot and swapping it with another. Swapping allows for the deployment of application code to be done from one environment to another very quickly. It also allows for a couple new deployment techniques that didn’t exist in traditional server hosting.

To swap Deployment Slots from the Azure Portal, just navigate to the list of Deployment Slots for an App Service or navigate to the specific Deployment Slot that needs to be swapped. Then, click the Swap button and specify which Deployment Slot to swap with. See the above screenshots for reference of where the Swap button is located within the Azure Portal.

When an application is deployed using Deployment Slot swapping, there is zero downtime

When an application is deployed using Deployment Slot swapping, there is zero downtime of the application. The way this is implemented is by just rerouting the Deployment Slot Endpoint between the Deployment Slots being swapped. Both deployment slots remain running and actively responding to client requests throughout the swap.

Staged Deployment

The technique of performing a Staged Deployment allows for application code to be deployed to a non-production deployment slot (such as one named stage) to test or verify functionality is working as expected. Then once everything has been verified, the Stage deployment slot can be swapped with Production making the staged application deployment the new Production instance of the application.

Incremental Deployment

There are times when deploying application changes might require additional changes other than just deploying the latest code. These requirements could be running SQL scripts or some other post deployment step necessary to fully deploy the latest code. Deploying to a Stage deployment slot can allow for these Incremental steps to be performed after the code is deployed in a way that can be tested and verified before deploying to production.

Rollback Deployment

Every once in awhile a deployment fails for some reason. Maybe files end up corrupt, a major bug is found, or some other reason for failure. In these cases, it’s necessary to rollback a deployment. Using Deployment Slots, a deployment can be rolled back easily buy just swapping the Deployment Slots back.

Basically, swap Stage with Production to deploy new changes. When a major bug is found that requires a rollback, then the Production and Stage Deployment Slots can be swapped back. This allows for the old application code to be rolled back into Production in a matter of minutes. This leads to greatly decreased downtime in the event of a deployment failure.


Why is the Azure Portal a Web App?

There have been a few incarnations of the Microsoft Azure Management Portal over the years. The current state is a fairly easy to use Web Application that is built as a Single Page Application (SPA). But, why is the Azure Portal a Web App instead of a Universal Windows Platform (UWP) app distributed through the Windows Store? Why isn’t it a native app in all the popular App Stores? This post digs into the specifics of why the Azure Portal is a Web App, as well as explains a few of the benefits and trade-offs of being a Web App. Read More


Azure Portal + Azure AD Management in Public Preview


Azure AD in Azure Portal

Microsoft has been hard at work to integrate all the existing Service Management API based services (such as VMs, Storage, Service Bus, etc) over to the Azure Resource Manager (ARM) API and including them in the newer, current Azure Portal ( A few weeks ago the first bits of Service Bus started showing up in the Azure Portal, and today the newest Public Preview in the Azure Portal is the new support for Azure Active Directory (Azure AD) management within the current Azure Portal.

Here’s a short video from Channel 9 that shows off the new Azure AD portal UI:

Azure AD is one of the last hold outs to get addd to the current Azure Portal. Until everything gets moved over to support the ARM APIs and the current Azure Portal there will still be the Azure Portal duality, but today we are yet another step closer to only having a single Azure Portal to think about.


Fixing Azure Portal Errors

All software has errors. The Microsoft Azure Portal is no different. When this happens you’ll receive one of two different alerts of the error; either an error message or a rain cloud. It’s easy to have a “table flip” moment when this occurs and start grumbling how “the cloud is horrible” or “why Azure sucks”, but there’s generally an explanation for these errors and they normally don’t last long. This post explains a bit of why these errors occur, when they’re more likely, and how to fix / workaround them. Read More


Azure N-Series VMs and NVIDIA GPUs in the Cloud

It’s been quite some time since we last heard details about the upcoming N-Series Virtual Machines (VMs). in Microsoft Azure. Microsoft recently announced further details on the N-Series VMs. There will be two different series: the compute focused N-Series powered by Tesla K80 GPUs, and the visualization focused NV-Series powered by Tesla M60 GPUs.

As many are aware, Cloud VMs traditionally haven’t been able to run graphics intensive workloads. The reason for this is because the VMs do not have access to dedicated, powerful GPUs in the cloud. That really is until now! Ahem, soon! Once in Preview, the Azure N-Series VMs will be the first public cloud VMs to offer this bleeding edge technology in the cloud. Read More


35 Azure and Cloud eBooks for Amazon Kindle

Blog articles and Technical documentation are nice for learning technologies, but there are times when a good book just can’t be replaced. This is especially true when getting information from blogs that may have a snippet of “found code” that might or might not work as expected. At least properly technically reviewed book will have working code snippets and other directions / information.

So, here’s a bunch of eBooks on Azure topics that are available for the Amazon Kindle. After all, what better to read about the Cloud than with a “Virtual” book! Read More