- Buzzwords 1: Cloud
It's someone else's computer.
Cloud computing is an on-demand, utility-based model of computing.
- Horizontal - More instances
- Vertical - More CPU and RAM
When scaling horizontally, you need to make sure that the traffic and load is shared across instances. That's where load balancers come in. Most cloud platforms which offer horizontal scaling will have load balancers to take care of that for you.
Buy servers, rack 'em, stack 'em.
Example: Virtual Machines (AWS EC2, Azure VM), Storage (AWS S3, Azure Blob Storage)
Example: Dropbox
If you have an app that needs a webserver and a database, the cloud provider takes are of configuration. You bring the code. The provider takes care of provisioning, configuration, security, and scale.
Example: Azure App Service, Heroku, AWS Elastic Beanstalk, Google App Engine
The cloud provider handles backend. Real time apps with user auth with no backend code 😉.
Example: AWS Amplify, Google Firebase
FaaS is a way of providing backend servers on a as-used basis. Instead having your service run all the time and paying by the amount of time, you can pay ny the number of times your code is run and how many compute units it consumes.
Example: AWS Lambda, Azure Functions
Why rent another person's home? Why rent a car?
Why is everyone and their moms moving to and developing on "the cloud"?
The answer to all of those questions is money 💰 or lack thereof.
It more economical to let someone else buy/upgrade/replace land, buildings, servers, bandwidth and hire/manage staff to maintain those things than to do it your self.
It is also easier to scale, handle spikes and drops in demand with cloud computing.
Cloud where you can just sign up with an email and credit-card.
You run services with cloud computing paradigms on your own hardware.
Mix of public and private cloud.
Mix of public cloud. For example: using both Azure and AWS to host services.
Component | On-Premises | Infrastructure as a Service (IaaS) | Platform as a Service (PaaS) | Software as a Service (SaaS) |
---|---|---|---|---|
Application | ❌ | ❌ | ❌ | ✅ |
Data | ❌ | ❌ | ❌ | ✅ |
Security | ❌ | ❌ | ✅ | ✅ |
Runtime | ❌ | ❌ | ✅ | ✅ |
Middleware | ❌ | ❌ | ✅ | ✅ |
OS | ❌ | ❌ | ✅ | ✅ |
Storage | ❌ | ✅ | ✅ | ✅ |
Networking | ❌ | ✅ | ✅ | ✅ |
Servers | ❌ | ✅ | ✅ | ✅ |
Virtualization | ❌ | ✅ | ✅ | ✅ |
Data Centers | ❌ | ✅ | ✅ | ✅ |
❌ Your problem
✅ Someone else's problem
Case study: Dropbox move to on-prem.
Dropbox cut expenses by at least 75,000,000.
What does a cloud engineer do?
They architect, build, and maintain cloud resources while optimizing cost, and performance.
Cloud Engineer tech stack:
- Cloud services for your vendor (Azure, AWS, etc..)
- Linux
- Terraform
- Ansible
- Python / Node.js / Go
- Kubernetes
- Jenkins
- Networking
- Git