일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Elasticsearch
- 읽기쉬운코드
- cleancode
- 엘라스틱서치
- 개발자
- 자바
- 그리디알고리즘
- 코딩
- database
- 코딩테스트
- 코드
- 애자일
- API
- 애자일기법
- 애자일프로그래밍
- 백준
- 프레임워크
- ES
- 데이터베이스
- 알고리즘
- 개발
- 스프링
- 그리디
- 클린코드
- Baekjoon
- Java
- Spring
- JPA
- framework
- db
- Today
- Total
목록Reading (29)
시뻘건 개발 도전기
엘라스틱서치의 기본 용어 엘라스틱서치의 데이터는 [그림 1]과 같이 인덱스, 타입, 문서, 필드 구조로 구성된다. 인덱스 인덱스는 데이터를 저장하는 공간이다. 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다. 엘라스틱서치는 인덱스 생성 시 기본적으로 5개의 프라이머리 샤드와 1개의 레플리카 샤드 세트를 생성한다. 각각의 샤드 수는 인덱스를 생성할 때 옵션을 이용해 변경할 수 있다. 인덱스의 이름은 모두 소문자여야한다. 만약 인덱스가 없는 상태에서 데이터가 추가된다면 데이터를 이용해 인덱스가 자동으로 생성된다. 샤드 색인된 문서는 하나의 인덱스에 담긴다. 인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나뉘어 구성되는데, 이 파티..
키바나는 엘라스틱에서 제공하는 데이터 시각화 프로그램이다. 키바나를 이용하면 엘라스틱에 갯인된 데이터를 검색하거나 문서를 추가하거나 하는 등의 기능을 손쉽게 구현할 수 있다. Download Kibana Free | Get Started Now Download Kibana or the complete Elastic Stack (formerly ELK stack) for free and start visualizing, analyzing, and exploring your data with Elastic in minutes. www.elastic.co bin 디렉토리에 kibana와 kibana.bat 파일이있다. 환경에 맞게 실행하되, 키바나가 실행하기 전에 elasticsearch가 실행되고 있어야한다..
엘라스틱서치로 실제 서비스를 운영할 때는 최소 3개 이상의 물리적인 노드로 클러스터를 구축하는 것이 좋다. 테스트 모드에서는 목적성이 다르기 때문에 싱글 모드로 구성하기도한다. Elasticsearch 설치 엘라스틱서치는 자바로 개발되었다. 그 말은 java runtime이 필요하다는 의미로 JRE만 설치해도 무방하나 JDK를 설치하는 것을 권장하고있다. 참고로 엘라스틱서치 8 버전부터 java 17을 권장한다. (java를 설치하는 과정은 스킵.) Download Elasticsearch Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in m..
엘라스틱 서치 검색엔진은 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램이다. 검색 결과로 제공되는 데이터의 특성에 따라 구현 형태가 달라진다. 검색 시스템은 대용량 데이터의 검색 결과를 제공하기 위해 검색엔진을 기반으로 구축된 시스템이다. 수집기를 이용해 데이터를 수집하고 이를 다수의 검색엔진을 이용해 색인하여 UI로 검색 결과를 제공한다. 엘라스틱서치는 이와 같은 검색엔진이며 이를 사용하여 검색 시스템을 구축할 수 있다. 검색 시스템 검색 시스템의 구성 요소 검색 시스템은 데이터를 수집하는 수집기, 데이터를 저장하는 스토리지, 데이터를 검색에 적절한 형태로 변환하는 색인기, 색인된 데이터에서 일치하는 문서를 찾는 검색기로 구성된다. 수집기 수집기는 웹에서 필요한 정보를 수집하는 프로그램이다. 웹상..
앞서 언급한 분산의 포인트는 OS 캐시 활용과 인덱스(색인) 사용 그리고 확장을 고려하여 시스템을 설계하는 것이다. (MySQL은 물론이고 RDBMS는 인덱스를 생성하고 그로 인해 빠르게 데이터를 검색할 수 있는 구조가 마련되어 있다.) 보통 신규 프로젝트를 개발하게 될 때면 테이블 스키마를 그려하고 create table 쿼리로 테이블을 생성할 수 있다. 이 부분이 큰 규모일 수록 중요한 부분이 생기는데, 스키마를 얼마나 고려했는지, 분산과 확장성을 얼마나 고려했는지에 따라서 데이터가 큰 차이로 증감할 수 있다는 것을 이전 포스팅을 통해 알게되었다. 따라서 대량의 데이터가 저장되는 테이블일 수록 래코드가 최대한 작아지도록 컴팩트하게 설계되어야 한다. MySQL의 인덱스 경우에는 빠른 탐색을 위해 B트리..
지금까지 캐시가 I/O에 미치는 영향에 대해서 알아 보았다. (학교에서 language를 배울 때 캐시를 전혀 알려주지 않고 컴퓨터 개론 등의 수업에서만 캐시를 간략하게 언급하고 지나갔던 기억이 난다. 정작 현업에서는 캐시를 아주 잘 사용하고 있고 꼭 필요한 부분에서 어떤 방식으로 캐시를 사용할지에 대해 명확하게 정의하여 사용한다.) 데이터 처리 시 압축해서 저장해두면 디스크 내용을 그대로 캐싱할 수 있고, 데이터의 규모보다 물리 메모리가 더 클 때 전부 캐싱할 수 있다는 사실을 알게 되었다. 그렇다고 메모리를 대규모에 따라 계속해서 늘리기만 할 수 없다. (경제적인 비용과 밸런스 등 고려) 이럴 때 "복수 서버 확장"이 필요할 수도 있다. 어느정도 성장한 기업의 서버는 대부분 이 방안을 채택하여 사용할..
데이터를 보다 효율적으로 처리하기 위한 많은 방법이 있지만 그 중에서 OS 캐시를 살펴보려한다. OS캐시는 어떻게 동작하며 만약 제대로 처리되지 않았을 때 분산에 대해서 어떻게 고려해야하는지 알아본다. OS는 메모리를 이용해서 디스크 액세스를 줄이는데, 그 원리가 OS 캐시다. 리눅스의 경우에는 페이지 캐시나 파일 캐시, 버퍼 캐시라고 하는 캐시 구조를 가지고 있다. OS는 가상 메모리 구조를 가지고 있으며 이는 흔히 말하는 '스왑'과 다른 말이다. 스왑은 물리 메모리가 부족할 때 2차 기억장치를 메모리로 간주해서 외형상의 메모리 부족을 해소하는 원리를 말한다. 가상 메모리 구조를 기반으로하는 페이징 구조는 논리 어드레스를 물리 어드레스로 변환한다. 물리적인 하드웨어를 OS에서 추상화하기 위해서 '가상 ..
트래픽이 증가하게되면서 우리는 장비의 성능을 끌어올리거나 개수를 늘릴 수 있고, application의 캐시 등 성능개선, DB서버의 I/O 최소화 등 작업을 진행하면서 기본적으로 알아야할 사항들이 상당히 많다. 일전에 언급했던 스케일업과 스케일아웃이 많이 볼 수 있는 대응 방법인데, 보통은 스케일아웃을 많이 채택한다. 그 이유는 많은 것들이 있을 수 있지만 웹 서비스에 적합하고 비용이 저렴하며 시스템 구성에 유연성이 있다는 점이 높게 평가되고 있다. 스케일아웃의 특징은 하드웨어를 횡으로 전개해서 CPU 부하의 확장성을 확보하기 쉽다. 하지만 DB 서버 측면에서는 I/O 부하가 잦게 일어난다. [그림 1]을 보면 알 수 있듯이 프록시의 요청이 AP 서버를 거처 DB에 도달해서 DB측에 I/O가 발생한다...