엘라스틱서치 입문 Feat.플랫폼 비교 (AWS ES, Elastic Cloud, 직접 설치)

GeeseBumps
5 min readSep 3, 2021

--

검색엔진 오픈소스를 이야기 할 때 엘라스틱서치를 빼놓고 이야기할 수는 없을거라고 생각합니다.

지금까지는 저도 엘라스틱서치라는 것에 대해 듣기만 하고 실제로 써본 적은 없었는데요, 이번에 검색 엔진을 구축하게 되면서 많은 조사와 테스트를 했고 어떤 방식으로 사용하기로 결정했는지 기록하고자 합니다.

ElasticSearch를 사용할 수 있는 방법은 크게 2가지 정도로 요약할 수 있습니다.

  1. VM 인스턴스에 ElasticSearch 직접 설치
  2. 클라우드 서비스 이용

1번은 직접 모든 환경을 구축하는 방법이고 2번은 클라우드 서비스를 이용하는 방법입니다. 어떤 방법이 BEST라고는 말할 수 없지만 특정 상황에서 좋은 선택지는 분명히 존재하는 것 같습니다. 각 방법 별로 장단점에 대해 비교해보도록 하겠습니다.

1. VM 인스턴스 또는 로컬에 ElasticSearch 직접 설치

장점

이 방법은 ElasticSearch를 처음 접해보시는 분이라면 반드시 한 번 쯤은 해보시길 추천드리는 방법입니다. ElasticSearch을 클라우드 형태로 제공하는 AWS ES나 Elastic Cloud를 사용하게 되면 작동 방식이나 원리에 대해 파악하기 힘든 점이 있습니다. VM 인스턴스 또는 로컬에 직접 설치해보고 클러스터를 구성해보면서 ElasticSearch를 더욱 깊이있게 이해할 수 있고 이후에 클라우드 서비스를 이용하게 되었을 때 장점이 있다고 생각합니다.

클러스터를 구성하는 것 자체도 그렇게 어렵지는 않고 한국어로 된 좋은 자료들이 많습니다. 특히 아래 유튜브 링크를 꼭 정주행하길 추천드립니다.

처음부터 시작하는 Elastic

단점

제일 큰 단점은, 실제 서비스에 이 방식으로 검색 엔진을 배포하기에는 부담이 된다는 점입니다. ElasticSearch는 기본적으로 분산 처리를 지원하고 여러개의 노드(인스턴스)를 사용했을때 그 효과가 극대화 됩니다. 그렇다면, VM 인스턴스를 여러개 띄우면서 클러스터를 유지해야 하고, 이는 운영 측면에서 쉬운 일이 아니라고 생각합니다.

또한 학습 목적으로 설치 과정을 진행해보는 것은 매우 좋은 경험이지만 실제 배포를 위해 설치하고 환경을 세팅하는데 생각보다 귀찮을 수 있습니다. 그나마 다행인 점은 환경 세팅이 엄청 어려운 편은 아니라고 생각이 들지만, 그래도 귀찮습니다.

2. 클라우드 서비스 이용

직접 설치 방법의 단점이 실 배포 단계에서는 매우 크리티컬하기 때문에 많은 분들이 클라우드 서비스 이용을 고려하실 거라고 생각합니다. 우선 직접 설치와 비교했을 때 클라우드 서비스의 공통적인 장점은 다음과 같습니다.

클라우드 서비스 장점

  • 설치를 안해도 된다.
  • 서비스 추가 후에 바로 배포 단계로 사용할 수 있다.
  • 노드, 리소스 추가 등의 환경 구성 변경과 클러스터 유지를 알아서 해준다.

클라우드 서비스의 유일한 단점은 비싸다는 것입니다. 다만, 직접 설치의 경우도 여러개의 VM 인스턴스를 띄우는 비용, 관리에 필요한 인적 리소스 비용 등을 생각하면 만만치 않은 비용이 들기 때문에 오히려 직접 설치의 경우보다 더 적은 비용이 들 거라고 생각은 합니다.

그럼 이제 어떤 클라우드 서비스를 이용할 것인지 고민이 됩니다. ElasticSearch 기능을 제공하는 서비스는 AWS와 Elastic이 있습니다. 두 서비스는 장단점이 너무 확실해서 각자가 맞는 서비스를 선택할 수 있다고 생각합니다.

제가 생각하는 비교해볼만한 중요한 장단점들은 다음과 같습니다.

AWS ES(Elasticsearch Service)

장점

  • AWS 인프라와 함께 사용하기 좋다.
  • kNN, 자동완성 인덱싱 기능 등의 다양한 인덱싱 기능을 함께 제공한다.
  • 단일 등급으로 모든 기능을 제공한다.

단점

  • Elastic의 공식 한국어 tokenizer인 Nori를 제공하지 않는다. (은전 Tokenizer는 제공)
  • 커스텀 패키지를 설치할 수 없다.
  • Elastic 그룹과 살짝(?) 대립관계이기 때문에 최신 버전의 ElasticSearch를 사용할 수는 없다.

AWS ES를 사용하고 싶다면 아래 링크를 참고하시면 좋을 것 같습니다!

Workshop Studio

Elastic Cloud

장점

  • Elastic 공식 클라우드이다.
  • 커스텀 패키지를 설치할 수 있다.
  • Nori Tokenizer를 제공한다.

단점

  • 등급에 따라 제공하는 기능이 다르다.
  • AWS 인프라에 포함되지 않기 때문에 또 다른 인프라를 구축하는 것에 대한 거부감(?)이 약간 있다.

더 자세한 비교는 아래 링크에서 하실 수 있습니다.

AWS ES와의 비교

요약

ElasticSearch를 처음 접하시는 분들은 직접 설치를 먼저 해보시길 추천! 그 후에 실제 서비스로 이용할 때는 클라우드 서비스를 추천하고 AWS ES와 Elastic Cloud 중 본인에게 맞는 클라우드 서비스를 선택하기.

결론

저희는 여러가지를 고려한 결과 AWS ES를 사용하기로 결정했습니다. 그 이유는 우선 AWS ES에 분명히 단점이 존재하지만 그렇게 크리티컬하다고 느껴지지는 않았습니다. 가장 고민되었던 Nori 토크나이저를 사용하지 못한다는 점에서는 AWS ES에서 제공하는 은전 토크나이저도 나쁘지 않은 성능을 보여주었고 검색이 아주 잘 되었습니다. 또한 인덱싱 기능 중에 저희가 필요로 하는 인덱싱 기능이 많았습니다. AWS 인프라 내에서 구성할 수 있다는 것도 큰 결정 포인트 중 하나였습니다.

--

--