simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 참조타입
  • null
  • 참조변수
  • scanner #next() #nextLine()
  • 자바프로그램
  • 스프링
  • JVM메모리구조
  • 자바
  • 자바프로그래밍
  • controllerTest
  • 404
  • 컨트롤러
  • 자바메모리구조

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

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

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

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

 

 

[ 출처 ]

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

'Framework > 프로젝트로 스프링 이해하기' 카테고리의 다른 글

[이커머스 프로젝트] Swagger2 적용  (0) 2022.11.25
[이커머스 프로젝트] 멀티 모듈 생성하기  (0) 2022.11.25
[이커머스 프로젝트] 환경 변수를 외부에서 주입하는 법  (0) 2022.11.25
[이커머스 프로젝트] Docker란 무엇인가? (자료 정리)  (0) 2022.11.24
[이커머스 프로젝트] 주제 선정, Microservice 아키텍처 이해, 기능 단위의 계획, 시스템 구성도 그리기(draw.io)  (0) 2022.11.23
    'Framework/프로젝트로 스프링 이해하기' 카테고리의 다른 글
    • [이커머스 프로젝트] Swagger2 적용
    • [이커머스 프로젝트] 멀티 모듈 생성하기
    • [이커머스 프로젝트] 환경 변수를 외부에서 주입하는 법
    • [이커머스 프로젝트] Docker란 무엇인가? (자료 정리)
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바