[강사인터뷰|실무에 활용하는 Elasticsearch 검색엔진 구축 CAMP] 미미박스에서는 어떻게 Elasticsearch를 활용하냐고요?_정호욱 강사님

[강사인터뷰|실무에 활용하는 Elasticsearch 검색엔진 구축 CAMP] 미미박스에서는 어떻게 Elasticsearch를 활용하냐고요?_정호욱 강사님

 

elastic_2.001

 
 

1. 안녕하세요. 정호욱 강사님. 본격적인 인터뷰를 시작하기 앞서 먼저 간단한 소개 부탁드립니다. 

반갑습니다. 미미박스 검색 개발실 실장 정호욱입니다. Elastic stack을 활용해 사용자 로그 분석, 추천 시스템, 검색 엔진 등 전반적인 사이트 운영 및 개발을 맡고 있습니다. 이전에는 Yahoo Korea, Naver(NTS), 삼성전자 등에서 Software Engineer로 일했고, [ 실무 예제로 배우는 Elasticsearch 검색엔진 – 기본편 & 활용편 ]을 집필하기도 했습니다. [ 실무에 활용하는 elasticsearch 검색엔진 구축 CAMP ]에서 실무자 특강 파트를 담당하고 있습니다. 
 
 

2. [ 실무에 활용하는 Elasticsearch 검색엔진 구축 CAMP ]에서 현업 전문가로서 생생한 실무 이야기를 전해주실 예정이신데, 아무래도 이런 부분에 대한 갈증을 많은 분들이 가지고 계실 것 같습니다. 일반적으로 실무에 계신 분들은 관련된 정보나 궁금증을 어떻게 해결하시나요?

대부분 구글링이나 사용자 그룹을 통해 정보를 얻으시거나, Elasticsearch 홈페이지에서 공유하고 있는 고객사 활용 사례를 참고하시는 경우가 많습니다. 하지만, 정말 현업에 필요한 아키텍처나 구성 방법에 대해서는 사실은 잘 공개가 되어 있지는 않습니다. 그렇기 때문에 실무자 분들이 어려움을 겪으시죠. ‘이렇게 구성을 해도 괜찮을까?’ ‘혹시 서비스에 적용했을 때 문제가 발생하지는 않을까?’와 같은 의문에 대해 정확한 답을 찾을 수 없으니까요. 직접 해보지 않은 영역이다 보니 조심스러울 수밖에 없습니다. 아무래도 실제 고객 서비스와 연동이 되어있으면 기업 입장에서는 불확실한 내용을 바로 서비스에 적용하기 부담스러울 수 있습니다. 
 
 

3. [ 실무에 활용하는 Elasticsearch 검색엔진 구축 CAMP ]에서 4회차 실무자 특강을 맡고 계신데, 특강에서는 어떤 내용을 주로 다루는지 궁금합니다.

일반적으로 많은 분들이 Elastic stack을 이용해 현업에서 실제 어떻게 활용하고 있는지, 검색 엔진을 서비스에 적용 시  안정성과 관련된 이슈는 없는지 궁금해하십니다. 서비스와 직접 관련된 검색엔진의 경우 이런 불안감 때문에 적용을 주저하시는 경우도 종종 있죠. 검색 엔진 말고도 내부적으로 로그 데이터를 수집해서 분석하는 용도로도 많이 쓰입니다.

현재 미미박스에서는 Elastic stack을 활용해 서비스 단 뿐만 아니라 관련 로그 데이터를 수집해 분석하는 목적등으로 사용하고 있습니다. 다시 말해, 전반적인 서비스 운영과 프론트엔드, 백엔드를 걸친 Elastic stack과 관련된 모든 소프트웨어들을 전부 사용하고 있다고 봐도 무방하죠.  이런 경험을 살려 특강에서 제가 현업에서 어떤 식으로 활용을 하고 있는지 알려드리고, 앞으로 사용하실 혹은 사용하고 계신 분들에게 실무자로서의 팁을 공유해드릴 예정입니다. 

오픈컨퍼런스에 가본 적도 많지만 실제 현업에 바로 적용할 만한 내용이 많지 않은 것이 늘 아쉬웠습니다. 지금 당장 나에게 필요한 내용, 혹은 문제 상황에 대한 해결점을 얻어 갈 수 있는 강의를 마련하면 좋겠다는 생각을 늘 가지고 있었죠. 제가 맡은 특강 파트가 바로 그런 시간이라고 생각합니다. 그래서 매 기수 특강의 구성을 조금씩 변화시켜 가면서, 최대한 최근의 기술 변화에 대해 전달해드리려고 노력합니다. 실무에서도 지속적으로 기술이 develope 되어가고 있고, 기존에 있던 것에서 변경되고 추가되는 것들이 끊임없이 생기고 있기 때문이죠. 
 
 

4. 현업에 계신 분들이 검색 엔진을 구축하실 때 구체적으로 어떤 어려움을 경험하게 되는지 궁금합니다.

로그 수집과 분석을 목적으로 하시는 분들은 대부분 대용량 처리에 성능적인 부분과 안정성에 대한 어려움을 이야기 하시는 것 같고, 고객 서비스를 목적으로 사용하시는 분들은 거의 대부분 형태소 분석기에 대한 어려움을 이야기 하시는 것 같습니다. 로그 수집과 분석은 데이터와 장비의 규모가 크기 때문에 경험이 없는 상태에서 바로 현업에 적용하기에는 어려운 점이 많이 있을 수 있습니다. 예를 들면 각 노드 구성은 어떻게 해야 하는지, 노드별 장비 스펙은 어느 정도 수준이 적정한지, 인덱스 구성과 샤드에 대한 파티셔닝은 어떻게 해야 하는지, 백업과 복구는 어떻게 관리가 되어야 하는지 등등 고민하고 적용해야 할 내용들이 많기 때문 입니다. 형태소 분석기는 경험 보다는 NLP (Natural language processing) 자연어 처리 부분에 대한 전문 지식이 더 필요한 분야라고 생각 됩니다. 해당 분야는 언어학을 전공해야 잘 할 수 있기 때문에 그냥 오픈 소스가 있으니 사용하면 되겠지 하고 쉽게 접근 하면 크게 낭패를 보실 수도 있습니다.  저 또한 언어학 전공자가 아니다 보니 자연어 처리 전체를 컨트롤하기에는 어려움이 있습니다. 물론 개발자이기 때문에 제게 필요한 부분을 커스터마이징할 수 있긴 하지만 말이죠. 

더불어, 사전 작업도 꽤나 까다롭습니다. 쉽게 예를 들자면, 쇼핑몰 같은 경우에는 1-2음절 정도의 아주 짧은 단어들로 검색어가 구성됩니다. 이런 경우에는 처리가 어렵지 않습니다. 하지만, 네이버와 같은 통합검색엔진의 경우 사용자들이 문장단위로 검색을 합니다. 때문에 비교적 긴 검색어의 문맥과 의도를 정확히 캐치해내야 합니다. 특히, 좋아요, 싫어요, 좋은 것 같아요, 별로인 것 같아요, 나쁘지 않은 것 같아요 등 주관적인 감정, 느낌과 관련된 단어를 포함할 때 그것이 긍정적인 의미인지, 부정적인 의미인지 판단해야 하죠. 

사용자 입장에서는 단순한 ‘검색 행위’가 발생하는 것이지만, 그 뒤에서는 검색어와 의도에 대한 정확한 판단을 위해서 분석을 해야 하고, 이 분석에는 머신 러닝이나 분류, 활용 단계까지 다양한 과정을 거쳐야 합니다. 따라서, 한국어 Full-Text 검색엔진을 구축하는데 많은 어려움을 겪게 되는것 같습니다.
 
 

5. 1회차로 짧은 시간이지만 8주 강의에서 정말 빼놓을 수 없는 파트가 될 것 같습니다. 실무자로서의 팁을 공유해주신다고 하셨는데, 지난 기수 특강에서는 어떤 내용을 전해주셨나요?

먼저 미미박스의 검색 서비스를 보여드리고, 서비스 뒤 단에 구축되어 있는 모니터링 시스템을 통해 문제가 발생했을 때 어떻게 실시간으로 알림이 오는지 실제 동작 되는 모습들을 일부 공개했습니다. 

그 밖에도 다양한 내용을 전해드렸는데, 그 중 하나를 설명드리자면 저희가 아리랑이라는 한글 형태소 분석기를 사용하고 있고, 왜 아리랑 형태소 분석기를 사용했는지에 대해 말씀해드렸습니다. 아리랑의 경우 krlucene 시절 부터 lucene에 가장 최적화된 형태소 분석기라고 판단 하였고 서비스를 제공하는 입장에서 사전 정보 변경 시 서버 재시작이라는 불필요한 작업을 하지 않아도 된다는 장점을 가지고 있어 아리랑을 사용하고 있습니다. 실제 저희는 정기적으로 2주 단위 실시간 사전 업데이트를 진행 하고 있으며 서비스 오픈 후 검색엔진 클러스터에 대한 재시작은 단 한번도 진행 된적이 없습니다. 그 정도로 안정성 측면도 확보가 되었다고 생각 합니다.
 
 

6. 현업에서 사용하고 계시는 구조나, 실제 일하는 과정을 공개하는 것이 부담스럽지는 않으신가요?

Elasticsearch 자체가 오픈소스이기 때문에, 제가 알고 있는 내용들을 공유하는 것을 긍정적으로 생각합니다. 물론, 회사 내부적인 보안과 관련된 일부 내용은 그대로 전할 수 없겠지만, 제가 사용하고 있는 구조라든지 일하는 과정에 대해서 가능한 구체적으로 설명드리려고 합니다. 이런 구조를 가져다 사용하시면 제 입장에서는 Elasticsearch 사용자 활성화에 일조했다는 생각에 기쁠 것 같습니다. 
 
 


7. 어떤 분들이 이 강의를 들으면 좋을까요?

특강에 한정해서 이야기하자면 현업에서 이미 Elasticsearch를 활용하고 있거나, 앞으로 활용 계획을 가지고 계신 분들이 들으시면 좋을 내용이 많습니다. 혹은 회사에 Elasticsearch 도입을 제안하고 싶은데 실무에서 적용했을 때 어떤 과정이 필요하고, 어떤 결과를 가져오게 될지 전문가의 레퍼런스가 필요하신 분들이라면 제 특강이 도움이 될 거라 생각합니다. 

기존에 사용하고 계시면서 어떻게 하면 좀 더 효과적으로 활용할 수 있을지 혹은 문제 상황에 대한 경험이 부족해 노하우나 기술 공유를 원하시는 분들도 환영합니다.
 
 

8. 마지막으로 한 말씀 부탁드립니다.

많이 질문하시는 만큼 얻어 갈 수 있는 강의가 될 것이라 생각합니다. 활용하려는 목적이 무엇인지 구체적인 상황과 조건을 설명해주시고, 질문을 해주시면 보다 원하시는 답변을 드릴 수 있을 것입니다. Elasticsearch를 이용해서 이커머스 내에 상품 검색 서비스를 접목하고 싶으신 것인지 시스템이나 어플리케이션 에러에 대한 노티피케이션을 빠르게 받아 처리하고 싶은 것인지, 혹은 사용자 행동 패턴 파악을 위한 로그 데이터 분석인 것인지에 대해 정확하게 범주를 좁혀서 질문하시면 좋을 것 같아요. 그래야 문제 상황에 대한 최적의 해법을 찾아드릴 수 있을 테니까요. 각각의 기능별로 질문을 해주셔야 세부적인 답변을 드릴 수 있습니다.

제가 혼자 이야기하는 특강이 아니라 많은 질문을 통해 원하시던 바를 얻어가실 수 있는 특강이 되기를 기대합니다!

 
 

elastic_1.001

강의에 대해 궁금하신가요?
[ 실무에 활용하는 Elasticsearch 검색엔진 구축 CAMP ]  자세히 보기 >>

Recent Posts