Spring Cloud(1) - MSA

오민석·2021년 7월 11일
0
post-thumbnail

Service Mesh

서비스 간 통신을 처리하는 인프라 레이어

  • 서비스 모니터링
  • service discovery
  • routing
  • load balancing

service discovery

Client side

client가 service registry에서 서비스의 위치 찾아서 호출 ex. Eureka
서비스 디스커버리 로직을 클라이언트가 가지고 있기 때문에 서비스에 맞는 로드밸런싱 방식을 각자 구현할 있고, 간단 but 의존성이 생김

Server side

로드밸러서를 통해 서비스 전달. 로드 밸런서가 service registry에 query날려서 요청 가능한 서비스 인스턴스로 라우팅 ex. ELB
서비스와 discovery 기능 분리

Eureka Server란


각각의 마이크로 서비스들의 포트는 8812, 51728, 9271 은 Eureka Server에 Registration 되어있는 상태로 각각의 서비스들의 포트가 바뀌어도 Eureka Dashboard에서 확인할 수 있는 구조

문제 상황은 API 통신 간 각 마이크로서비스들은 다른 서버들의 포트를 모두 알고있어야 한다. 하지만 포트가 바뀐다면 포트가 바뀐 서버를 제외한 모든 서버는 바뀐 포트의 번호를 수정하고 다시 발드 및 배포를 해야하는 상황이다.

API Gateway란

API Gateway 정의

  • API Gateway란 서비스로 전달되는 모든 API 요청의 관문(Gateway) 역할을 하는 서버
  • 시스템의 아키텍처를 내부로 숨기고 외부의 요청에 대한 응답만을 적합한 형태로 응답

API Gateway 장점

  • Gateway가 요청의 진입점임으로 통합인증 및 권한 부여
  • Front단에서 Gateway로만 요청 보내면 되니까 마이크로 서비스 검색 통합
  • 응답 캐싱
  • 속도 제한 및 부하 분산
  • 로깅, 추적, 상관관계
  • IP 허용 목록에 추가

Spring Cloud API Gateway

Zuul 과 Ribbon과 차이

  • WAS: Tomcat아닌 Netty maintenence 상태
  • Netflix Zuul 및 Netflix Ribbon은 maintenence 상태이고, 이와 달리 비동기 처리 방식

Filter


  • Gateway Handler Mapping: Client로 부터 어떤 Request 왔는지 확인
  • Predicate: 해당 라우터의 조건을 작성, /first-service/**으로 시작하는 요청의 경우 해당 라우터로 요청을 보냄

Filter는 Java Code 혹은 .yml(Property)로 정의 가능

  • Global Filter: 인증 같은 것 처음에 처리
  • Pre Filter / Post Filter

Spring Cloud에서 MSA간 통신

  • RestTemplate
  • Feign Clientddddd

reference
https://wonit.tistory.com/497

0개의 댓글