ALB는 Application Load Balancer의 약자로 AWS에서 제공하는 서비스 중 하나이다.
ALB는 OSI 7 Layer의 최상단 계층에 해당하는 7계층에 해당하는 응용계층을 다루는 로드밸런서 이다.
응용 계층은 user와 직접 상호작용 하는 계층이기 때문에 주로 HTTP/HTTPS 프로토콜을 사용한다.
(이 외에도 FTP, DNS, DHCP 등 다양한 프로토콜을 사용한다.)
ALB는 여러 대상 그룹에 대한 트래픽을 자동으로 분산하여 웹 애플리케이션의 가용성과 성능을 향상시킨다.
ALB에 연결된 각각의 EC2는 부하 분산을 통해 트래픽을 균등하게 분산시킨다.
ALB는 HTTP의 특성을 활용한다. HTTP Header에는 표준 헤더
, 요청 헤더
, 응답 헤더
, 일반 헤더
가
존재한다.
이때, 요청 상황과 응답 상황에 따라서 다른 헤더를 가지게 되며 그 헤더는 다양한 정보가 들어있다.
그리고 user는 헤더에 자신의 정보를 담아 서버로 전송할 수 있고, 서버는 헤더에 담긴 정보를 보고 사용자의
요구 사항을 알 수 있다.
ALB는 이 HTTP Header를 라우팅 규칙에 활용한다. 위의 4가지 Header 중 요청 헤더
와 일반 헤더
를
활용한다.
요청 헤더에는 Host Header, Cookie Header, User-agent Header, Accept Header 등
사용자의 상태 정보나 사용자가 사용하는 디바이스의 정보들을 담을 수 있다.
그리고 일반 헤더에 해당하는 X-Fowarded-For
로 user의 IP를 헤더에 담아 서버에게 전달한다.
다른 방식으로는 HTTP 요청 메서드를 활용하는 방법이 존재한다. 이 방법은 user가 WebServer에게 자신의
요청 목적 혹은 요청 종류를 알리는 방법으로 GET
, PUT
, POST
, HEAD
등이 있다.
ALB는 요청 메서드를 기준으로 규칙을 생성후 각 규칙에 맞는 대상그룹에 라우팅을 실시할 수 있다.
user와 EC2 인스턴스가 암호화 통신을 해야하는 경우, EC2 인스턴스의 비용을 줄이기 위해서 ALB 대신해서
SSL 인증서를 이용해 암호화 통신을 실시한다.
( 이를 실현하기 위해서는 사전 작업으로 Route53을 통해 자신이 사용할 도메인을 발급받은 후 AWS의 ACM를
통해 SSL 인증서를 발급 받아야한다.)
프록시 서버란 Client가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는
컴퓨터 시스템이나 응용 프로그램을 가리킨다.
실질적으로 서비스를 제공하는 것은 Server이지만 user와 통신하는건 ALB이다.
따라서 ALB는 server와 user의 중간에서 프록시 서버로서 양쪽으로 통신한다고 생각하면 된다.
이 외에도 다양한 역할을 수행한다. (필자가 생각하기에 중요하다고 생각하는 역할 4가지만 정리 해 보았다.)