MSA(MicroService Architecture) (2) - Spring Cloud, Eureka, API Gateway

Sadie·2024년 6월 1일
0

Spring And JPA

목록 보기
8/9

공부를 목적으로 현재 진행중인 프로젝트에 MSA를 적용할 계획이다
사실 이 프로젝트는 규모가 작아 모놀리식 구조에 더 적합하다
하지만 해본다는 것에 의의를 두고 적용을 목표로 공부를 진행중이다

본격적인 적용에 앞서 사용할 기술들은 다음과 같다



Spring Cloud

Spring Cloud는 시스템을 구축하고 운영하기 위한 스프링 프레임워크 기반의 라이브러리 모음 입니다
특히, 마이크로서비스 아키텍처(MSA)를 구현할 때 주로 사용되며,
서비스 디스커버리, 로드 밸런싱, 분산 설정 관리, 분산 추적, API 게이트웨이 등의 다양한 기능을 포함합니다

Spring Cloud는 Netflix OSS(Netflix의 MSA 노하우가 담긴 오픈소스)를 많이 받아들이게 되었는데 그 중 일부를 Spring Cloud와 통합하여 Spring Cloud Netflix 프로젝트로 제공합니다

Maven 의존성 추가 및 어노테이션 추가 만으로 구성 가능하고 기존 Spring Application과 쉽게 연동할 수 있습니다
-> 현재 SpringBoot를 이용한 프로그램을 제작 중에 있기에 Spring Cloud를 이용해 MSA를 구현해보고자 했다


Eureka

Spring Cloud Netflix로 제공되는 서비스 디스커버리 서버(Service Discovery Server)로
인스턴스의 상태를 동적으로 관리하는 서버입니다
Eureka Server와 Eureka Client로 구성되어 있습니다

Eureka 외에도 Spring Cloud Netflix에서 제공하는 것은

  • Ribbon: 클라어언트 사이드 로드 밸런서(Client side Load Balancer) - 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포
  • Hystrix: 서킷 브레이커(Circuit Breaker) - 특정 서비스에 문제가 생기더라도 전체적으로 장애가 확산되지 않도록 차단
  • Zuul: API 게이트웨이(Gateway) - 최전방에서 클라이언트의 요청을 받아 적절한 서비스에 전달하고 결과를 다시 클라이언트에 보내는 엣지 서버(Edge Server), 도메인을 하나로 통합하고 단일 진입점으로 사용, 필터 기능

등이 있습니다


API Gateway

클라이언트에서 여러 개의 마이크로서비스에 효율적으로 접근할 수 있도록 단일 진입점을 제공하는 것

API Gateway가 할 수 있는 일

  • 서로 다른 유형의 클라이언트에게 서로 다른 API 조하 제공 가능
  • 인증/인가, 시큐리티 기능
  • 서비스에 문제가 생겼을 때, 요청 경로 변경 기능
  • 무중단 배포 지원
  • 일반적으로 라우팅 기능, 로드 밸런싱 기능, 인증/인가, 추적, 장애 격리, 서비스 탐색, 필터 등의 기능이 함께 구현


참고

https://s-core.co.kr/insight/view/spring-cloud-netflix%EB%A1%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94-microservices-architecture-msa%EC%99%80-%EB%84%B7%ED%94%8C%EB%A6%AD%EC%8A%A4/
https://cjw-awdsd.tistory.com/52
https://bcho.tistory.com/1005
https://m.blog.naver.com/kknkh/223410612981
https://s-core.co.kr/insight/view/spring-cloud-gateway-%EA%B8%B0%EB%B0%98%EC%9D%98-api-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-%EA%B5%AC%EC%B6%95/
https://velog.io/@sorzzzzy/MSA-MSA%EB%A5%BC-%EC%9C%84%ED%95%9C-%EA%B8%B0%EC%88%A01-Spring-Boot-Spring-Cloud-Docker
https://velog.io/@gun_123/API-Gateway-Pattern

0개의 댓글