[스프링으로하는 마이크로서비스 구축] 영속성 추가, 리액티브 마이크로서비스 개발

뿌이·2022년 2월 22일
0

스프링 클라우드

목록 보기
18/32

영속성 추가

MapStruct의 사용 목적

MapStruct란 DTO <-> Entity 간 객체 Mapping을 편하게 도와주는 라이브러리

성능

  • Mapstruct는 압도적으로 빠르다 ( mapstruct: 10^-5 ms, modelmapper: 0.002 )
  • Throughput(처리량)이 그래서 엄청 빠르다 ( mapstruct : 37149, modelmapper: 439 ) // ms당 operation횟수

사용 목적

실제 거대한 시스템을 만들다보면, 다양한 도메인 영역들이 있고, 
  이를 변환하는 작업은 개발자에게 있어서

매우 귀찮고, 실수하기 딱 좋고, 번거로운 경우가 굉장히 많습니다

우리는 이를 실수하지 않게 검증된 라이브러리를 사용하는 것이죠!!

 

심지어 다른 Mapper 라이브러리보다도 훨씬 빠르다구요~~

java entity dto 매핑을 편하게 하자! 참고하면 더 자세한 설명이 있습니다.

리액티브 마이크로 서비스 개발

리액티브 마이크로서비스 개발 방법을 아는 것이 중요한 이유는 무엇인가?

어떤 상황에도 높은 응답성을 유지할 수 있는 새로운 유형의 시스템이 필요하기 때문에

리액티브 시스템을 만들기 위한 요소

응답성 : 사용자에게 신뢰성 있는 응답을 빠르고 적절하게 제공하는 것

탄력성 : 장애가 발생하거나 부분적으로 고장 나더라도 시스템 전체가 
  고장 나지 않고 빠르게 복구하는 능력

유연성 : 시스템의 사용량에 변화가 있더라도 균일한 응답성 제공, 
  시스템 사용량에 비례해서 자원을 늘리거나 줄이는 능력

메시지 기반 : 비동기 메시지 전달을 통해 위치 투명성, 느슨한 결합, 
  논블로킹 통신을 지향하는 것

리액티브 시스템이 반드시 갖춰야 할 공통적인 특성 : 아키텍처 유연성

시스템을 구성하는 구성요소 간의 관계들이 느슨하게 맺어져 있어 언제든지 대체되거나 추가 확장될 수 있는 특성

논블로킹 동기 API와 이벤트 기반 비동기 서비스의 선택 기준

일반적으로 견고하고 확장성 있는 마이크로서비스를 만들려먼 가능한 한 자율적으로 만드는 것이 중요

런타임 의존성을 최소화해야 함 -> 느슨한 결합(loose coupling)

따라서 동기 API 방식보다는 이벤트 기반 비동기 메시지 전달 방식을 선호

논블로킹 동기 API를 사용하는 것이 유리한 경우도 있음

  • 최종 사용자가 응답을 기다리는 읽기 작업일 때
  • 모바일 앱이나 SPA 웹 애플리케이션처럼 동기 API가 알맞은 클라이언트 플랫폼일 때
  • 클라이언트가 다른 조직의 서비스에 연결할 때

출처

리액티브 마이크로서비스 개발
리액티브 마이크로서비스 개발2

profile
기록이 쌓이면 지식이 된다.

0개의 댓글