back to CSS Capstone schedule

UWB Logo

Computer Science and Software Engineering Capstone Presentations

Fall Quarter

December 18, 2020

 

Bo Simmons

"Software Engineer Internship with Microsoft Azure Sphere"

(Microsoft)

 

Faculty Advisor: Dr. Nancy Kool

 

 

 

Abstract

During my internship with Microsoft I worked on the cloud infrastructure for services behind Microsoft Azure Sphere. In

addition to participating as a team member in standups, design reviews, and other day-to-day activities, the primary

focus of my internship was a dedicated project with the goal of replacing existing TCP-based health probes with HTTPbased health checks and integrating those health checks with Azure traffic manager. I was assigned complete ownership

of the project, from design to implementation through deployment to production.

 

Azure Sphere's services are built using ASP.NET Core model-view-controller (MVC) and expose rest APIs. For this reason,

I initially considered two options during the design and prototype phase: 1) ASP.NET Core Middleware health checks

and 2) custom controllers. Middleware allowed the leveraging of pre-built, open-source health checks for many types of

dependencies and required less boilerplate code; further, while there was a negligible performance difference between

the two. Consultation with the security, update, and infrastructure teams revealed that the Middleware approach was

also more compatible with determined requirements, e.g., that the health checks be computationally lightweight. For

these reasons, I made the decision to move ahead with the Middleware approach. I next wrote and presented a design

proposal document to representatives of all three teams. Once the design was approved, I wrote unit and integration

tests required to enable the health check middleware. After validating the unit integration tests, individual health

checks were written for selected metrics. Actual health check calls retrieved cached results from a background worker

process, and health checks were configured to respond only with an HTTP status code. The final stages of the project

involved using Helm charts to enable the one of the created health endpoints as liveness checks for the two services

frontend and backend) they were implemented in, and then integrating the endpoints with the load balancer. While

integrating with Azure Traffic Manager's endpoint monitoring for routing traffic between regions was an original goal of

this project, midway through the project, we shifted to Kubernetes integration, based on input from the security team.

In addition, I ultimately produced documentation for extending the health checks to all Azure Sphere services. This was

so that my work, which served as a template restricted to only two services, could be extended to all services after my departure.

 

 

 

 

 

 

 

 

 

 

 

Updated December 16, 2020