Technology

Web Apps

Microsoft Azure: More than a Web Hosting Platform

March 24, 2016

Recently we launched a new site for a department within a global organization. At first glance, the site appears to be pretty simple. There is an archive of weekly calls within the department that contain a video, transcript, and a copy of the slides used during the call.

Behind the scenes, however, there is a lot of architecture and processing that can take a lot of effort to configure and implement effectively. Thanks to Microsoft Azure, we were able to implement this solution in a short timeframe. Here’s the breakdown of how Azure has made this possible.

AzureSite_IndividualCall

Hosting – Azure App Services

The first piece of the puzzle is hosting the web application itself. This is where Azure App Services comes into play. You can launch a website using App Services within minutes and can scale your web app up and out as needed. With the continuous integration options available, we were able to automatically deploy our changes to our test and live instances whenever changes were detected on the appropriate branches. With a couple of clicks and a small file update, you can add application insights to track client and server statistics and performance with the site.

Document Indexing/Searching – Azure Search

One big need for this project was the ability to search for content within the videos that wasn’t tagged through the products metadata marked during the upload process. However, each “call” contained a transcript of the session and a copy of the PowerPoint document with the slides of the call.

By leveraging Azure Search, we were able to quickly create an indexing job that scanned the container in which these documents were uploaded. The indexed results were readily available through the Azure SDK API and allowed us to search this content, display matching documents based on the strength of the match, and link to the call in which the transcript/deck was associated. Previously, setting up the necessary database tables, code, logic, and endpoints would take weeks. All of this was accomplished in less than a day.

Video Streaming/Navigation – Azure Media Services

While serving a simple MP4 file is nice, we wanted to take the next step and provide additional value to these videos. For starters, these videos were going to be viewed by department members scattered around the globe, so providing a CDN for faster access and better quality was a must. In addition, the DASH video protocol makes it easier to stream videos. Given the fact that these videos are often 30 minutes long, we wanted to create navigation points in the video for a user to jump to a specific location.

Azure Media Services handles all of these things with only a little bit of setup and coding. Once a video is uploaded to the service, we use the Azure SDK API to fire off several jobs: one to encode the media for streaming/navigation, one to index the audio of the call, and another to generate a thumbnail image of the video for the web page. Once this is complete, we have a video that streams quickly, allows the user to navigate to any point in the video timeline we provide links to, and even has closed captioning. This is another feature that often takes months to set up, but was done in a week.

Additional Resource

Operating behind the scenes to glue everything together are several other Azure services equally easy to set up and work with:

Azure SQL Database services provide a special SQL Server 2012 instance with automatic backup and cloud access through SQL Server Management Studio for easy data access.

Azure Storage provides a reliable storage mechanism for all of the call assets (videos, transcripts, decks) that is managed separately from the app hosting services so it can scale and perform independently for its own needs.

Azure Media Player is a cross platform media player that plays the video in any web browser and will use the best playback format for the device it is playing on. It was the only player that properly handled the closed captioning files across multiple browsers.

All of this was built using the .Net DNX Core 4.5.1 library with the newest MVC6 and Entity Framework 7 libraries. These technologies provided a quick turnaround time with database migrations, platform configuration targeting, and integration with bootstrap/gulp/bower front-end design tools for an attractive looking and responsive site.

Azure and You

The next time you build out a new web application or service, make sure to give Microsoft Azure a solid look. There are a lot of features that will help you get your app up and running in no time with powerful services to enhance your product!

Sean Patterson

Software Development Director

Sean Patterson is a Software Development Director at Fresh Consulting. By day he develops applications at Fresh with the motto "If you can dream it, I can build it." By night he's a java overlord (of the coffee persuasion), aspiring running junkie, spider killer for his wife, and silly daddy to his twin daughters.

You might also like...

7

Feb.

10 Factors for Choosing a CMS

There are dozens of Content Management System (CMS) platforms available to to help you manage the content, marketing, and SEO on your website. But with all the good options out there, how do you know how to choose the right CMS? Consider the following 10 factors when choosing your CMS. #1 Price Some CMS licenses start … Continued

2

Oct.

How Will the Oracle Java Licensing Changes Affect You?

Earlier this year, Oracle announced that beginning January 1, 2019, it will no longer provide support and updates to Java SE 8. Instead, the support and updates that have been included as part of the Java license will now be available only through a separate subscription support service. As we are now well into the … Continued

25

Apr.

How to Create a Fuzzy Search-as-You-Type Feature with Elasticsearch and Django

Tutorial: How to Create a Fuzzy Search-as-you-type Feature with Elasticsearch and Django Recently, I had to figure out how to implement a fuzzy search-as-you-type feature for one of our Django web APIs. I couldn’t find any comprehensive tutorial on how to build this specific feature, so I decided to combine multiple sources and document the … Continued