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