Cloud basics
High Availability
Based on AWS, Azure and IBM ressources
Abderrahmane Smimite
"Everything fails, all the time."
Werner Vogels, CTO, amazon.com
My basic
ten
steps
1 - Business drives HA requirements
Availability is usually a part of the SLA (Service Level Agreement)
the 9s: level of availability
Nines | percent of uptime | Max downtime/ year | eq. Max downtime/day |
---|---|---|---|
1 | 90% | 36,5 days | 2,4 hrs |
2 | 99% | 3,65 days | 14 min |
3 | 99,9% | 8,76 hrs | 86 sec |
4 | 99,99% | 52,6 min | 8,6 sec |
5 | 99,999% | 5,25 min | 0,86 sec |
simple calculator: https://uptime.is
2- Define your Objectives and ressources
Recovery Time Objective (RTO)
Recovery Point Objective (RPO)
How much money/time can you invest to meet these objectives
How quickly must the system recover?
How much data can you afford to lose?
Source: wikipedia
3 - Keep-it-simple strategy
Complex systems:
- make it harder for people to understand, manage and troubleshoot
- increase the risk of failures
- could make the fault recovery more difficult and in some cases more risky
- ==> Less is more
4 - Understand your application and environment
Consider deployment constraints during the first design stages (DevOps)
Fault tolerance
Built-in Redundancy (self-healing) of an application component
Scalability
Capability to accommodate to growth without changing application design
Recoverability
Process, policies and procedures related to restoring service after catastrophic event
"Assume everything fails, and design backwards"
Implement redundancy when possible in order to prevent single failure from bringing down the entire system
Golden rule:
5 - Design your system while checking the state of the art
Understand design patterns, clustering, Replication, containerization/ virtualization, etc.
Understand provider's services and features
Note: maybe you need multi-cloud, maybe you don't
6 - Know when to use managed services
7 - The system will fail and you will miss someting
(there's a letter missing btw)
Build resilience instead of strength
Golden rule:
8 - Keep up with team training and technical updates
AWS Well-Architected Framework
(c) 2018, Amazon Web Services
9 - Define your "just-enough" process
10 - Challenge your design (and everything else)
Kubernetes
Bonus:
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
Kubernetes is
an orchestrator
library
dependencies
App
library
Containerized app
App 1
App 2
App N
Registry
Master node
Store
Dashboard/CLIs/APIs
Scheduler
Controller
Worker node
Proxy
Kubelet
App 1
Worker node
Proxy
Kubelet
App 1
App 2
Docker
Kubernetes
Kubernetes Features
1 - Management of Pods
Worker node
App 1
App 2
App N
POD
POD
2 - Replication controller
and load balancer
Worker node
POD1
POD1
Worker node
POD1
3 - Storage management
Kubernetes Features
4 - Ressource monitoring and health checking
5 - Horizontal Auto Scaling
6 - Service discovery
Kubernetes Features
7 - Networking (container to container, pod to pod, pod to external)
8 - services
9 - Rolling deployment and rollback
10 - Logging
Kubernetes Features
+ 2 (personal) bonuses
11 - Good transition to Infrastructure as Code (IaC)
12 - makes micro services architecture "less" scary
Takeaways
- Everything fails
- Build resilience not strength
- Checkout the state of the art
- Checkout cloud providers services
- Keep it simple, keep improving
High availability
By abder
High availability
Cloud basics 101: Introduction to HA and K8s
- 339