Spring - cloud

Spring을 이용한 MSA

Posted by Yan on September 11, 2022

Web Service와 Restful Service

  • 웹 서비스를 구현할 때 두 가지 기술을 사용할 수 있다. web service vs RESTful service
  • web service 기술은 호출 당사자 사이에 엄격한 계약이 있을 경우에 적절한 선택이 될 수 있다. 관공서 등에서 사용한다.
    • XML 사용
    • SOAP(단순 객체 접근 프로토콜), WSDL(웹 서비스 기술 언어), UDDI(전역 비즈니스 레지스트리)
    • 금융감독원 등
  • RESTful service 기술은 인터넷 제공 업체 등에서 사용한다.
    • HTTP, JSON
    • Google, Naver 등

RESTful 아키텍처 스타일

  • 분산 하이퍼미디어 시스템(ex.웹)을 위한 아키텍처 스타일(= 제약 조건들의 집합)

REST의 구성요소

  1. 자원
  2. 행위
  3. 표현

REST 아키텍처의 제약 조건

  1. 모든 레소스는 URI로 식별한다.
  2. 모든 리소스는 다중 표현multiple reqresentation을 가질 수 있다.
  3. 모든 리소스는 표준 HTTP 메소드로 접근, 변경, 생성, 삭제 할 수 있다.
  4. 서버는 상태 정보를 갖지 않는다.

REST API의 성숙도

maturity model

HATEOAS Hypermedia As The Engine Of Application State

spring HATEOAS

  • 서버가 클라이언트에게 하이퍼 미디어를 통해 정보를 동적으로 제공해주는 것
  • API에서 리소스에 대해 어떠한 행동을 할 수 있는지 URL을 전달하여 클라이언트가 참고하고 사용할 수 있도록 한다.
  • 이때 해당 리소스의 상태에 따라 링크 정보가 바뀌며 동적으로 리소스를 구성한다.
  • 이러한 메세지를 표현하기 위해 헤더의 Content Type을 application/hal+json으로 전달하면 클라이언트에서는 _links 필드에 링크 정보가 있다고 예상할 수 있다.

MSA와 Spring Cloud

Spring Cloud

Spring Boot 기반의 마이크로서비스 구축에 필요한 라이브러리들의 집합

  • cloud-native 패턴 중 몇 가지에 집중하여 다양한 라이브러리를 제공하는 Spring boot를 확장
  • Spring Cloud에는 다수의 서브 프로젝트가 있고 cloud-native 애플리케이션 개발을 위한 솔루션을 제공한다.
  • 분산 시스템에서 일반적인 패턴을 빠르게 조합할 수 있도록 해준다.

Spring Cloud Netflix

  • Nefix OSS(Open Source Software) : 넷플릭스에서 오픈소스로 제공하는 MSA 전환 기술들
  • Spring Cloud Netflix: Spring Cloud 에 Netflix OSS가 통합된 것

MSA의 단점을 해결하는 방법

  1. 다수의 필요한 서비스를 어떻게 찾아야 하는가? 💡 서비스 디스커버리 이용 (Spring Cloud - Eureka)
  2. 사용하기 위한 다수 서비스의 인스턴스를 어떻게 결정해야 하는가? 💡 클라이언트-사이드 로드 밸런싱 (Spring Cloud - Ribbon)
  3. 개별적인 서비스가 응답하지 않을 때 어떤 일이 발생하는가? 💡 결함 허용 (Spring Cloud - Circuit-Breaker/Hystrix)
  4. 보안, 속도제한과 같은 서비스 접근을 어떻게 제어하는가? 💡 서비스 보안 (Spring Cloud - OAuth2)
  5. 다수의 서비스는 서로 어떻게 커뮤니케이션 하는가? 💡 HTTP/메시징 (Spring Cloud - Feign/Spring Cloud Stream)
  6. 서비스간 ACID는 어떻게 달성하는가? 💡 CQRS (Spring Cloud - Conductor/Camel)
reference

Microservices with Spring Boot and Spring Cloud
그런 REST API로 괜찮은가?
Spring HATEOAS 사용해보기