본문 바로가기

개발자를 벗어나긴 글렀다./Spring boot

Spring Boot + ES 연계방식 탐구

 

Spring boot 와 ES를 연계시 최초에 정해야 하는것이 있다.

 

어떻게 연계할 것인가? 

 

2가지 방식이 있다.

 

REST Client   Transport Client(Netty) 
HTTP방식을 이용해 엘라스틱서치와 통신한다. 
내부적으로는 HttpClient 모듈을 사용한다. 
HTTPS 사용이 가능하다. 
9200 포트 사용
Java Client라고도 불린다. 
초기부터 제공되던 클라이언트 방식으로, 상대적으로 빠른 속도를 보장한다. 
소켓을 이용해 엘라스틱서치와 통신한다. 
내부적으로는 Netty모듈을 사용한다.
9300 포트 사용
초기버전의 엘라스틱서치에서는 소켓을 이용하는 Transport 클라이언트만 제공됬다. 일종의 엘라스틱서치 노드와 비슷한 방식으로 동작하기 때문에 속도는 빠르지만 엘라스틱서치가 버전업될 때마다 제공되는 기능이나 API의 명세에 따라 클래스나 메서드가 바뀌는 문제점이 있었다. 이러한 문제점을 해결하기 위해서 새로운 모듈인 REST 클라이언트가 도입됐다.

아직까지 Transport방식이 많이 사용되기는 하지만 엘라스틱서치 7.0부터는 해당 방식이 deprecated됬으므로, REST 클라이언트 방식을 사용하는 것이 나을 듯 싶지만, 최근 버전에서는 어떻게 될지 모르겠지만, REST 클라이언트에 지원이 안되는 Transport방식의 기능도 있으므로 용도에 따라 적절히 혼합하여 사용해야할 듯하다.
출처 : https://coding-start.tistory.com/172

 

 

결론적으로 2가지 방식에도 장단점이 존재한다. Transport 방식은 빠르고 개발이 쉽다. 다만, 버전업이나 변경이 있을경우 response자체가 변경될 가능성이 높다. 다음 버전부터는 사라질 예정이고, Rest 방식으로 다 통일될 예정이다.

 

 

version  매핑 확인 : https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#reference

공식문서 : https://velog.io/@hanblueblue/%EB%B2%88%EC%97%AD-spring-data-elasticsearch