MSA 아키텍처는 서비스의 독립성과 확장성이라는 큰 장점을 제공하지만, 그에 따라 발생하는 여러 가지 복잡성 문제를 해결해야 합니다.
특히, 다양한 서비스가 상호작용하면서 발생할 수 있는 문제 중 하나가 클라이언트와 서비스 간의 요청 및 응답 관리입니다. 여기서 API 게이트웨이가 중요한 역할을 합니다.
Gateway를 번역해 보면 "대문", "출입구", "통로"입니다. 이와 같이 API Gateway는 API의 출입구라고 생각하면 이해하기 쉽습니다.
API Gateway란❓
- API 게이트웨이는 클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가 기능을 제공하는 중간 서버입니다.
- 클라이언트와 서비스 간의 단일 진입점 역할을 하며, 보안, 로깅, 모니터링, 요청 필터링 등을 처리합니다.
그러면 Spring Cloud Gateway란 무엇일까요?
Spring Cloud Gateway는 마이크로서비스 아키텍처(MSA)에서 API 게이트웨이의 역할을 수행하는 오픈 소스 프레임워크입니다.
Spring Framework와 Spring Boot의 강력한 기능을 기반으로 하며, 클라우드 환경에서의 API 관리와 서비스 간의 요청 및 응답 처리에 최적화되어 있습니다.
주요 목적은 요청 라우팅, 필터링, 모니터링, 보안 및 다양한 API 관리 기능을 제공하여 마이크로서비스 아키텍처의 복잡성을 줄이고, 시스템의 신뢰성을 높이는 것입니다.
API Gateway와 Spring Cloud Gateway에 대한 자세한 설명은 아래의 링크에서 확인 가능합니다! ▼
API Gateway를 통한 MSA 서비스 통합 및 요청 단일화
서비스가 위와 같이 MSA형태로 Order App, Product App, User App으로 따로 존재한다고 가정해 봅니다.
그러면 사용자는 각각의 정보를 원할 때, 각각 호출해야 합니다. 그러면 호스트가 전부 다를 것입니다.
그러나 각 애플리케이션에 요청을 하지 않고 API Gateway 애플리케이션을 앞에 둬서 하나의 호스트로 바꿀 수 있습니다.
같은 호스트 즉, Gateway로 요청하면 Order, Product, User의 엔드포인트를 보고 각각 라우팅을 하게 됩니다.
따라서 요청을 단일화할 수 있으며, 사용자가 로그인이 필요한 상태라면 Gateway를 통해서 로그인 처리를 하면 인증, 인가까지 됩니다.
또한 로그인하지 않은 사용자가 만약 Order를 호출한 경우가 알고 싶다면 Gateway에서 확인도 할 수 있습니다.
뿐만 아니라 Gateway는 보안 강화를 통해 인증 및 인가 기능을 통합하여 각 서비스에 대한 접근을 관리하고, 로깅 및 모니터링 기능을 제공하여 모든 요청과 응답을 중앙에서 관리할 수 있도록 합니다.
이는 문제 발생 시 신속한 원인 파악을 가능하게 하며, 서비스 간 결합도를 줄여 시스템의 유연성을 높이는 데 기여합니다.
또한, API Gateway는 로드 밸런싱 기능을 통해 요청을 적절히 분산시켜 시스템의 성능과 신뢰성을 향상시키는 중요한 역할을 합니다.
다양한 서비스 간의 요청과 응답 관리를 단일화하고, 시스템의 복잡성을 줄이는 데 API Gateway가 얼마나 중요한지 다시 한 번 깨닫게 되었습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL,일일 회고] 2024.08.07 - Spring Cloud Stream이란❓ (0) | 2024.08.07 |
---|---|
[TIL,일일 회고] 2024.08.06 - 마이크로서비스 아키텍처에서 Spring Cloud Config의 필요성 ✅ (0) | 2024.08.06 |
[TIL,일일 회고] 2024.08.04 - Spring Security를 통한 로그인 구현 (0) | 2024.08.04 |
[TIL,일일 회고] 2024.08.03 - SpringCloud 서킷 브레이커 (0) | 2024.08.03 |
[TIL, 일일 회고] 2024.08.02 - FeignClient와 Ribbon을 통한 클라이언트 사이드 로드 밸런싱 (0) | 2024.08.02 |