1. 마이크로서비스에서 API gateway, Load Balancer의 역할
마이크로서비스 아키텍처는 애플리케이션을 각 비즈니스 기능별로 독립적으로 개발, 배포 및 확장할 수 있는 결합된 서비스로 나누는 방식의 아키텍처입니다.
또한, 각 서비스는 일반적으로 단일 비즈니스 기능을 구현하고 통신을 위해 간단한 API를 사용합니다.
이러한 마이크로서비스는 각 기능에 따라 서비스가 존재하고, 클라이언트는 적절하게 해당 서비스에 요청을 보내야합니다.
이때 클라이언트가 직접 각 서비스에 적절하게 요청을 보내는 것이 아닌, 그 기능을 처리하는 "어떤 곳"으로 요청을 보내고, 그곳에서 각 서비스로 요청을 분산시켜줍니다.
여기서 말하는 "어떤 곳"이 API gateway, Load Balancer 입니다.
2. Load Balancer
로드 밸런서는 네트워크 트래픽을 여러 서버에 분산시키는 역할을 합니다. 이는 모든 요청을 단일 서버가 아닌 여러 서버에 균등하게 분배함으로써 시스템의 가용성과 내구성을 높이고, 단일 지점 장애의 위험을 줄입니다.
즉, 로드 밸런싱의 주요 목표는 단일 서버의 과부하와 가동 중지 시간을 방지하여 고가용성, 안정성 및 성능을 보장하는 것입니다.
이러한 로드 밸런서는 앞서 언급했듯이 클라이언트 - 서버 사이에 존재하는 게 일반적이지만, 정확히 말하면 총 3곳에 존재할 수 있습니다.
- 클라이언트 - 웹 서버
- 웹 서버 - 서버
- 서버 - DB
또한, 로드 밸런서는 아래와 같은 프로세스로 동작합니다.
- 클라이언트로부터 요청을 받습니다
- 로드 밸런서는 들어오는 요청을 평가하고 요청을 처리해야 하는 서버 또는 리소스를 결정합니다. 이는 사전 정의된 로드 밸런싱 알고리즘을 기반으로 수행됩니다
- 이렇게 선택된 서버에 적절하게 트래픽을 보냅니다
- 서버 또는 리소스는 요청을 처리하고 로드 밸런서에 응답을 다시 보냅니다
- 로드 밸런서는 서버나 리소스로부터 응답을 받아 요청한 클라이언트나 사용자에게 보냅니다
3. API gateway
API 게이트웨이는 마이크로서비스 아키텍처의 중앙 집중화된 엔드포인트로, 클라이언트의 요청을 받아 이를 적절한 서비스로 라우팅합니다.
4. Load Balancer vs API gateway
API 게이트웨이는 요청을 적절한 서비스로 라우팅하는 데 중점을 두는 반면, 로드 밸런서는 서버로의 요청을 균등하게 분산하는 데 중점을 둡니다.
즉, API 게이트웨이는 일반적으로 API에 대한 요청을 처리하는 데 사용됩니다. 반면 로드 밸런서는 단일 IP 주소로 전송된 요청을 처리한 다음 알고리즘을 기반으로 서버 중 하나로 분산하는 데 사용됩니다.
5. 해당 프로젝트에서의 Load Balancer 와 API gateway
해당 프로젝트에 각 기능을 어떻게 적용할 것인지 예시를 들어서 말해보겠습니다.
저는 쿠버네티스, ingress-nginx(로드 벨런서), gateway-service(API 게이트웨이)를 사용할 것입니다.
- 상황01 -> 커뮤니티 게시글 보기
- 유저가 ChatLink의 커뮤니티 모든 게시글 페이지에 접근합니다.
- 이때 클라이언트에서 API 게이트웨이로 요청을 보냅니다 (ex: post service, notification service)
- 해당 요청은 먼저 쿠버네티스 클러스터 내의 Ingress로 들어옵니다. Ingress는 미리 정의된 규칙에 따라 이 요청을 gateway-service로 라우팅합니다
- gateway-service는 이 요청을 게시글 데이터를 제공하는 post-service와 관련 알림을 처리하는 notification-service로 동시에 라우팅됩니다
- post-service와 notification-service에서 반환된 응답은 API 게이트웨이에서 합쳐집니다
- 합쳐진 응답은 다시 클라이언트로 전송됩니다
- 상황02 -> 유저가 로그인
- 유저가 ChatLink에 로그인을 시도합니다
- 로그인 요청은 먼저 Ingress로 들어옵니다. Ingress는 이 요청을 gateway-service로 라우팅합니다
- gateway-service는 로그인 요청을 받아 auth-service로 요청을 전달합니다
- auth-service는 사용자의 인증 정보를 검증한 후, 이를 API 게이트웨이로 반환합니다
- API 게이트웨이는 인증 정보를 포함한 응답을 클라이언트로 반환합니다
'OLD > ChatLink' 카테고리의 다른 글
[ChatLink] DevOps: Docker, Kubernetes를 이용한 프로젝트 관리 (0) | 2024.03.18 |
---|---|
[ChatLink] Frontend: NextJs v14 - shadcn을 이용한 로그인 / 회원가입 폼 구현 (0) | 2024.03.09 |
[ChatLink] 프로젝트 구성: 기획 (Microservice, Microfront, Monorepo) (0) | 2024.02.28 |