Framework/프로젝트로 스프링 이해하기

[이커머스 프로젝트] API Gateway를 활용한 MSA (Micro Service Architecture)

simDev1234 2022. 11. 25. 12:58

|  MSA (Micro Service Architecture)

<-> Monolithic 

: 독립적으로 배포 가느안 서비스들을 모아서 하나의 application으로 만드는 설계 방식

  장점 단점
  - 각 어플리케이션의 독립적인 배포 가능
- 서비스의 일부를 독립적으로 수정, 개발 가능
- 특정 서비스의 scale up/out 이 가능 
- 장애가 전체로 번지지 않는다.
- 각 서비스의 독립적인 구성이 가능해진다.
- 트랜잭션 관리가 어려움
- 배포 서비스가 늘어나고, 관련 관리 비용이 증가
- 운영의 복잡성이 증가
   (너무 과하게 서비스를 쪼개는 건 피하자)

 

DDD (Domain Driven Design) 

: 도메인 중심 개발

: ex. 배달 서비스의 Customer엔 DeliveryOrder API가 존재할 것.

        온라인 쇼핑몰의 Customer엔 Exchange API가 존재할 것.

: Database 기반이 아님. 모델링의 주체를 도메인으로 두는 것을 말한다.

  * 모델링한 대상의 역할이 무엇인지를 잘 생각해야한다.

: 비즈니스의 기능을 생각해 보아야한다.

 

MSA 사용시 주의사항

** 트랜잭션 관리 : 다른 서버의 API를 호출하면서 발생할 수 있는 트랜잭션 예외 상황을 늘 고려해야한다.

 

Spring API Gateway

: ESB를 고도화 시킨 것.

: 라우팅, 보안, 모니터링, 메트릭, 탄력성 등을 지원

 

* ESB (Enterprise Service Bus) 

: 서비스들을 컴포넌트화된 논리적 집합으로 묶는 아키텍쳐 패턴

: 미들웨어(중개)와 라우팅, 전송 등을 담당하는 일종의 Web Service gateway

 

Feign

: 간편하게 API를 구성할 수 있게 돕는다.

https://github.com/OpenFeign/feign

 

GitHub - OpenFeign/feign: Feign makes writing java http clients easier

Feign makes writing java http clients easier. Contribute to OpenFeign/feign development by creating an account on GitHub.

github.com

 

 

[ 출처 ]

부트캠프 강의를 들은 후 정리한 내용입니다.