L4와 L7의 차이점 및 사용처
AWS의 로드밸런서인 ALB를 사용하던 중 문득 궁금함이 들어 정리해 봅니다.
왜 꼭 ALB를 썼어야 했을까?
차이점은 L4, L7 에 있었습니다. NLB가 L4, ALB가 L7 입니다.
각각 로드밸런서를 이해하기 위해서는 일단 OSI 7 계층에 대한 간략한(?) 이해가 필요합니다.
각 계층 별 사용되는 프로토콜이 존재하고, L4(Layer 4)에서 사용하는 프로토콜은 TCP, UDP, ARP
L7(Layer7)에서 사용하는 프로토콜은 HTTP, FTP, DNS 등이 있습니다.
상위 레벨의 Layer는 하위 레벨 Layer를 이해할 수 있어야 합니다.
즉, L7 로드밸런서는 L4 로드밸런서의 TCP로 할 수 있는 IP, 포트로 로드밸런싱 도 가능해야 합니다.
제가 사용했던 ALB는 L7에서 동작하는 로드밸런서인 셈이고, 제 상황에서는 로드밸런싱을 당하는 각 모듈 별로
URI Path와 SSL 적용이 필요했습니다.
그럼 NLB(L4 로드밸런서)는 어디에 사용할까요?
네트워크 트래픽도 점점 단계를 거칠수록 시간적인 비용이 발생하게 됩니다.
예를 들어 문이 7개가 있는 친구네 집이 있습니다.
각 문은 10M 간격으로 떨어져있고 초인종은 없습니다. (저라면 안 놀러갑니다.🙃)
친구네 집에 놀러갔을 때, 각 문을 열때마다 친구가 없는지 있는지 체크할 수 있는 단서가 나옵니다.
여기서 네 번째 문(L4)에 도착을 해서 확실하게 친구가 없다는 단서가 나와서 돌아나오는 것과
일곱 번째 문(L7)에 도착 해서 돌아나오는 것은 확실히 다르겠죠?!
그래서 L4를 사용하는 것은
1. TCP로 해결가능한(IP 포트로 로드밸런싱이 가능한) 로드밸런싱의 경우
2. 트래픽이 극도로 많은 시스템의 경우, 하지만 1번이 되는 경우
인 것 같습니다.
저도 직접 셋팅을 해보진 않아서 잘은 모르지만 구글링해보고 궁금해서 NLB를 생성해본 결과
NLB는 SSL 설정과 URI Path로 규칙을 생성할 수 없었습니다.🤪
혹시 사실과 다른 내용이 있으면 언제든 댓글로 알려주시면 감사하겠습니다~