Developer

Microsoft Technical Case Studies

Vacay required scalable hosting for two Web domains which provide information on their offered services. In addition, Vacay needed a way for their developers to collaborate and distribute builds of their mobile application for Android devices. Through a collaborative effort with developers from Microsoft, Vacay was able to achieve a solution for both of these issues using Microsoft Azure Web App Services along with Visual Studio Team Services and Hockey App.

Customer Profile

Vacay Coupons is a service that allows users to receive exclusive sales offers and gifts from retailers at port locations across the Caribbean and Alaska. Vacay provides the user with pertinent information on their phone without the use of Wi- Fi or mobile data. In addition, Vacay allows guests to review coupons, discounts, and gifts from stores in ports so that they never miss an opportunity to bring home the perfect souvenir or memento.

Through the app you can opt-in to a selection of deals from local retailers as well as receive pertinent information about the port that you are visiting. Looking for some interesting history about the island? How about about the currency exchange? Vacay coupons helps you feel confident that you are getting the very best while on shore during your vacation.

Problem Statement

Vacay provides retailers an ability to communicate directly with customers in port areas. These areas often suffer from limited access to the internet. As such, Vacay provides a solution which communicates bidirectionally to/from customers who run their mobile application using access points (kiosks) within local shops. Upstream data from these retailers to Vacay’s analytic hub (MixPanel) requires pass-through to a scalable web application. This is to be hosted alongside an informative site which offers white-labeled services based on the technology used by Vacay to communicate with mobile devices via Bluetooth, Wi-Fi, P2P, and iBeacon.

In addition, Vacay requires a mechanism to assist in the development of their Android Application for mobile devices. Developers are located in the United States and Mexico which can cause issues when syncing work between the different development teams. It can also be difficult to distribute daily builds to testers and stakeholders. Vacay seeks a solution which can assist collaboration while providing stakeholders a way to gauge overall project status along with the development of a friction free method for daily build distribution.

Solutions, Steps, and Delivery

1. Analyze and Improve Existing Project Architecture
Development had began on this project shortly before engagement with Microsoft. A diagram of the existing architecture can be seen below:

This diagram shows two informational web pages (WordPress instances) running on two individual Virtual Machines running IIS. One of these VMs also runs a REST API and MVC Application which was to service their proposed mobile appliction. Development work was being done in an instance of GitLab running on a third Virtual Machine.

Upon engagement, we noticed an opportunity to reduce usage of Virtual Machines (IaaS) to achieve functionality that could be provided with less overhead and cost using Azure Web Apps (PaaS).

We created a proposal for shifting existing resources into three Azure Web Apps with development work being done using Git under VSTS. This reduced us from 3 VMs, to 3 Web App instances along with the addition of an Azure Mobile App Service with Notification Hubs to provide enhanced funtionality of the Mobile application.

A diagram of the newly proposed architecture can be seen below:

We faced a minor issue with the migration to PAAS because network quota was
eventually maxed out on the VacayCoupons property. This was solved by scaling
up the Web App instance to an S1 and enabling Auto-Scale. Since applying
Auto-Scale, there has not been an incident since November 2016.

2. Create Development and Distribution System for Android Mobile Application
The Vacay development team has been tasked with creating a mobile
application targeting Android devices. This created a need for a collaborative
code repository to provide build integrity for developer teams located in the
United States and Mexico. Stakeholders were also interested in learning how
their builds could be more easily distributed using the HockeyApp platform.

3. Integrating Azure App Services into Android Mobile Application
The Vacay mobile application requires the use of an GSM Proimity Platform SDK
provided by GSM Media Group. This SDK provides the ability for Vacay to
communicate from Kiosk to Mobile App using Bluetooth, Wi-Fi, P2P, and
iBeacon. When a device is detected as in-range of the kiosk or any available
proximity point, a notification is able to be pushed to the device using Azure
notification Hubs. Usage data is also captured and stored in an Azure Mobile
App Service Easy Table.