여기 정리하는 내용들은 Udemy 강의를 통해 배운 내용들을 정리하였습니다.
출처 - Udemy AWS Certified Developer Associate 2022 - New!


Elastic Load Balancing에서 자주 나오는 단어중 하나는 Elasticity와 Scalability입니다.
Horizontal Scalability를 Elasticity라고 볼 수 있습니다.


High Availability와 Scalability가 같다고 오해하지 맙시다~


Horizontal Scalability

instances 나 systems 의 수를 늘리는 것을 의미합니다.
AWS에서 제공하는 Cloud Practitioner 무료 강의를 보다보면 커피숍 비유가 많이 나오는데,
커피숍의 평상시 카운터의 개수는 1개입니다. 이 때, 손님이 많아진다면 줄이 길어지겠죠?
그럴때 카운터의 개수를 늘려 손님을 각 카운터로 배정해주는 비유가 나옵니다.
AWS에서는 Auto Scaling Group과 Load Balancer가 관련된 서비스입니다.


Vertical Scalability란 무엇일까요?

instance의 사이즈를 조절하는 것을 의미합니다.
커피숍 비유에서는 카운터가 수용할 수 있는 사람 수를 조절한다고 볼 수 있겠네요.
하드웨어에 따라 늘리는데 한계가 있을 수 있습니다.
aws에서 보면, t2.micro -> t2.large로 scailing하는 것을 볼 수 있습니다.


High Availability란 무엇일까요?

적어도 2개의 데이터 센터에서 app/system을 돌리는 것을 의미하는데요.
High Availability의 주된 목적은 data center loss를 대처하는 것입니다.
AWS에서는 multi Availability Zone을 쓰는 것을 뜻합니다.


Load Balancing 이란?

트래픽을 다른 서버에 forward 하는 서버입니다.


Elastic Load balancer?

Managed load balancer라고 볼 수 있습니다.
AWS에서 Manage 해주는 것들은 아래와 같습니다.

  • load balancer의 작동 guarantee
  • 업그레이드, 유지, high availability
  • configuration knobs 조금 제공
  • 다른 AWS 서비스와의 연동 가능
    • EC2, EC2 Auto Scaling Groups, Amazon ECS 등
    • AWS Certificate Manager, CloudWatch 등
    • Route 53, AWS WAF, AWS Global Accelerator 등


Health Checks 란?

Elastic Load Balancer로 하여금 EC2 Instance가 properly 작동하고 있는지 확인하게 합니다.

  • healthy 예시

    Protocal: HTTP
    Port: 4567
    Endpoint: /health


Load Balancer Types

4개의 타입이 존재합니다.

  • Classic Load Balancer (CLB)
    • HTTP, HTTPS, TCP, SSL(secure TCP)
  • Application Load Balancer (ALB)
    fixed hostname을 받으며, client의 ip를 servers(instances)에게 directly 보여주지 않습니다.
    micro services 또는 container-based application에 적합합니다.
    만약 CLB가 여러개 필요하다면, 1개의 ALB가 나을 수 있다.


    Health checks는 target group level에서 이루어 집니다.

    • Target Groups에 속할 수 있는 것
      • EC2 instances
      • ECS tasks
      • Lambda functions
      • IP Addresses
      • ALB
      • Health


    사용처는 아래와 같습니다.

    • HTTP,HTTPS, WebSocket
    • Routing table을 지원합니다.
      • path (e.g. example.com/users)
      • hostname (e.g. other.example.com)
      • Query String, Headers (e.g. example.com/users?id=123&order=false)


  • Network Load Balancer (NLB)
    TCP, UDP 트래픽 담당
    ALB에 비해 Less latency입니다.
    AZ당 1개의 static IP를 가진다.(CLB,ALB에는 없습니다.) - Elastic IP도 지원합니다.
    무료로 사용할 수 없는 서비스입니다.


  • Gateway Load Balancer (GWLB)
    3rd party network virtual appliances를 deploy, scale, manage합니다.
    트래픽을 Target Group (the 3rd party appliances)에 분배하여 작업할 것 하고
    결과가 의도와 맞다면 Application으로 Traffic을 보냅니다.
    GENEVE protocal on port 6081을 사용합니다.
    • Operates at layer 3(Network layer) - IP Protocol


특정 Load Balance는 internal(private), external(public) 설정이 있습니다.


Load Balancer Security Groups

Users > Load Balancer > EC2 에서
Load Balancer에서 EC2로 접근하려고 할 때, Security Groups를 통해 접근을 통제할 수 있습니다.



다음 포스팅

ELB가 정말 중요한 내용이라 이해하면서 강의를 들어서 그런지 시간이 부족해서 다음 포스팅에 이어서 작성하도록 하겠습니다.