API Gateway (1) - Spring Cloud Gateway

jonghyukLee·2023년 3월 5일
0
post-thumbnail

미루고 미뤄온 MSA 프로젝트를 진행해보려고 합니다..
최근 제가 취업을 했는데, 여기서 매우 극단적으로.. MSA 구조를 사용하고 있더라구요! 어지러울 정도였습니다 ㅠ

아직 온보딩 기간이라 직접적으로 업무에 투입되진 않았지만, 그 전에 이해를 돕기 위해 작게라도 프로젝트를 진행해보면 좋을 것 같아 바로 시작하게 됐습니다.

근데 무작정 프로젝트를 생성하다가, 시작부터 고민에 빠졌습니다.

각 마이크로 서비스마다 요청에 대한 인증/인가 로직을 거쳐야할텐데.. 전부 다 구현해야되나?? 하는 생각이 들었습니다.

별도의 인증 서버를 둬야겠구나 하는 생각은 바로 들었지만, 막상 어떻게 해야할지 감이 오지 않더라구요..

몇 가지 사례를 찾아보니 nginx, Spring Cloud Gateway 등의 리버스 프록시 역할을 하는 API Gateway 서버를 구성하여 해결하는 것을 볼 수 있었습니다.

각 마이크로서비스들은 전부 Spring Boot를 사용할 예정이기 때문에, 쉽게 연동할 수 있을 것 같아 크게 고민하지 않고 Spring Cloud Gateway를 선택하게 됐습니다.

사실 ChatGPT랑 5분정도 고민해봤는데, 굳이 이걸 안쓸 필요가 없어보이긴 했습니다 ㅋㅋㅋ 아직 체감해보지 않았기 때문에, 맞으면서 배울 생각입니다!

서론이 길었는데, 그래서 Spring Cloud Gateway에 대한 간단한 개념을 정리해보려고 합니다.

맞더라도 맞을 준비는 해야겠어요..!

Spring Cloud Gateway


네 뭐 그렇다네요...ㅋㅋㅋㅋㅋ
스프링 환경에서 API Gateway 역할을 하고, 라우팅, 모니터링 등을 수행해준답니다.

특징

Tomcat이 아닌 Netty (비동기식 이벤트 기반 네트워킹 프레임워크)를 사용하기 때문에, 더 많은 요청을 효과적으로 처리할 수 있습니다.

구성요소

Spring Cloud Gateway는 크게 3가지 구성 요소가 존재합니다.

Route

  • 서비스의 고유id, 목적지 uri, 뒤에 나올 Predicate, Filter 등으로 구성되어 있습니다.
  • 요청된 uri의 조건이 참이면 매핑된 경로로 매칭시켜줍니다.

Predicate

  • Gateway로 들어온 요청이 주어진 조건을 만족하는지 확인합니다.
  • 하나 이상의 조건을 정의할 수 있으며, 조건에 불합하는 경우 404를 반환합니다.

Filter

  • Gateway로 들어오는 요청에 대해 Filter를 적용하여 선, 후처리를 해줍니다.

동작 원리


동작 원리는 위 그림과 같습니다.
네..........
사실 아직은 크게 와닿지 않습니다 ㅠ 역시 개념보단 실전이겠죠!

다음엔 위 내용들을 기반으로 API Gateway를 만들어보겠습니다.

(위 내용은 아래 출처 내용들을 일부 참고해서 작성했습니다. 감사합니다!)
https://wildeveloperetrain.tistory.com/207
https://saramin.github.io/2022-01-20-spring-cloud-gateway-api-gateway/
https://cloud.spring.io/spring-cloud-gateway/reference/html/

profile
머무르지 않기!

0개의 댓글