일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- POD
- Django
- 자바스크립트
- EKS
- IAC
- DevOps
- Python
- ansible
- Kubernetes
- dockerfile
- elasticsearch
- EC2
- FastAPI
- 쿠버네티스
- terraform
- K8S
- Deployment
- asgi
- YAML
- event loop
- AWS
- intervals
- ebs
- IAM
- Service
- github
- asyncio
- docker
- leetcode
- WSGI
- Today
- Total
궁금한게 많은 개발자 노트
[ AWS ] Elastic Load Balancing 본문
ELB(Elastic Load Balancer)와 ASG(Auto Scaling Groups)를 사용하는 것이 우리가 일반적으로 Cloud를 사용하는 최대 장점이자, 이러한 새 패러다임이 어떻게 우리 Application을 빛나게 해주고 원활하게 확장해주는지 확인할 수 있습니다.
먼저 그와 관련된 개념들에 대해 살펴보려 합니다.
[ Concepts ]
Scalability: application이나 system이 더 큰 부하를 처리할 수 있음을 의미하며, 수직/수평(elasticity) scalablity가 존재Scalability는 High Availiablity와 관련 있지만, 다릅니다.
Vertical Scalability: increasing the size of the instance (handle greater loads)
보통 non-distributed system에서 흔하며 예로는 DB가 있습니다.
대부분의 vertical scalability는 limit이 존재하며, 그 한계는 hardware와 연관이 있습니다. (요즘 limit은 엄청 높다)
ex) scaling application t2.micro -> t2.large
Horizontal Scalability: increasing the number of instances (distribute greater loads) -> imply distributed system
ex) auto scaling group, load balancer
High Availability: 고가용성은 일반적으로 수평 확장과 함께 진행됩니다. 고가용성은 application은 여러 AZ에서 운영하는 것을 의미할 수 있습니다. 하나가 crash나더라도, 나머지가 그 역할을 수행할 수 있기에 사용성은 유지됩니다.
The goal of high availability is to survive a data center loss (disaster)
ex) auto scaling group mulit AZ, Load balancer multi AZ
Scalability vs Elasticity
Scalability: 더 큰 부하에 의해 HW를 scaling up(vertical)하거나 scaling out(horizontal)하여 적응하게 하는 능력을 의미
Elasticity: system이 scalable하다면, elasticity는 auto-scaling이 load에 근거하여 일어날 수 있음을 의미합니다. cloud관점에서는 사용량에 따라 금액을 지불하거나, 부하에 맞는 server개수 운용 등이 가능함을 의미합니다. 즉, cost optimized가능
Agility: (not related to scalability or elasticity - distractor) new IT resources are only a click away, which means that you reduce the time to make those resources available to your developers from weeks to just minutes. 즉, 개발자가 편리하게 시스템을 운용할 수 있음을 의미
[ ELB ]
Load Balacing이란? internet traffic을 multiple servers(EC2 instances)에게 전달해주는 servers
Load balancers are servers that forward internet traffic to multiple servers (EC2 Instances) downstream
Load balancer의 사용 이유:
- 큰 부하를 downstream의 instance들에게 나누어 분산시켜줄 수 있습니다.
- application의 single ponit of access만을 노출 시킬 수 있습니다. (DNS)
- downstream instance들의 장애를 원활하게 처리할 수 있습니다.
- 규칙적으로 downstream instance들의 health check가 가능합니다.
- SSL termination (HTTPS)를 제공 가능
- High Availibility 제공 가능: Load Balancer를 여러 AZ에 걸쳐 사용시
ELB: Elastic Load Balancer is a managed load balancer
AWS에서 load balancer를 제공하며, 정상 동작을 보장해주며, 모든 업그레이드와 유지 보수를 관리해줍니다.
뿐만 아니라, ELB의 high availiability도 보장해줍니다. 사용자는 몇가지 configuration을 설정하면 됩니다.
AWS에서는 4가지 Load balancer를 제공합니다.
- ALB: Application Load Balancer (HTTP/HTTPS only) - Layer 7
- NLB: Network Load Balancer (ultra-high performance, allows for TCP/UDP) - Layer 4
- GWLB: Gateway Load Balancer - Layer 3
- CLB: Classic Load Balancer (retired in 2023) - Layer 4 & 7
'DevOps' 카테고리의 다른 글
[ AWS ] ECR이란? (0) | 2023.02.05 |
---|---|
[ AWS ] Auto Scaling Group (0) | 2023.01.25 |
[ AWS ] Amazon FSx (0) | 2023.01.09 |
[ AWS ] EFS - Elastic File System (0) | 2023.01.09 |
[ Ansible ] Ansible SSH Setting (0) | 2023.01.08 |