자바/스프링(Spring)

SpringCloudGateway (SCG) 사용한 프로젝트

류창 2023. 9. 21. 10:12
반응형

 

 

SpringCloudGateway (SCG) 란?

 

 

MSA를 위한 기술이다.

 

MSA는 간략하게 설명하자면,   하나의 큰 어플리케이션을  서비스 단위로 분해한뒤,  독립적으로 관리하는것이다.

 

Gateway는 이 분해된 서비스들의 중개역 역할을 한다.

 

 

 

 

Eureka 서버   

 

SCG와 더불어  Eureka 서버도 같이 사용하면 좋다.

 

SCG는 앞서 말한듯,  서비스들의 중개역을 하나 두는것이라면,

 

Eureka 서버는  서비스들이 제대로 몇개의 인스턴스가 켜져있는지 상태관리를 시각적으로 도와주는 서버다.

 

 

 

이것이  Eureka 서버의 화면 일부분이다.

 

현재는 Find-Service의 인스턴스가 1개 올라와있다.

 

만약  Find-Service가 여러개 필요하다면 어떻게할까?

 

Find 서비스의 서버를 하나 더 키면된다.

 

그러면 다음과같이 인스턴스가 2개 생성된다.

 

 

Gateway 서버

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
server:
  port: 8000
spring:
  application:
    name: gateway-service
  cloud:
    gateway:
#      default-filters:
#        - name: "CustomGlobalFilter"
#          args:
#            logging: "true"
#        - name: "CacheFilter"
      globalcors:
        cors-configurations:
          '[/**]':
            allowedOrigins: "*"
            allowedMethods:
              - GET
              - POST
              - PUT
              - DELETE
              - OPTIONS
            allowedHeaders: "*"
 
      # 회원서비스
      routes:
        - id: auth-service
          uri: "lb://AUTH-SERVICE"
          predicates:
            - Path=/api/v1/auth/**
      # 찾는 서비스
        - id: find-service
          uri: "lb://FIND-SERVICE"
          predicates:
            - Path=/api/v1/find/**
#          filters:
#            - name: "TokenFilter"
#              args:
#                logging: false
 
        # 예약 서비스
        - id: reservation-service
          uri: "lb://RESERVATION-SERVICE"
          predicates:
            - Path=/api/v1/reservation/**
        #결제 서비스
        - id: payment-service
          uri: "lb://MENU-SERVICE"
          predicates:
            - Path=/api/v1/payment/**
#          filters:
#            - name: "TokenFilter"
        #관광명소 서비스
        - id: TD-service
          uri: "lb://TD-SERVICE"
          predicates:
            - Path=/api/v1/tourdestination/**
 
        # 관광명소예약 서비스
        - id: TD-reservation-service
          uri: "lb://TD-RESERVATION-SERVICE"
          predicates:
            - Path=/api/v1/tourdestinationreservation/**
 
 
eureka:
  instance:
    instance-id: Seoul Project Gateway
    prefer-ip-address: true
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka
cs

 

다음과같이 게이트웨이를 열어준다.

 

게이트웨이엔  CORS 필터,  JWT필터등등   중개를 하기전에 보안절차를 걸수있다.

 

그리고 게이트웨이는 포트를 동일화(8000포트)시켜서, 서비스를 연결시킬수있다.

 

또한, 포트를 동일화시키면서 로드밸런서를 적용시킬수있다.

반응형