Author Archives: gbellmann

Adding a custom deployment script to ignore web test projects in Azure Functions with GitHub deployment

The scenario

As part of an existing Azure Functions app that has some HTTP Functions that generate Excel files and return them as a byte array, I wanted to add an integration tests web project that when run would download the resulting Excel files. This Azure Functions app is automatically deployed from a GitHub repo.

Kudu and deployment scripts

When using GitHub to deploy any Azure App Service app (including Azure Function apps), Kudu chooses which deployment script to use based on your project type. As it states in the Customizing deployments article in the Kudu wiki, if you happen to have a web project in the repository, then it chooses to build and deploy that project. Continue reading

Advertisement

Application Insights: Ignore 404 status codes for Web APIs

Application Insights is an awesome monitoring tool, but it considers all 4xx and 5xx HTTP Status Codes as errors, and when writing REST APIs some of these codes have a special meaning and are not errors. A 404 (Not found) response from a REST API usually means there are no results for a given action, not that you have hit a non-existent page.

So, how do we tell Application Insights to ignore those 404s? Simple: we write what is called a Telemetry processor. Continue reading

Infographic: Cloud design patterns

Are you designing applications for the cloud? This Cloud Design Patterns infographic created by Microsoft provides a great reference of cloud architecture design patterns and guidance for cloud-hosted applications in Microsoft Azure!

Cloud Design Patterns Infographic

You can see and download the full infographic from: https://azure.microsoft.com/en-us/documentation/infographics/cloud-design-patterns/

@gjbellmann

Getting Azure Web App deployment status notifications in Slack

Introduction

Azure Web Apps have a great feature: continuous deployment from different kinds of repositories: Visual Studio Online, OneDrive, a local Git repo, GitHub, Bitbucket, Dropbox or an external repo. You also have built-in alert notifications, but there’s no built-in notifications for deployments, and that’s where Kudu web hooks come to the rescue.

But first, what is Kudu?

Project Kudu is an open source project hosted in GitHub that is the engine behind Git/Mercurial deployments, WebJobs, and various other features in Azure Web Apps. And, it can also run outside of Azure.

What are Web Hooks?

A Web Hook is an HTTP callback: an HTTP POST that occurs when something happens; a simple event-notification via HTTP POST. Web Hooks are a way to receive valuable information when it happens, rather than continually polling for that data and receiving nothing valuable most of the time. Continue reading

Setting up a WebJob to run HDInsight jobs

Introduction

Managing an HDInsight cluster, or running an HDInsight job, from an Azure WebJob, requires you to set up a certificate to access the HDInsight cluster. This post shows how to upload the certificate to the Azure management portal, and how to configure our WebJob.

To generate the certificate file we need, you can follow the steps for the .pfx certificate file generation here.

Uploading the certificate file

The .pfx file should be uploaded in the “Configure” section in your Web App. To do so, follow these steps: Continue reading

Assigning a custom name to Cloud Services instances

The default instance name

Those of you who look at SQL database connection logs, or at tools like New Relic to monitor your Cloud Service applications, may have noticed that the list of servers running the application have names like “RD000D3A107CFC” (this is the host name in the network).

This name isn’t very useful when trying to identify which of the instances we see in the Azure Management Portal is the one that corresponds to that name. All instances in the portal are named as the role name followed by a number (e.g.: CloudService.Web_IN_1). Continue reading

Setting up a cloud service to run HDInsight jobs – Part 2

Introduction

Managing an HDInsight cluster, or running an HDInsight job, from an Azure worker role, requires you to set up a certificate to access the HDInsight cluster. This post shows how to upload the certificates to the Azure management portal, and how to configure our cloud service. The previous post (Setting up a cloud service to run HDInsight jobs – Part 1) showed the steps to generate the certificate files we need.

Uploading the certificate files

The .cer file should be uploaded to the Azure portal under the “Management Certificates” section. To do so, follow these steps: Continue reading

Setting up a cloud service to run HDInsight jobs – Part 1

Introduction

Managing an HDInsight cluster, or running an HDInsight job, from an Azure worker role, requires you to set up a certificate to access the HDInsight cluster. This post shows the steps to generate the certificate files we need. The next one will show you how to upload the certificates to the Azure management portal, and how to configure your cloud service (Setting up a cloud service to run HDInsight jobs – Part 2).

Creating the certificate files

The certificates you download from your Azure subscription will not allow you to generate a pfx file, so we’ll need to create our own. This can be done in two ways: we can buy a certificate from firms like VeriSign or Entrust, or, we can create one ourselves with IIS, for free! Continue reading

Improving performance with Azure Search and Redis cache

Introduction

This post will show you how we improved the performance of the car classified listing at Autocosmos.com, working with Miguel Ángel Saez and Matías Quaranta. The objective is to show the solution from an architectural point of view, so it may help others with a similar problem.

Autocosmos.com is an auto shopping and information website that serves Hispanic America, and runs entirely on Microsoft Azure. You can learn about the migration from on-premises to the cloud at this Microsoft Customer Story.

Scenario

As most traditional software solutions, Autocosmos uses a relational database to store most of its data. As it is hosted in Azure, the RDBMS in use is the Azure SQL Database service.

The classified car listing, one of the fundamental parts of the site, consists of a list of filters, with the amount of results in each filter, and a paged results list, that looks like the image below:

Site layout

Site layout: filters on the left (red) and the paged results on the right (blue).

Continue reading

Build 2015

Azure features announced at Build 2015

//build/ 2015 started today and there were some really nice announcements regarding the Microsoft Azure platform. Let’s see a brief summary on each one: Continue reading