The Azure Tech Behind MomCharts
Last week, my company published the public preview of MomCharts.com, our baby tracking software in the cloud. One of the design goals for the software was make sure it was cross-platform, cross-device, and as maintenance free as possible. My company (Heavy Code) is a member of the BizSpark program by Microsoft so we’ve got access to top tier tools and, most importantly, Windows Azure, at no cost to us.
Pieces of Azure In UseThere are a number of Azure services MomCharts runs. The core database is built on SQL Azure since we have a significant background in relational databases and SQL Server in particular. By using SQL Azure and all of the tools typically used with on-premise SQL Servers, we could build our database quickly yet reduce maintenance of the servers themselves to near nothing.
The web front-end to MomCharts is MVC 4 running on ASP.NET 4.5. We deploy this as a Web Role to Azure Cloud Services. There were a couple reasons for choosing this option over an Azure Web Site. The biggest reason is that Azure Web Sites doesn’t support custom SSL certificates, meaning we couldn’t have https://www.momcharts.com — a deal breaker. Rumor is they intend to support this sometime in April or May.
We also have infrastructure in place to use Azure Mobile Services. We’re not yet using the service, but we plan on lighting up features at a later date that utilize it. This required a change mid-development in the way our database was designed, but now that it’s done, we can move to it easily.
Our blog is hosted on Azure Web Sites, running WordPress backed by a ClearDB MySQL database. We’ve scaled this to run in shared mode so that we can enable the custom domain name (blog.momcharts.com). The blog is still new, so if Azure Web Sites supported custom domains for the free mode, we’d move back and save the monthly charge that shared require.
Add-OnsWe utilize a number of add-ons purchased through the Azure Store. Behind the scenes are two incredibly useful services: New Relic and SendGrid. New Relic is an excellent monitoring tool for web servers and when purchased through Azure, there is a significant cost savings. Currently, New Relic is not available for Azure Web Sites, which is another reason we went with a Web Role.
We also use SendGrid for transactional email. The have a NuGet package that makes integration into your .NET application with Visual Studio cake.
On the user side, we use the Cloudinary service to handle thumbnails for our users. Yes, we could have built this ourselves, but with a service like Cloudinary and their NuGet package, it’s another high value feature with minimum coding required.
In an upcoming feature, we’ll implement the MongoLab MongoDB-as-a-service add-on. At this point, SQL Azure is working great and we’ll continue with it for our core database, however there is a high likelihood of a massive explosion in data that should work better in a NoSQL style database and its flexible schema.