Web Apps in a PaaS World

Introducing PinotageToDo

Alastair Christian
Alastair Christian
2 min readDec 7, 2017

--

From humble beginnings little more than a decade ago, cloud computing has become almost ubiquitous in the startup world and is growing in importance in the enterprise market. The ability to quickly and economically create and scale infrastructure for your applications (IaaS) led the way and today all the major players have taken the idea further by offering Platform as a Service (PaaS) and Serverless computing. As developers we are increasingly removed from the physical hardware our applications run on.

At DataDIGEST we wanted to be able to compare the PaaS offerings of the major players: Amazon, Microsoft and Google. To do this I have chosen to implement a basic sample application and use this to explore the capabilities of and differences between each of the PaaS offerings: AWS Elastic Beanstalk, Azure App Services, and Google App Engine. The application is a single page ToDo list using plain old JQuery on the client talking to a ASP.NET Core 2.0 API for persistence.

Credits

Before going further, it is important to give credit where it is due. Very little of the sample application is actually my own work. The ToDo list app itself is using ToDoMVC’s JQuery implementation. Fortuitously, Microsoft’s ASP.NET Core Web API tutorial also uses a ToDo list as its example. I have modified each to provide a full example.

Source

The source code is on Github: https://github.com/alastairchristian/PinotageToDo

Requirements

To allow us to perform an objective comparison between the platforms we need to define the minimum platform requirements for our app. We are going to assume that our app is production-ready and may get plenty of users around the world. Therefore we are going to want it to be able to auto-scale (if possible) because we are lazy and don’t want to handle any sys admin if we can help it. Now, our app doesn’t do much and we won’t be placing a great strain on the server so we can choose something fairly small for now, 1 core will be fine and around 2GB of RAM will keep things humming along. We will assume the app is running 24 x 7.

So, in summary:

  • 1 Core
  • ±2GB RAM
  • Ability to Auto Scale
  • Always available

Because it is PaaS we can change this easily enough if we need more resources in the future.

For cost comparisons we will always look to host somewhere in Western Europe.

Note that our initial example app will be using an in-memory database implementation to allow us to focus on the basic web app first. The requirements of an in-memory database are not considered in the list above.

Articles in this series

  1. Introduction (this article)
  2. Introducing the PinotageToDo App
  3. Building an ASP.NET Core Web App in Visual Studio Team Services
  4. Hosting an ASP.NET Core Web App in an Azure App Service

--

--