사붐이개발일기
MSA 요약 정리 (Load Balancer, API Gateway, Service Discovery) 본문
Load Balancer - aws ALB
로드밸런서는 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭합니다. 클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 합니다.
그렇다면 로드 밸런싱은 모든 경우에 항상 필요할까요?
로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술입니다.
서비스의 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답하는 것이 가능합니다. 하지만 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 됩니다. 이처럼 증가한 트래픽에 대처할 수 있는 방법은 크게 두가지 입니다.
Scale-up의 경우 서버 자체의 성능을 확장하는 것을 의미합니다.
Scale-out의 방식으로 서버를 증설하기로 결정했다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요합니다.
API Gateway - Spring Cloud Gateway, Spring Cloud Netflix Zuul
- 각각의 마이크로서비스들은 서로의 포트 번호를 몰라도 된다.
- Front 에서는 요청을 Gateway로만 보내면 되기 떄문에 Gateway 포트만 알면 모든 요청을 수행할 수 있다.
- 모든 요청은 Gateway를 거치기 때문에 로그를 쉽게 다룰 수 있다.
- Gateway가 요청의 진입점이므로 통합 인증을 수행할 수 있다.
API Gateway 주요 기능
1. 인증/인가 및 토큰 발급
2. 공통 로직 처리
3. 로드밸런싱
4. 메디에이션 기능
Service Discovery - Spring Cloud Eureka
마이크로 서비스가 다른 마이크로 서비스를 호출하려면 대상의 IP, Port를 알아야한다.
하지만, random IP, port일 경우 마이크로 서비스의 정보를 알기가 쉽지 않기 때문에, 각 마이크로 서비스의 IP, Port 정보를 저장하고 검색해주는 Discovery Service(Eureka Service)가 필요하다.
API Gateway + Service Discovery
Service Discovery
Client-side Discovery
Server-side Discovery
참고자료
1. MSA 아키텍처 구현을 위한 API Gateway의 이해
2. Spring Cloud Gateway 를 이용해 API Gateway를 구성하고 실습해보자 (Eureka Server 를 이용해 Load Balancing 하기)
- Spring에서 Gateway 와 Eureka 구조를 잘 설명함
- https://wonit.tistory.com/4972
3. 마이크로서비스 패턴 - 서비스 디스커버리
4. API Gateway란? 개념과 주요 기능
5. 로드밸런서의 개념과 특징
- https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903