티스토리 뷰

반응형

 

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의 | Dowon Lee - 인프런

Dowon Lee | , 클라우드 네이티브 아키텍처를 구축하고, 마이크로서비스 앱 개발에 도전하세요! 🚧 [사진] IT 시스템에는 매년 수많은 기술이 생겨나고, 사라지고 있습니다. 새롭게 출시된 개념이나

www.inflearn.com

으로 공부한 내용을 정리하는 내용 입니다.

 

반응형

API GateWay

API 게이트웨이(패턴) 는 마이크로서비스 관리 / 운영을 위한 플랫폼 패턴이며 해당 패턴에 필요한 기능들을 제공하는 서버를 말하는 것으로 개별 서비스의 앞 단에서 모든 서비스들의 엔드포인트를 단일화하고 다음과 같은 필수 기능 요소들을 제공합니다.

인증과 인가 : 모든 서비스들에 대한 접근에 있어서 단일 진입점에서 인증과 인가 처리를 진행
API 요청 로드밸런싱 및 라우팅 : API 요청을 식별하여 적절한 마이크로서비스로 전달
QoS(Quality of Service) : 안정적인 서비스 제공 및 네트워크 품질을 관리하며 사용자 / 클라이언트 / API 단위로 접속 제어
로깅 및 모니터링 : API 요청에 대한 로깅 / 모니터링 기능 지원
입력 유효성 검사 : API 요청의 적절한 형식과 필수 데이터 포함 여부를 식별 및 관리

 

API 게이트웨이의 장단점

장점

 

애플리케이션의 내부 구조를 캡슐화 : 클라이언트는 특정 서비스를 호출하지 않고 단순히 게이트웨이와 통신하며, API 게이트웨이는 각 종류의 클라이언트에 특정 API를 제공
클라이언트와 애플리케이션 간의 왕복 횟수가 감소하며, 클라이언트 코드 단순화

 

단점

관리 포인트 증가 : 개발, 배포 및 관리해야 하는 지점이 증가
API Gateway로 모든 호출이 집중 : 각각의 마이크로서비스를 호출 하기 위해서는 API Gateway를 호출 하게 되는데 모든 호출이 API Gateway로 집중되면서 병목 현상이 발생할 가능성

 

이러한 단점에도 불구 하고 MSA 아키텍처에서는 API Gateway가 반드시 필요.

 

사용법

1. Spring Boot를 이용한 API Gateway service 생성

 

2. API Gateway를 위한 Dependency 선택

 

3. application.yml 설정

 

yml 설정 내용

# API Gateway Port 정보
server:
  port: 8000

# eureka 등록
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:8791/eureka

spring:
  application:
    name: apigateway-service
#Gateway 설정
  cloud:
    gateway:
      mvc:
        routes:
        # id - 고유한 id값 중복 되면 안됨
          - id: first-service
       # uri - Api Gateway를 호출하는 경우 predicates의 Path에 해당하는 경우 포워딩할 주소
            uri: http://localhost:8081/
       # predicates - API Gateway 호출시 포워딩할 조건     
            predicates:
              - Path=/first-service/**
          - id: second-service
            uri: http://localhost:8082/
            predicates:
              - Path=/second-service/**

 

yml 설정값에서 중요한 부분은 cloud.gateway.mvc.routes 부분으로 id로 route 정보를 설정할 수 있고 predicates의 Path에서 설정한 조건에 부합하는 경우 uri 에 설정한 주소로 포워딩 하도록 하는 것이다.

실제 Client는 각각의 마이크로서비스의 호출 하는 것이 아닌 API Gateway를 호출 하게 되면 Gateway의 yml에 설정된 조건에 따라 각각의 마이크로서비스를 호출하게 되는것이다. 

ex) Client http://localhost:8000/first-service/welcome 호출 -> api Gateway에서 predicates 조건에 맞는 정보를 찾음 -> 조건이 맞는 경우 http://localhost:8081/first-service/welcome 로 호출

 

이것이 가장 기본적인 API Gateway 사용법이다.

다음에는 yml을 사용하지 않고 JAVA 코드를 이용한 처리 방법을 확인해 보자

 

2025.04.01 - [공부하는 키보드르륵/JAVA] - [MSA] Spring Cloud Gateway vs Spring Cloud Gateway MVC

 

[MSA] Spring Cloud Gateway vs Spring Cloud Gateway MVC

Spring Cloud GatewayNetty 서버를 사용하여 Reactor 기반이며 비동기적으로 동작하고 application.yml에서 정의한 비동기식 설정이 자연스럽게 작동할 수 있습니다. Spring Cloud Gateway MVC전통적인 Spring MVC 방

keyborddrizzle.tistory.com

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함