Gábor Osztroluczki

Gábor Osztroluczki

fellow of Bridge Budapest, Prezi, San Francisco, 2016

Servers in the Cloud

All of them shared their inspiring stories how two buddies really figured it out in a nearby bar (El Capitan) and the café laundry (BrainWash) to rent their inflatable mattress for a fistful of dollars, but they also needed an interface to do so and it had to be figured out how to create that.

Or the story that one of the car-sharing companies missed a pretty nice chance because their leader was not willing to change the concept a bit. Now, people in the West would not use Uber or Lyft as a default expression for car-sharing.

Surrounded with such stories and the romance of the start-up golden age, one cannot help wondering what one would do and what one would use to launch one’s start-up. Which idea could be the most viable? How would the business model canvas look? If it involves some sort of software development, then how could one put together a prototype and MVP quickly? Where should it be operated?

Amazon, Google, Microsoft. All of them offer developers the chance to exploit their robust infrastructure and many years of experience.

What would a team trying to implement an idea need?

It will probably need IT development, but what kind? It might happen that somebody has already prepared the necessary tool, such as an online shop. Shopify, Magento are quickly and easily deployable services for that. You can have Google MailMicrosoft Outlook Live for management and communication. SlackHipChatHangout for quick messaging. If the product has already launched and it is worth founding a company, then one can use MiniCrm for invoicing and managing customer relationships. There are more and more online and customisable services. The optimal tool is different in each country.

What happens when this team starts a development that could grow in time into a service similar to those listed above? Well, there is a great deal of options.

Questions worth asking:

  • Do I use an existing service or implement it?
  • Is it worth developing something that is already available?
  • Is it still worth making this thing over time?
  • How can one shorten the Time-To-Market period?
  • Is it worth creating an entire IT infrastructure or should everything be with a single provider (or several)? Should it be a hybrid one where there is a core infrastructure and all the significant capacities come from providers?

1,000 issues, 1,000 responses. Let’s make a data collecting application, as IoT is around the corner. Let’s assume that data flows from these tools. These need to be saved and processed. It should also have a web interface, because it is good and one should observe data somewhere.

Let’s see what can we choose from:

Amazon AWSGoogle Cloud PlatformMicrosoft AzureHeroku. There are a lot of other options, but we are going to check these here.

What do we gain by having our things operated at cloud provider?

  • Scalability,
  • monitoring,
  • services such as Big Query for analytics, or the Hadoop/Spark/Pig to process a lot of data.

Let’s not be so hasty! Let’s take a simple MVP. A prototype that works and is a good base for the later ecosystem.

Let’s take a Spring Boot application, which will be the basis to receive data from the IoT tool and store those in some sort of a database. Our application should be run in n copies in case interest in them increases suddenly. The application can include the surface appearing in the browser or it can also be at a static storage place, such as S3 or Google Cloud Storage, Azure File Storage.

Heroku

It is a simple Spring Boot application and runs happily on a single Heroku dyno. Completely free of charge. For $7 one can get monitoring and all sorts of metrics, 512 MB RAM for the backend app and a total number of 10 workers (processes) can run simultaneously which is quite good for a hobby project. As soon as it leaves the hobby category, one dyno costs $25 a month.

A database is a completely different matter. One has to pay for a good database service or one can operate a server somewhere. Hiroku offers Postgre SQL servers for $9 each. The best thing in this is that if the service goes viral, then one can change to a scaled Postgre SQL package at any time, but it starts at $50. Heroku takes over the tedious operational tasks in return and one can get 64 GB of storage space at the database server on top of 1 GB RAM.

I would run the Spring Boot app on n dynos on Heroku, and add the Postgre SQL database as a support to it. I would store the images and the static part of the website on Amazon S3, because Heroku also runs on Amazon. They should be neatly sitting in a single data centre. Less data transfers, faster operation.

Google

Let’s assume that the designer tends towards Google for any reasons. I would understand that one can get a transparent interface, mailing, collaboration, documents and spreadsheets, storage from a single provider. It is comfortable but also risky to engage one provider for everything, but chances are rather slim that Google would go bankrupt in the foreseeable future.

The limits are endless here. There is everything from virtual machines through machine learning and Big Query analytics to App Engine. Google however tries to be nice with discounts if one uses Compute Engine or Managed VM. This could be a bit confusing at first glance but is still calculable.

Google has indeed flexible pricing and you pay what you use. There are so many options that I do not even attempt to write down the estimated prices here. For the sake of example, I write only that a java backend app running in a Managed VM, which is a mobile app calling and checking a few things, costs appx. $3-$7 a month.

What is worth knowing about the pricing of Google Cloud Platform is that one can set spending limits for resources. Yes, but the so set limit is without VAT. One should count with an amount increased with the VAT rate applicable at the residence of the user. This increases the “limit” with 27% in Hungary.

I would run the Spring Boot app in the AppEngine. Static things can go to the Google Cloud Storage. One has to decide here if the database is going to be stored in some sort of database manager on a virtual machine or data are stored directly in one of Spark/Pig/Big Table.

Azure

One cannot finish without mentioning Microsoft. Azure is surprisingly comfortable and well documented. One can find real-life examples in Hungarian on prog.hu.

It offers the opportunity to run completely unique virtual machines, use the App Service through serving static pages (File Storage), where one runs the application only and hasn’t got almost any control over the underlying virtual machine. One can do virtually anything in a moment in Azure. One can use premade domain controllers, hide virtual machines on private virtual networks, and use virtual routers to connect all these to our own real infrastructure operating in the office. One can launch a web shop using a premade template. I have never seen a more comfortable and usable interface than Azure. One can blow many hundreds of Euros within moments while still smiling. It is a real treat to anybody who likes to play with infrastructure. Microsoft also knows that and grants anybody a budget of 170-200 Euros to try it. You pay for the time you use the resources. It is perfect for experimenting and offers comfortable operations. It is digital heroine.

The App Service is a good place for our application. It runs there neatly. Azure File Storage is perfect for static content. Microsoft is happy to provide you with a turnkey database server, MS SQL of course. Or the dev ops colleague can put together any other database manager on the virtual machine.

Amazon Web Services

Amazon. Jeff Bezos and a few of his colleagues were sitting in a room and somebody came up with the flame of intellect or had a spark popping out… The point is that they realised: having become the largest retailer on the world has made them buy and operate a lot of hardware. Its total computing and other capacity was however not exploited most of the time. They solved that anybody could buy computing capacity from them. They were the first one to manage to take the services that are actually cloud services to the public. EC2, S3, Elastic Search and many other services.

Amazon was the first, so a lot of start-ups started to use it back then. It has a modest user interface. It is a far cry from Google Cloud Platform or Azure. They however offer an unbeatable price if you buy the capacity for a year ahead. Members of the dev-ops team have to do a lot more technics, but they offer the best for a data collecting app with their competent colleagues.

For $38 one can get 100 GB of redundant storage space to store our files. One can use it to store images uploaded for the services of our start-up. This price includes a machine with a dual core processor and 4 GM RAM memory. This VM costs $29 from the $38.

One has to give up on the comfortable dyno, App Service or App Engine concepts in return. Dev ops however does not fall into despair! Kubernetes and containerisation (e.g. Docker) on the EC2s can do almost anything.
Summing it up, Amazon is the most cost-efficient, but will also make the dev-ops team member work. Azure is the most comfortable for the time being (at least for me). And Google can offer the “office”, i.e. mailing and the computing capacity. Developed big data services such as Big Query, teaching capacity for machine learning or the trained Tensorflow for voice and text recognition and understanding. Google analytics and searching and machine learning experience is available to everyone to manage immense data quantities. We live in a wonderful age. And Heroku is as simple as ABC. It is perfect for simple processing/storage applications at the beginning.