이승학 버즈니 서비스엔지니어링 팀장

▲ 이승학 버즈니 서비스엔지니어링 팀장

[컴퓨터월드] 많은 애플리케이션들은 서비스 사용성과 품질을 보장하기 위해 상당부분 ‘검색’ 기술에 의존하고 있다. 하지만 검색은 다양한 기술의 융·복합체로 쉽게 접근하기 어렵고 여러 가지 어려운 배경 지식을 필요로 한다.

이런 검색 기술의 접근성을 높이고 구현을 용이하게 해주는 솔루션들로는 아파치 루씬(Apache Lucene) 라이브러리에서 파생된 아파치 솔라(Apache Solr), 엘라스틱서치(Elasticsearch)등이 있다. 엘라스틱서치의 필수 구성 요소들을 통해 검색 엔진에 대한 이해도를 높이고 서비스로서의 활용 가능성과 효용 가치를 공유하고자 강좌(7회)를 신설했다. <편집자 주>

1. 엘라스틱서치 파이썬 클라이언트를 이용한 ‘검색’ 입문 (9월호)
2. 엘라스틱서치로 검색엔진 전환하기 (10월호)
3. 엘라스틱서치 활용(1): 자동완성 (11월호)
4. 엘라스틱서치 활용(2): 로그 시스템 (1월호)
5. 엘라스틱서치 단계별 최적화 (2월호)
6. 검색엔진 관리 자동화 (3월호)
7. 엘라스틱서치 플러그인 살펴보기 (이번호)


지난 강좌들에서 엘라스틱서치를 통해 손쉽게 검색엔진을 구축 하는 방법과 실제 활용이 가능한 몇 가지 사례들을 살펴봤다. 지금까지 연재한 강좌가 검색의 진입장벽을 낮춰주는 계기가 되었길 바란다. 이번 호에서는 앞서 6편의 강좌에서 다루지 못했지만 알아두면 도움이 되는 꿀팁 몇 가지를 소개한다.

많은 오픈소스 프로젝트들이 다양한 플러그인을 통해 생태계를 갖추고 있듯이 엘라스틱서치도 사용자-개발자들을 위한 플러그인을 적극 지원하고 있다. 엘라스틱서치에서는 직접 개발해 제공하는 플러그인을 코어 플러그인(Core Plugins)으로 제공하며, 사용자들이 기여하여 만든 커뮤니티 컨트리뷰트(Community contributed)로 분류하고 있다.

대표적으로 언어처리를 위한 Analysis, 보안성 강화 위한 Security, 데이터백업을 위한 Snapshot/Restore, 그리고 상용 플러그인 X-PACK 등이 있다. 이 중에서 필자가 자주 사용하고 있고, 여러분도 사용하게 될 Analysis, Snapshot/Restore를 통해 플러그인 사용법에 알아보도록 하자.


# How to Elasticsearch Plugin

간단하게 한글 형태소 분석기인 ‘노리(Nori)’ 설치 과정을 통해 플러그인 설치 방법과 몇몇 명령어들을 사용해보도록 하자.

플러그인 바이너리는 엘라스틱서치 설치 위치에 ‘/bin’ 디렉토리 안에 ‘elasticsearch-plugin’라는 이름으로 존재한다. <그림 1>과 같이 설치된 플러그인의 목록 확인과 설치, 삭제 기능을 제공한다. 엘라스틱서치 자체로 제공하는 공식 플러그인들은 정해진 키워드만으로도 설치를 지원하며, 커뮤니티 버전의 외부 플러그인들은 URL이나 파일을 통해서 설치 가능하다.

▲ 엘라스틱서치 플러그인 사용법

엘라스틱서치의 높은 사용 편의성은 플러그인 사용에서도 확인할 수 있다. ‘install’과 ‘remove’만 기억하고 있으면 더 이상의 사용법은 필요없다. 설치할 플러그인의 이름이나 경로만 정확히 알고 있으면 된다. 단, 꼭 기억해야할 부분은 플러그인이 설치되었다고 해서 바로 적용되지 않는다는 점이다. 설치된 플러그인은 엘라스틱서치를 시작할 때 초기화 시점에 반영되기 때문에, 플러그인 설치 후 엘라스틱서치를 재시작 해주도록 하자.

▲ 엘라스틱서치 플러그인 설치-삭제


# Korean ‘Nori:노리’

플러그인 사용법을 통해서 설치한 ‘노리’를 사용해보도록 하자. ‘노리'는 2018년 하반기부터 엘라스틱서치에서 공식적으로 지원하는 한글 형태소 분석기 목록에 포함됐다. ‘mecab-ko-dic’ 말뭉치를 기본으로 사용하며, 사용자 사전을 추가하여 사용하는 것도 가능하다. ‘노리’를 인덱스 셋팅으로 사용할 임의의 analyzer로 등록하면 문서의 필드에 사용할 수 있게 된다.

▲ 인덱스 셋팅에 포함된 ‘노리'

‘노리'는 합성어에 대한 분석 결과를 none, discard, mixed 3가지 형태로 지원하며, 합성어 원본의 형태, 합성어를 분해한 형태, 그리고 두 가지 형태를 모두 보여주게 된다.


# AWS S3 Snapshot/Restore

엘라스틱서치 클러스터, 인덱스를 사용하다보면 데이터 관리와 복구 안정성 측면을 강화하기 위해 백업/스냅샷을 필요로 하게 된다. 이때 AWS, AZURE, GCP의 스토리지와 연동해 스냅샷 공간을 사용할 수 있도록 플러그인을 지원한다.

클라우스 서비스별로 플러그인명은 repository-s3, repository-azure, repository-gcs를 사용하면 된다. 필자가 주로 사용하는 AWS S3 기반으로 예제를 이어나가도록 하겠다.

▲ AWS S3 플러그인 설치

AWS S3를 스냅샷 스토리지로 사용하기 위해서 접근 권한이 부여된 access_key와 secret_key를 먼저 등록해야 한다. 그 후에 추가로 필요한 S3 접속 정보를 입력해주면 스냅샷을 사용할 준비가 끝난다.

▲ S3 스냅샷 스토리지 셋팅

S3 스토리지가 준비됐다면 실제로 클러스터 테스트 스냅샷을 통해 정상 작동 유무를 확인해봐야 한다. 스냅샷을 수행한 후 S3 해당 버킷에 정상 적재되는 것과 다시 복구했을 때의 데이터 변이 여부를 파악하면 되겠다. 필요에 따라 해당 스크립트를 주기적으로 동작시키도록 하여 혹여 발생할 수 있는 다양한 장애 상황대응에 유용하게 사용하도록 하자.

▲ 스냅샷 생성 및 복구


# 마치며

엘라스틱서치는 오픈소스 기반으로 시작되었기에 개발자 생태계가 잘 갖춰져 있다. 이는 플러그인 시스템이 비교적 잘 갖춰져 있는 것을 보면 알 수 있다. 서비스-시스템 운영에 필요한 플러그인들을 잘 활용해 순수 검색엔진의 부족한 부분을 보완하며 사용하길 바란다.

필자의 사용 경험과 시점에서 다양한 내용을 전달하고자 하였으나 그 내용과 깊이를 모두 담을 수 없기에 아쉬움이 남는다. 미처 다루지 못한 부분이나 재미있는 시도와 실험을 독자 여러분들을 통해 반대로 접해 볼 수 있길 기대해보며 본 강좌를 마치도록 하겠다.

 

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지