Microsoft Azure Web App Services Powering ChargeHub

Mogile Technologies and Microsoft moved ChargeHub from Parse.com to Azure Cloud and Web App Services to provide world class support to EV drivers and their OEM clients.

“We needed a cross-platform solution that would easily integrate with a scalable database system. We found that Azure Web App Services fit that perfectly. It connected easily with Azure SQL, which could also connect with many standard tools. Using the Azure Easy APIs, we were able to connect our iOS, Android and Web platforms to the database.” – Olivier Proulx, CTO Mogile Technologies

Core team:

  • Simon Ouellette (@EVChargeHub) – Chief Operating Officer, Mogile Technologies/ChargeHub
  • Olivier Proulx (@MogileOli)- Chief Technology Officer, Mogile Technologies/ChargeHub
  • Francis De Broux – Chief Operating Officer, Mogile Technologies/ChargeHub
  • Chris Coffin – Graphic Design and User Experience, Mogile Technologies/ChargeHub
  • Jonathan Duskes – Software Development, Mogile Technologies/ChargeHub
  • Joshua Drew (@jdruid)- Sr Technical Evangelist for Startups, Microsoft

Customer profile

Mogile Technologies is a private company founded in 2013 by a group of individuals passionate about electric mobility. Their mission is to increase the adoption of electric mobility by providing innovative online solutions. Mogile Technologies’ flagship product is ChargeHub, a platform that helps people choose their electric vehicle, get set up with charging at home and find charging stations on the go.

Mogile Technologies is in Sainte-Anne-de-Bellevue, Quebec Canada.

Problem statement

In 2013, it was difficult to find where the public charging stations were in Canada. Electric vehicle (EV) sales were growing, but the EV drivers couldn’t find public charging stations unless they already knew where they were. Even though most EV charging is done at home during the night (just like charging your cell phone) there are times when it’s important to know where the public charging infrastructure locations are for a boost (just like knowing where the cell-phone charging terminals at the airport are located). This is especially important during round trips that are at the edge of or over the EV mileage range.

The Mogile Technologies’ team was aware of the issue and started building an internal solution to solve this problem. They created a small database with a few hundred Canadian locations and launched their mobile application (“EV charger locator”) to the public. The mobile application was an instant success.

A few years later, the app was renamed ChargeHub and to align with the company’s goal of being the one source of information regarding electric vehicle charging for all stakeholders in the industry, from EV drivers to vehicle OEMs. Today, ChargeHub helps over 200,000 users find over 45,000 electric vehicle charging stations across North America.

As the public infrastructure and user base grew, it was clear that Mogile Technologies needed a strong cloud partner to provide world class support to EV drivers and their OEM clients. Mogile Technologies chose Microsoft Azure Cloud and Web App Services because of their growing support for diversified cross-platform environments.

Solution, steps, and delivery

Parse Migration

ChargeHub user profiles were hosted on Parse.com, but Facebook announced it was closing the Parse service. The Azure team found a way to migrate existing Parse services to Azure Web App Services. We used this method to migrate the ChargeHub application and data without affecting existing users.

The team did this in three steps:

1: Setting up DocumentDB using the MongoDB API

We setup a DocumentDB database on Azure by going to NEW > DATABASE > DocumentDB as a service for MongoDB.

Once configured, we used the connection string (found in Settings Section) to migrate the ChargeHub profile database from Parse.com to Azure DocumentDB via the Parse.com dashboard under “migrate to external database”.

2: Parse Server

The Azure team provided excellent migration documentation. We used it to migrate the data out of Parse.com and set Azure Web App Services to stand up our own parse server.

We created a Web App for hosting the Parse Server. Within the Azure Portal we clicked NEW > WEB + MOBILE > Web App to start the process.

Once our Web App was up and running we used Azure’s Continuous Deployment option to fork the Parse Server GitHub Repository.

Deployment is set up and ready to go. We pulled code down from the GitHub repository and published out to our newly created Web App.

Since our app was no longer using the Parse servers, we had to update to the latest SDK and provide a new ‘serverURL’ within our app.

Sessions need to be handled a bit differently as well. When the migration took place we needed the users to “re-login” and we added some new code to handle that.

During the migration there were some functions that were no longer active due to an increase in security level. One of these were the ‘find’ command for querying tables. This was no longer permitted on the client side to prevent reading of a full table. We ended up creating our own function to handle this on the server side.

3: Configuration

Within the Web App Application Settings, we configure some app setting keys for the Parse Server to connect to our Database as well as our application ids.

Data and Real Time Integration

There are over 45,000 charging ports and stations in North America. The only thing they have in common (besides charging vehicles) is how different they are from each other:

  • Charging ports are not consistent; there are many types of connectors and vehicles are not compatible with every connector
  • Depending the voltage and design, stations charge vehicles at different speeds
  • There is no standard payment method and most stations do not accept credit cards
  • Station size is variable; they can be as small as a box of cereal, making them difficult to find in a large parking lot or underground garage!

ChargeHub partners with charging station operators to connect directly with their backend system. The system aggregates and standardizes the data into an Azure SQL Database.

If all charging stations design were connected to the web, database updates would be relatively easy. But a very large percentage of stations are not connected to a backend so it is difficult to automatically detect their location and pertinent information. This is where the ChargeHub platform shines. EV drivers can add or update station information directly from their mobile apps or at chargehub.com. The ChargeHub team reviews every submission before adding it to the database. This helps ChargeHub provide the best station location information to its user and OEM clients.

Search Results View

Using Azure Web App Services running Node.js, we created a web portal to provide live status availability and payment integration. The Azure Scheduler Service updates this information every 5 minutes and a driver can access this information to charge and use the application to pay for the charging session.

The Azure App Services API App (programmed in JavaScript) integrated the Azure SQL Database and the mobile application. The mobile application client uses the API App to display the charging location data in real-time.

Search Results View

We used Azure Search Service to automatically index the ChargeHub Azure SQL Database. This simple setup required no additional development effort.

SQL Search Service

App Service Architecture Diagram

Other Migrations

Mogile Technologies main website (mogiletech.com) uses WordPress for content management and MySQL for content storage. These were moved over and setup on Azure using the Azure Web App Service for WordPress Hosting and the ClearDB MySQL hosted database option.

Customers Viewpoint

During this process there were other items that were needed to be considered when moving the applications over to Azure. These ranged from domain names to workflows to code editors. The Mogile Technologies team were pleased with the ease of use of managing multiple domains. The Mogile Technologies Platform uses Multiple Domains for all products and managing SSL’s can be complicated. However, when buying new SSL’s, the Mogile Team states

“Another extremely nice improvement you made recently is purchasing SSL certificates directly from the portal. This is amazing! The first SSL certificate I purchased was from GoDaddy (first year was cheap) but integrating it with Azure was extremely complicated. When I had to renew it, I just purchased a new one on the portal and the integration was seamless!”

The team also started using Visual Studio Code for Mac in order to code and edit some configuration settings within the app. The development team was extremely pleased with the performance and stated:

“I’ve started using Visual Studio Code for Mac in the last few weeks (previously used Atom on macOS). I found Atom is much too heavy and slows down my machine for no reason. VSC has some nice features out of the box (like automatically reading npm package versions!). I haven’t dived so deep in all its features, but so far I’m impressed with the light-weight and simplicity it offers.”

Lessons Learned

Overall the process of moving to Azure was fairly smooth. There was an issue during data migration where an error occurred that stated “Request Rate is Too Large”. This stalled the data migration to DocumentDB a bit. At the time we did not know what the error meant or if our application had to be changed. The DocumentDB Support team quickly resolved this by letting us know that this error was by design and we could throttle each of our collection tier in order to finish the process.

Resources

Leave a Comment

(0 Comments)

Your email address will not be published. Required fields are marked *