Closed not-for-me closed 5 years ago
api
컴포넌트에서 netty 기반의 webflux를 사용하여 요청당 스레드 모델이 아닌 이벤트 루프 방식을 사용하기로 한다. write
와 read
를 분리하고 인기 검색어 추출은 scheduler
를 통해서 백그라운드에서 갱신한다.
이 개념 설계를 바탕으로 LSS 서비스의 기술 스택은 다음으로 결정한다.
JDK 8
: latest 버전을 따라가도 되지만 특이사항이 없으므로 8로 결정프레임워크
: 스프링 부트를 사용하는데 다음 모듈을 사용하기로 한다.
security
: 사용자 기본 인증/권한 관리용webflux
: 클라이어언트 요청 처리spring-data-jpa
: orm용cache
: 빈번한 키워드의 경우 local cache를 사용하여 불필요한 외부 호출을 줄이고 응답 속도를 높이기 위해 사용한다. LSS에서는 구현체로 caffein을 사용한다.h2db
: 샘플 프로젝트로 간단히 인메모리 db를 사용한다. jpa를 사용할 예정이므로 필요한 경우 다른 db로 변경하면 된다.Vue.js
: 클라이언트 웹 애플리케이션은 간단한 SPA 구성을 위해 Vue.js를 사용한다.testing
라이브러리: 테스팅을 위해 junit
, mockito
, assertj
를 사용한다.사용자 인증부는 jdbc
와 통신을 해야하기 때문에 구조적으로 synchronous한 부분이 있지만 본 서비스에서는 인증 자체가 제한적으로 사용되므로 reactive 스타일을 유지하기로 한다.
Location Search Service 제공을 위한 개념 설계와 함께 이를 기반으로 구현에 사용할 기술 스택을 정리한다.