{"id":38161,"date":"2020-01-04T06:00:12","date_gmt":"2020-01-04T13:00:12","guid":{"rendered":"http:\/\/devblogs.microsoft.com\/premier-developer\/?p=38161"},"modified":"2020-01-02T11:45:59","modified_gmt":"2020-01-02T18:45:59","slug":"tracking-santa-with-azure","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/premier-developer\/tracking-santa-with-azure\/","title":{"rendered":"Tracking Santa with Azure"},"content":{"rendered":"<p>App Dev Manager Kevin Rabun explains the cloud architecture behind NORAD Santa Tracker \u2013 powered by Azure.<\/p>\n<hr \/>\n<p>Did you know that NORAD tracks Santa Claus?\u00a0 Every Christmas Eve the North American Aerospace Defense Command tracks Santa\u2019s journey around the world, answering phone calls and posting location updates at <a href=\"http:\/\/www.noradsanta.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">www.noradsanta.org<\/a>.\u00a0 The NORAD Tracks Santa website is visited by millions of people around the world during a span of less than 24 hours.\u00a0 To ensure the website is highly available, and globally distributed, NORAD relies on Azure.<\/p>\n<p>In 2018, the NORAD Tracks Santa Azure architecture underwent a significant change.\u00a0 We migrated from Infrastructure-as-a-Service (IaaS) virtual machines, strategically distributed throughout the world, to a serverless Platform-as-a-Service (PaaS) approach.\u00a0 In 2019, we continued our PaaS updates by replacing Azure Traffic Manager and the Verizon Premium CDN with Azure Front Door.\u00a0 Front Door is Azure\u2019s globally distributed Application Delivery Network as a service.\u00a0 We made the decision to use Front Door because of its global availability, Azure CDN integration and near real-time failover capabilities.\u00a0 Front Door also reduced the number of individual PaaS services required to operate the Santa Tracker web application by providing a single service that handles layer 7 load balancing, end to end SSL management, URL rewriting and CDN configuration.\u00a0 Because Front Door integrates easily with Azure Storage and Azure Functions, we were able to make the needed architectural changes in less than 1 day, which provided ample time for testing and validation before making our final decision to adopt Front Door.<\/p>\n<p>While the team appreciated the simplicity that Front Door provides, it also had to be performant and able to withstand the heavy traffic experienced on Christmas Eve.\u00a0 I\u2019m happy to report that Front Door was up to the challenge.\u00a0 On Christmas Eve, the NORAD Tracks Santa website received 51 million pageviews with an average response time of 109 milliseconds.\u00a0 The site was visited by people around the world.\u00a0 The top 6 countries, by pageviews, were the United States, United Kingdom, Canada, Japan, Ireland and Chile.\u00a0 The development team did not need to worry about where traffic was coming from because Azure Front Door integrates with the Azure CDN and ensures our content is distributed to all Azure CDN points-of-presence. Our Azure Functions API received 129.8 million requests in the same period with an average response time of 5.89 milliseconds.\u00a0 We used Azure Front Door to provide a consistent endpoint for our Azure Functions API.\u00a0 This approach allowed us to create Azure App Service Plans around the world for hosting our API while using Front Door as the single point of entry for making API calls.<\/p>\n<p>If you are wondering about all the services needed in Azure to track Santa Claus, the list is surprisingly short.\u00a0 The website, including games and media, is hosted in Blob Storage.\u00a0 The API is hosted as Azure Functions.\u00a0 Application Insights and Log Analytics provide metrics.\u00a0 Azure DNS handles domain name configuration and Azure Key Vault stores needed certificates and secrets.\u00a0 Finally, Azure Front Door ties everything together into a system capable of handling high traffic volume regardless of where in the world the requests originate.\u00a0 The image below is a simplified version of our NORAD Tracks Santa architecture.\u00a0 The services seamlessly integrate to provide a globally available web application that can withstand millions of requests per hour and serve content to users around the world.<\/p>\n<p>Below is an architectural diagram for Santa Tracker, Happy Holidays!<\/p>\n<p><img decoding=\"async\" width=\"886\" height=\"1024\" class=\"wp-image-38162\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/01\/c-users-visaroop-appdata-local-microsoft-windows-.png\" alt=\"C:\\Users\\visaroop\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.MSO\\7092DA58.tmp\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/01\/c-users-visaroop-appdata-local-microsoft-windows-.png 886w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/01\/c-users-visaroop-appdata-local-microsoft-windows--260x300.png 260w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/01\/c-users-visaroop-appdata-local-microsoft-windows--768x888.png 768w\" sizes=\"(max-width: 886px) 100vw, 886px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how Azure PaaS powers NORAD\u2019s Santa Tracker allowing for 51 million Page Views with an average response time of 100MS across the globe.<\/p>\n","protected":false},"author":582,"featured_media":38162,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[25,128,55],"tags":[24,3],"class_list":["post-38161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-performance","category-web","tag-azure","tag-team"],"acf":[],"blog_post_summary":"<p>Learn how Azure PaaS powers NORAD\u2019s Santa Tracker allowing for 51 million Page Views with an average response time of 100MS across the globe.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/38161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/users\/582"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/comments?post=38161"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/38161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media\/38162"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media?parent=38161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/categories?post=38161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/tags?post=38161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}