개선

개선

    Deview 2020 딥러닝 기술을 이용한 검색시스템 응답시간 예측 세션 리뷰

    도입 배경 - 네이버 검색 시스템이 보유하고 있는 검색에 필요한 데이터는 방대하다. - 다양한 호출처로부터 요청이 들어오고 검색어, 검색옵션, 검색방식등에 따라 수백~수천가지의 쿼리 타입이 만들어 질 수 있음 - 이런 수천가지 형태의 검색 요청이 왔을 때 1초라는 타임아웃 시간을 지키기 위해 검색 시간이 오래걸리는 쿼리를 찾기 위해 딥러닝을 사용하여 검색 시간이 오래 걸리는 요청들을 예측했다. 현재 검색 시스템 동작의 원리 검색 시스템 구성에는 여러 단계가 있는데 순서대로 다음과 같이 동작한다. - 문서 데이터 : 검색 대상이 되는 컬렉션 - 색인어 추출 : 컬렉션에 의미 있는 단어를 추출 - 색인 : 검색 대상이 되는 컬렉션에 색인된 색인어로 포스팅 해주는 작업. 이 때 색인어에 매칭된 문서의 횟수를 ..

    Elasticsearch 7.7 feature와 heap 메모리 사용량의 두드러진 감소량

    줄어든 heap 사용량Elasticsearch 사용자들은 Elasticsearch 노드에 저장이 가능한 만큼 데이터를 집어 넣지만, 가끔 disk에 저장되기 전에 heap memory 사용량이 초과되는 것을 경험한다. 이는 비용을 줄이기 위해 가능한 노드당 많은 양의 데이터를 넣고 싶은 사용자들에게 문제를 일으킨다. (실제로 현재 운영중인 es에서도 대량의 데이터 삽입 시 가끔 발생함) 왜 Elasticsearch에는 데이터를 저장하기 위해 heap memory 영역이 필요한걸까? 왜 디스크 공간만으로 충분하지 않은걸까?? 거기에는 여러 이유가 존재하지만 가장 중요한 이유는 루씬은 디스크 상에 데이터를 찾을 수 있는 위치를 찾아내기 위해서 일부 정보를 메모리에 저장해야 한다. 예를 들어 루씬의 inver..

    규칙 55 - 신중하게 최적화하라

    모든 프로그래머가 알아둬야 하는 최적화에 관련된 격언이 있다. 1. 맹목적인 어리석음을 비롯한 다른 어떤 이유보다도, 효율성이라는 이름으로 저질러지는 죄악이 더 많다. 2. 97%는 효율성을 잊어버려라. 섣부른 최적화는 모든 악의 근원이다. 그리고 프로그램을 작성하면서 기준을 삼아야 할 내용에 대해 소개한다. [기준] 빠른 프로그램을 만들려고 처음부터 노력하지말고, 좋은 프로그램을 만들려 노력하라. -> 좋은 구조를 가진 프로그램은 빠른게 변경하는데 어렵지 않다. -> 정보은닉의 원칙을 지키는 것이 좋은 구조를 갖는것에 첫 번째 항목이다. 설계를 할 떄는 성능을 제약할 가능성이 있는 결정들을 피하라. -> 특히 통신 API, 프로토콜 정의서는 변경하기 어렵기 때문에, 신중하게 코딩해야한다. API를 설계..