만쥬의 개발일기
[Network] - 프록시와 리버스 프록시
🖥️CS/🛜네트워크 2024. 4. 8. 18:04

프록시란 프록시 서버는 클라이언트와 서버 사이에서 서로 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 시스템 혹은 응용프로그램이다. 프록시(Proxy)는 대리라는 의미를 가지며, 서버와 서버 사이 중계기 역할을 한다. 프록시를 통해 통신함으로써 보안, 성능, 안정성에 이점이 생긴다. 그리고 프록시는 네트워크 상의 위치와 데이터를 제공하는 방향에 따라 포워드 프록시와 리버스 프록시로 나뉜다. 포워드 프록시(Forward Proxy) 개념 포워드 프록시 서버는 위 그림처럼 클라이언트의 뒤에 놓여 있다. 클라이언트가 서버에 접근하고자 할 때, 해당 타겟 서버 주소를 포워드 프록시 서버에 전달하면 프록시 서버는 인터넷으로 요청을 보낸 뒤 응답을 가져오는 방식으로 작동한다. 특징 포워드 프록시는 다음과..

[Elasticsearch / Seminar] - GenAI Workshop 후기

🚀개요 이번 포스팅에서는 4월 3일 엘라스틱 코리아에서 파트너사를 대상으로 진행한 세미나에 참여하게 되어 다녀온 후기와 배웠던 내용들을 간략하게 남기고자 합니다 🖐️ 세미나는 시청에 위치한 에티버스 타워에서 진행되었습니다. 덕분에 오랜만에 숭례문도 보고 왔습니다 ㅎㅎ 뒤쪽으로 SK의 그린빌딩도 보이네요 세미나는 오후 2시 ~ 오후6시까지 진행되었고, 약 70명 이상의 꽤 많은 파트너사 직원들이 참여해주신 행사였습니다. 이번 세미나는 엘라스틱 코리아의 솔루션 아키텍트이신 필립님께서 진행해주셨고, 입문자 수준에서엘라스틱서치와 GenAI에 대한 개요, 그리고 응용을 위한 실습을 위주로 이루어졌습니다. 그 중 제가 이해하고 좋았던 부분들에 대해 공유해보겠습니다. 🖊️Generative AI 소개 GenAI에 대..

[Elasticsearch] - 집계(aggregation)

집계(aggregation)란? 엘라스틱에서 집계는 데이터를 그룹핑하고 통곗값을 얻는 기능으로 강력한 검색 성능과 ES를 고성능 집계 엔진으로 활용하게 해준다. 집계를 잘 이해할수록 키바나를 더 잘 사용할 수 있다. ES에는 다음과 같은 집계들이 있다. 메트릭 집계 버킷 집계 파이프라인 집계 집계의 요청과 응답 형태 집계를 위해서 특별한 API를 사용하지 않아도, Search API의 요청 본문에 aggs 파라미터를 추가함으로서 쿼리에 대한 집계를 생성할 수 있다. 메트릭 집계 메트릭 집계는 필드의 최소/최대/합계/평균 등 통계 결과를 보여준다. 다음은 메트릭 집계의 종류이다. 메트릭 집계 설명 avg 필드의 평균값을 계산한다. min 필드의 최솟값을 계산한다. max 필드의 최댓값을 계산한다. sum ..

[Elasticsearch] - 쿼리와 스코어링

쿼리 컨텍스트 vs 필터 컨텍스트 엘라스틱의 검색은 다음 두 가지로 나뉜다. 쿼리 컨텍스트 질의에 대한 유사도를 계산해 더 정확한 결과를 먼저 보여준다. 필터 컨텍스트 유사도를 계산하지 않고 일치 여부에 따른 결과만을 반환한다. 스코어 계산 과정을 생략해 쿼리 속도를 올릴 수 있다. 캐시를 이용할 수 있다. _search는 검색 쿼리를 위해 제공되는 REST API이고, match는 전문 검색을 위한 쿼리이다. 다음 예시를 보면 clothing 용어가 있는 도큐먼트를 찾아 총 3927개의 도큐먼트 중 스코어가 높은 순으로 정렬된다. 필터 컨텍스트와 쿼리 컨텍스트는 모두 search API를 사용한다. 단지 내용에 따라 쿼리가 구분되는데, 필터 컨텍스트는 논리(bool) 쿼리 내부의 filter 타입에 적..

[Elasticsearch] - 인덱스 템플릿 사용하기

인덱스 템플릿 인덱스 템플릿은 설정이 동일한 복수의 인덱스를 만들 때 사용한다. 인덱스를 파티셔닝하는 일이 많은데, 이 때 파티셔닝하는 인덱스들은 설정이 같아야 한다. 설정이 동일한 인덱스를 매번 일일이 작성하는 것은 매우 비효율적이다. 다음과 같이 템플릿 API를 사용해 현재 등록된 인덱스 템플릿을 본다. GET _index_tamplae 와일드카드 표현식으로 다음과 같이 특정 인덱스 템플릿을 확인할 수도 있다. GET _index_template/ilm* 인덱스 템플릿은 다양한 설정이 가능하지만 주로 매핑과 세팅 설정을 한다. 다음은 인덱스 템플릿을 생성하는 예시이다. PUT _index_template/test_template { "index_patterns": [ "test_*" ], "prior..

[Elasticsearch] - 엘라스틱 서치의 색인 With 분석기

역 인덱스 (Inverted index) ES는 텍스트와 도큐먼트를 인덱싱 시점에 용어 단위로 분해하고 역인덱스 사전을 구축한다. 특히, 기존의 데이터로 처리하기 힘든 대량의 비정형 데이터 검색이 가능하며, 전문 검색과 구조 검색 모두를 지원한다. 그리고 데이터들을 집계를 위해 최적화하고, 이를 바탕으로 병렬처리나 분산처리가 가능하다. 다소 생소한 개념인 역인덱스를 하는 과정을 알아보자. 먼저 평범한 관계형 DB에 다음과 같이 데이터를 저장한다고 생각해보자. 만약 이 데이터베이스에서 fox가 포함된 행을 찾는다면, Like %fox%를 사용해 모든 데이터베이스를 읽어야한다. 그러나 이러한 전방위 검색은 절대 해서는 안되는 불문율이 있다. (데이터가 많으면 시스템이 맛이 갈 수도 있다) 따라서 ES는 데이..

article thumbnail
[ELK] - 엘라스틱 서치 기본 개념 & 용어

엘라스틱 서치(ES)의 모든 기능은 REST API 형태입니다. 몇가지 예시는 다음과 같습니다. 테스트는 키바나 → Management → Dev Tools 에서 실행했습니다. POST /user/_doc/3 { "name": "kim", "age": 10 } ➡️ es_index라는 인덱스를 만들고 1번 도큐먼트를 생성한다. GET user ➡️ user를 조회한다. GET user/_doc/3 ➡️ user 내부의 3번 도큐먼트만 조회한다. DELETE user ➡️ user를 삭제한다. GET _cat/indices?v ➡️내부 인덱스 목록을 확인한다. (앞서 DELETE를 했다면 user가 삭제된 것을 확인할 수 있다.) 인덱스, 도큐먼트.. 기존 RDB에서도 쓰는 용어이지만, 뭔가 개념이 다르다..

article thumbnail
[ELK] - 엘라스틱 서치란?
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 18:02

엘라스틱 서치 엘라스틱 서치(Elastic Search, 통칭 ES)는 Full-text search engine으로 처음 개발되었지만, 검색엔진을 넘어 보안, 로그분석, 전문(Full-text)분석 등 다양한 영역에서 중요한 역할을 하고 있다. Kibana, Logstash, Beats들과 함께 Elastic Stack이라 불린다. ES가 타 NoSQL 제품보다 월등히 빠르고 어려운 검색, 집계 성능을 보이는 이유? ➡️검색 엔진인 동시에 데이터베이스이기 때문 충분한 크기의 클러스터가 구성되어 있다면 1초 이내의 응답 속도 보인다. ES의 또 하나의 특징은 바로 스코어링, 연관도에 따른 정렬이다. 타 데이터베이스도 제공하는 필드값 기준 정렬이 아닌, 유사도 스코어 정렬로 인해 복잡한 문자열 콘텐츠 검색..