AWS for Non Techie's!
AWS is the premier cloud provider, they sell the infrastructure building blocks to build modern apps.
- Today, most applications run in the cloud - e.g. on rented serversFun Fact: AWS made $35B last year selling them
- AWS products fit into 3 buckets:Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS)
- AWS provides a web UI to provision and configure servers, but bigger teams will use their API to do this through code instead
- Some of AWS’s most popular products are EC2 (simple compute), S3 (simple storage), and RDS (a managed database)
There are other big cloud providers – namely Google (GCP) and Microsoft (Azure), but AWS holds something close to a 33% market share. If you know or work with a developer, chances are they’ve used AWS.
CLOUD SERVICES: BasiCs
To understand what AWS actually does, you need to understand the cloud in general. For a more in depth explanation, check out the Technically post about cloud here.
There are basically two ways to run an app - locally or over the internet. In the “old” days (i.e. my 9th standard), most apps ran locally. For example, all of the computing that Excel did, both the “graphical” frontend you interacted with, and all of the math that happened behind the scenes - took place on your laptop. Even if Excel did sometimes communicate with the web, it was only to pull in a data source and get updated. You usually paid a one time fee to buy the software, or license it yearly.
Things have changed a lot since then. Now, most software runs over the internet - you access it via your browser. So what does it mean exactly for an app to run on the web?
Cloud-based apps have most of their code deployed on a big, powerful server in someone’s data center - not on your computer. When you load up Twitter, your browser is sending a request to a web server - that server runs a bunch of code, generates your feed, and then sends back a bunch of HTML that makes up what you see. The same thing happens when you use Yahoo Mail or Gmail, or any other cloud-based service.
Web servers that handle and route requests from a browser are just one very small piece of a much larger puzzle. Most apps need a database; a lot of apps need multiple types of databases; and as apps get larger and more complicated, they start to require unique and specialized services customized based on your product. A few examples:
- A data warehouse for analytics
- Messaging services for streaming data
- Video encoding and decoding
- ETL tools for moving data around
AWS has solutions for all of these, and also like 500 more things. The hard part is organizing them.
IAAS, PAAS, AND SAAS
AWS literally has hundreds of different products, and someone is using all of them, today I am going to focus on general cloud.
1. Infrastructure as a Service (IaaS)
IaaS is the basic, lower level infrastructure that you need to build an app. Generally, these are:
- Basic compute on a virtual machine (AWS product: EC2)
- Basic storage (AWS products: S3, EBS)
- Basic networking (AWS products: Route53, VPC)
With EC2 (which stands for Elastic Compute Cloud), you’re just getting a virtual machine - you will need to deal with upgrades, sizing correctly, and backing your data up.
2. Platform as a Service (PaaS)
PaaS is the next step up - these services are more expensive, but make life easier with operational tasks that you’re still on the hook for with IaaS. A few examples:
- Managed databases (AWS products: RDS, Dynamo)
- Managed data warehouses (AWS products: Redshift)
- Managed compute (AWS products: Lambda, Elastic Beanstalk)
- Managed machine learning (AWS products: Sagemaker, Rekognition)
- Other misc. managed stuff (AWS products: Elasticsearch, SQS)
These services are called “managed” because AWS takes care of upgrades, backups, handling downtime, and scaling up and down.
3. Software as a Service (SaaS)
- AWS Quicksight - a data visualization tool
- AWS Forecasting - time series forecasting as a service
- AWS Cognito - identity management as a service
Products like RDS and Redshift are generally recognized as incredibly useful, reliable, and just generally get the job done as well as anything else on the market.
Even medium sized startups will often be using 11+ AWS services from the get go, and more established businesses can easily go past 100. Let’s imagine we’re a startup that sells technical literacy and education software to tech businesses. We’ve got a basic web application, and a little data warehouse for your growth to report basic company metrics. We might be using:
- EC2 to deploy our web app in a few Docker containers
- Lambda to process form submissions on the marketing site
- EBS for block storage connected to our EC2 instance(s)
- S3 to store backups and files for the app and marketing site
- Route53 to connect our domain name to our AWS servers
- RDS (Postgres) as our managed database for our web app
- Cloudfront as our CDN for serving assets quickly
- VPC to isolate our resources into a private, secure network
- Backup to back up our data across services
- Redshift to store analytics data as our data warehouse
These are just the AWS products that you’ll be using - but there are other parts of the ecosystem that help support this product usage; . A good example is IAM, or Identity and Access Management - it’s an AWS utility that allows you to allocate different permissions across your organization. You’d use this to make sure that the right teams have access to the right resources, and restrict mission critical resources to developers who know what they’re doing.
If all of this seems like a lot, it is. And it costs a lot too - probably $10K+ per month. AWS makes most of its money through very very large enterprise clients. Lyft spends $300M per year on AWS.
PRICING MODELS AND CONFUSION
There are basically two pricing schemes:
1. Pay per time used
Some AWS services get charged per hour, with different prices depending on how “big” the resources you’re using are. The best example of this is EC2 (pricing link here), AWS’s basic IaaS compute product. The t3.micro instance with 1GB of RAM costs $0.0104 per hour, the t3.small instance with 2GB of RAM costs $0.0208 per hour, and so on and so forth. In general, the more powerful the machine, the more you pay. If you shut down your machine, you cease to pay for it.
2. Pay per resources used
Some AWS services give you the option to pay per compute or storage usage as opposed to time. DynamoDB, AWS’s managed NoSQL database (pricing link here), costs $1.25 per million write requests, and $0.25 per million read requests. A bunch of AWS products give you options for both of these pricing models, and some have even wackier ones.
If you’re planning on using AWS for quite a while (1+ years), you can get steep volume discounts by committing to using resources for a longer period of time – called Reserved Instances. These kinds of commitments are very valuable to AWS, because it makes capacity planning a hell of a lot easier - so these discounts can often climb up past 50%. AWS recently unveiled a new program called “Savings Plans” that slightly adjusts this model.
If you’re using 15 different AWS services (and as we saw in the previous section, this is not at all uncommon), you’re dealing with 15 different pricing models. There are entire companies that exist just to help you understand and lower your AWS bill.
Deeper look!
DigitalOcean is a competing cloud provider with AWS, and a big part of their value proposition is simpler, more predictable pricing. If that sounds like a weird thing to differentiate on, it’s because you haven’t worked in commodity businesses - in IaaS, pricing transparency is a huge selling point for smaller businesses.
MORE CLOUDS AND MORE MONEY
The infrastructure as a service landscape in general kind of splits into two distinct segments:
1. High end built for scale
This is AWS, Google (GCP), and Microsoft (Azure). All three of these companies had extensive experience building data centers for themselves, and then pivoted that towards a public facing product. And all three clouds have the benefit of getting bankrolled by billions of dollars of cash from their parent companies. IBM, Oracle, and Alibaba fit in here too.
AWS completely dominated the market from the start, but today things are a bit more evened out. Plenty of startups and companies happily run their infrastructure on GCP or Azure. GCP’s BigQuery serverless data warehouse please check that out.
2. Low end built for small projects
This is Hetzner, Scaleway, OVH, Linode, and Vultr – if you’ve never heard of them, you’re not alone. They sell very cheap, very barebones stuff mostly oriented towards small, personal projects or VPNs. Because they don’t have to deal with hyper scale, managing capex is slightly more do-able, and these can be nice medium margin businesses.
The one cloud (well, IaaS cloud) missing from this list is DigitalOceanAll things considered, a DigitalOcean server is generally slightly cheaper than the equivalent on one of the big cloud providers - but the company also provides more advanced products like Load Balancers, Managed Kubernetes, and Managed Databases.
Comments
Post a Comment