The HBS Entrepreneurship Club is starting the year with a series of articles written by Fellows from Pear VC. They’ll cover a wide range of topics from the US Seed stage venture landscape to predictions for the year and deepdives on building your startup on blockchain and cloud hosting!
This feature is authored by Pear VC Fellow John Keck.
Questions or ideas? Reach out to Jad — Pear Fellow and HBS Entrepreneurship club’s leadership team.
If you’ve ever looked in to hosting an application in the cloud you’ve undoubtedly been bombarded by a neverending alphabet soup of acronyms.
AWS, EC2, GAE, RDS…
Even the product names, like Elastic Beanstalk of DynamoDB, don’t help much with understanding what these things do. As an aspiring founder, hobbyist programmer, or just someone in the tech industry, decoding these acronyms and names is extremely important for staying ahead of the curve in the cloud-based world.
As Amazon grew in their early days, they continually needed more and more server space to keep up with consumer demand. Every time they outgrew their existing capacity, they would have to buy another server, install it, set it up, and deploy their application on it in their physical data center. With an ever larger data center, they decided to rent out unused space to other smaller companies that weren’t large enough to require an entire server for themselves. This server capacity rental became Amazon Web Services (AWS) and gave way to the cloud computing revolution.
AWS first allowed you to rent out different sizes of “virtual machines” (VMs) hosted on one of their servers based on your needs. These virtual machines are basically mini-servers that allow users to access your application through the internet. Amazon named this product Elastic Cloud Compute (EC2) since you could “elastically” move your application to a smaller or larger virtual machine depending on how much traffic your application received. Google and Microsoft followed suit with their own “compute” products by releasing Google Compute Engine (GCE) and Azure Virtual Machines. These products are collectively called Infrastructure-as-a-Service (IaaS) as these companies are allowing anyone to use their existing data center infrastructure instead of having to build their own. Although the market is dominated by Amazon AWS, Google Cloud Platform, and Microsoft Azure, there are many other competitors in the IaaS space with one of the most popular being DigitalOcean with their Droplets product.
While renting server space is certainly much easier than buying a server, setting up the virtual machines in EC2, GCE, and Azure VMs requires a significant amount of server knowledge. Although the infrastructure is provided, engineers have to spend a lot of time setting up their mini-server before an app can be hosted on it. To address the fact that many people don’t have the know-how or desire to set up their own mini-server, Amazon, Google, and Microsoft rolled out new Platform-as-a-Service (PaaS) products. Instead of providing infrastructure alone, PaaS gives users an already set up VM platform that can host an application immediately. Amazon’s Elastic Beanstalk (EB), Google App Engine (GAE), and Azure App Service all allow developers to upload their app and deploy it within minutes. These products also allow auto-scaling so the platform automatically increases the server capacity when your app gets more users. As with IaaS, PaaS is dominated by the Big 3 with the most startup popular competitor being Heroku.
tl;dr — “Compute” products allow you to rent server space from someone else’s data center. Want to set up your own server configuration? EC2, Google Cloud Engine, Azure VMs, and DigitalOcean Droplets are you for. Want to deploy an app ASAP? Elastic Beanstalk, Google App Engine, Azure App Service, and Heroku are want you’re looking for.
Now that you’ve got your app hosted in the cloud, you’ll surely need to store some data! Not surprisingly, the same cloud providers that offer virtual machines to host your app also provide cloud databases that can connect directly to your app. Similar to the PaaS products for application hosting, cloud databases require little to no setup since the server is automatically configured to host your database.
There are two main types of databases: relational and document. Relational databases are a collection of different tables similar to an Excel spreadsheet with columns and rows. These databases are the most commonly used and are interacted with using SQL, a simple query language. Amazon’s Relational Database Service (RDS), Google Cloud SQL, and Azure SQL Database are the top players in the relational database ecosystem. These cloud databases allow the user to select exactly what SQL-based database they would like to use such as Postgres and MySQL and deploy them instantaneously.
Document-based databases, also called NoSQL databases, are a collection of different data objects similar to a JSON data structure. Although newer than relational databases, these databases are growing quickly in industry and are interacted with using proprietary query languages for each specific database. Amazon’s DynamoDB, Google Datastore, and Azure Table Storage are the major competitors in the NoSQL space but many companies are trying to compete. MongoDB is the most popular hosted NoSQL cloud database outside of the Big 3.
tl;dr — Cloud databases are hosted on automatically configured special servers and connect directly to your app. Want a relational database? Try Amazon’s RDS, Google Cloud SQL, or Azure SQL Database. Spice it up with a little NoSQL? Give Amazon’s DynamoDB, Google Datastore, Azure Table Storage, or MongoDB a shot.
Suppose you’re building the next great photo sharing app Instaounce. You’ve got the app hosted and a cloud database connected but where do you store all the images? Turns out a traditional database isn’t the greatest place to host images in the cloud. A special product called cloud storage fits the bill for storing everything else that doesn’t fit nicely into rows and columns such as images and files. Amazon’s Simple Storage Service (S3), Google Cloud Storage, Azure Blob Storage, and DigitalOcean’s Spaces offer a managed, cloud storage solution for your needs.
tl;dr — Have images or files you need to host in the cloud? Use cloud storage products like Amazon’s Simple Storage Service (S3), Google Cloud Storage, Azure Blob Storage, or DigitalOcean’s Spaces.
While this may seem like a lot, this is just the tip of the iceberg in terms of product offerings in the cloud. Just check out AWS’s products pages and you’ll be properly overwhelmed. That being said, most apps are some combination of compute, database, and storage products described here. To get your feet wet, pick one product from each of those three categories and find the documentation online. Most have a ‘Getting Started’ or tutorial section that will allow you to see what the actual hosting process looks like. Then, write the next billion dollar app and start hosting it in the cloud!