Cloud computing
Once upon a time...
Infrastructure used to be hosted on-premises (and still is in many cases)
Some advantages…
- Under your team's supervision
- More control over security
But more disadvantages… - Breakdowns? Your responsibility!
- Keeping everything up-to-date? Your responsibility!
- Managing access? Your responsibility!
- Need more space (scaling)? Guess what… your responsibility!
Nowadays...
Infrastructure on-premises still exists, but gets less common every year
Cloud computing: allocation of one, several or all parts of your infrastructure to the management of a third party
Biggest advantage: less responsibilities, so less worries
3 main types of cloud computing 'as a Service'
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
- Software as a Service (SaaS)
IaaS vs. PaaS vs. SaaS
Infrastructure as a Service (IaaS)
- Third party provides you with infrastructure services, like storage and virtualization, as you need them, via a cloud, through the internet
- You provide: operating system, data, applications, middleware and runtimes
- No on-site datacenter anymore
- Access and control of infrastructure using an API or dashboard
- Big flexibility: scaling up or down easily
- Low overhead and no maintenance cost
- Public cloud providers: AWS, Microsoft Azure, Google Cloud, etc.
Platform as a Service (PaaS)
- One step further than IaaS
- You provide: data and applications
- Provider hosts the hardware and software
- You write the code, build, and manage your apps, but you do it without the headaches of software updates or hardware maintenance
- PaaS providers: AWS Elastic Beanstalk, Heroku, Red Hat OpenShift, etc.
Software as a Service (SaaS)
- Cloud application services
- Delivering an entire application that is managed by a provider, via a web browser
- Software updates, bug fixes, and general software maintenance handled by provider
- Users connect to the app using an API or dashboard
- No installation of the software on individual machines
- Ideal for small businesses because of relatively low cost
- SaaS providers: Dropbox, Salesforce, Google Apps, Red Hat Insights, etc.
Scalability and Elasticity
Vertical or horizontal scaling
- Scaling up / vertical scaling: adding more resources (additional CPU, memory, etc.) to an instance that already has resources allocated, or removing resources
- Not always easy: often requires a redeployment of an instance or powering down to make the change
- Not always easy: often requires a redeployment of an instance or powering down to make the change
- Horizontal scaling: add additional instances that can handle the workload (extra VMs, container pods, etc.)
- Distribution of users over instance: using a load balancer which will choose the instance the user will connect with
- Advantage over vertical scaling: no need to make changes to the virtual hardware on each machine, but rather add and remove capacity from the load balancer itself
Load balancing
Load balancer:
- Will distribute the incoming traffic over the available servers (acts as a reverse proxy)
- Similar to a traffic cop at a crossroads
- Goal:
- Make the overall processing more efficient
- Optimize the response time
- Avoid overloading of instances
Elasticity
Elasticity: the workload’s ability to scale up and down
- Static scaling: provisioning resources to account for the “peak” even though the underlying workload is constantly changing
- Elastic scaling: allow for the resources to be added on demand, while ensuring some buffer room
- Big advantage: only pay for what you need