전체 글42 [Guide] 샤드 크기 결정: 샤딩 전략과 고려 사항 이번 포스팅에선 Elasticsearch 를 사용할 때 클러스터에 적절한 샤드 개수를 결정하는 방법들에 대해 소개합니다.샤드 크기 결정ES의 인덱스는 하나 이상의 샤드로 분리되며, 각 샤드는 하드웨어 장애를 대비해 다른 노드에 복제된다. 만약 데이터 스트림을 사용한다면, 각 데이터 스트림은 인덱스들의 시퀸스로 back 된다. 단일 노드에 저장할 수 있는 데이터의 크기엔 한계가 있기 때문에, 노드를 추가하고 인덱스 및 해당하는 샤드의 수를 증가시켜 클러스터의 용량을 늘릴 수 있다. 하지만 각 인덱스와 샤드엔 약간의 오버헤드가 있기 때문에, 데이터를 너무 많은 샤드로 분할하면 오버헤드는 걷잡을 수 없이 커진다. 너무 많은 인덱스나 샤드를 가진 클러스터는 오버샤딩 되었다고 말할 수 있다. 오버샤딩된 클러스터.. 2023. 3. 23. [Guide] 검색 속도 튜닝 Tune for search speed이번 포스팅에서는 Elasticsearch 에서 검색 속도 향상을 위한 튜닝 방법에 대해 살펴보겠다.파일시스템 캐시에 충분한 메모리를 줄 것ES 는 빠른 검색을 위해 파일시스템 캐시에 높게 의존한다. 일반적으로 못해도 사용가능한 메모리의 절반은 파일시스템 캐시가 사용할 수 있도록 하여, ES 인덱스의 접근 빈도가 높은 데이터들을 이 물리 메모리에 보관할 수 있게 해야 한다.빠른 하드웨어 사용만약 검색이 주로 I/O 로부터 발생한다면 위에 설명한 것 처럼 더 많은 메모리를 파일시스템 캐시로 두거나, 더 빠른 드라이브를 사용해야 한다. 보통 SSD 는 스피닝 디스크 (HDD) 보다 더 나은 성능을 보여주는 것으로 알려져 있다. NFS 나 SMB 와 같은 원격 파일.. 2023. 3. 16. 데이터 스트림 (Data streams) 데이터 스트림은 단일 리소스에서 다중 인덱스에 걸친 append-only 시계열 데이터에 대한 요청을 처리하게 해준다. 데이터 스트림은 로그, 이벤트, 메트릭 등과 같은 연속적으로 생성되는 데이터에 적합하다.색인 및 검색 요청을 데이터 스트림에 직접적으로 할 수 있다. 그러면 해당 스트림의 데이터를 가지고 있는 뒷단의 인덱스에게 자동으로 라우팅을 해준다. ILM (Index Lifecycle Management)를 통해 뒷단 인덱스들을 자동으로 관리할 수 있다. 예를들어 ILM을 통해 오래된 뒷단 인덱스를 좀더 저렴한 장비로 옮기고 필요없는 인덱스를 삭제할 수 있다. ILM를 통해 데이터 증가로 인한 오버헤드와 비용을 절감할 수 있다.뒷단 인덱스 (Backing indices)데이터 스트림은 자동.. 2023. 3. 13. 무중단 배포와 + 여러 배포 전략 중단 배포 방식과 다운타임 서버 한대로 서비스를 운영한다고 가정하면, 현재 서버에는 V1 버전이 실행되고 있는 상황입니다. 그리고 우리는 이번에 여러 기능을 추가한 V2 버전을 새로 개발했고, 이제 사용자들이 V2 버전을 사용할 수 있도록 배포해야 합니다. 배포를 하려면 어떤 과정을 거쳐야할까? 일단 새로 만든 V2 버전 빌드를 서버에 다운로드 합니다. V1 버전과 V2 버전은 서로 같은 포트를 사용하므로, V2 버전을 실행하기 전에 먼저 현재 실행중인 V1 버전의 프로세스를 종료해야 합니다. 이 시점부터 유저는 서비스를 사용할 수 없게되며, 유저가 새로운 V2 버전으로 접속할 수 있도록 바로 V2 빌드를 실행합니다. 로딩과정을 거치고 V2 버전이 정상적으로 실행되면 유저가 다시 정상적으로 서비스를 이용.. 2022. 10. 23. [Kafka] 성능 최적화 3 - Latency 시작하며... 이번에는 4개의 성능 목표 중 첫번째로 Latency에 대해서 어떤 파라미터를 튜닝하는지 알아보겠습니다. 프로듀서와 컨슈머의 option 중 어떤 option이 Throughput에 영향을 주는지 알아보며 어떻게 이 옵션의 파라미터가 영향을 주며, 어떻게 설정해야하는지를 보도록 하겠습니다. Latency : 지연 시간으로 불리우며, 카프카가 얼마나 빠르게 하나의 메시지를 빠르게 전달하는지의 메트릭이다. 1. Broker를 통한 Latency 최적화 🚀 Partition 개수 제한 Latency을 줄이기 위해서는 파티션의 개수를 줄이는 방법이 존재합니다. 파티션의 수가 많으면 많을 수록 메시지의 Latency를 유발하게 되는데, 파티션에 복사를 위한 시간만큼 Latency가 발생되기 때문입니.. 2022. 10. 3. [Redis] Sorted Set 구조로 선착순(랭킹) 기능 구현 이번 포스팅은 레디스에서 제공해주는 자료구조 중 하나인 Sorted Set을 간단하게 설명하고, Sorted Set을 이용해서 치킨 기프티콘 선착순 이벤트를 구현해봅니다. 1. 왜 레디스로 구현해야하나? 💡 선착순 이벤트에서 레디스가 사용되는 이유? 보통 선착순 이벤트는 특정 시간에 트래픽이 몰리기 때문에 서버가 다운되거나 원활하지 못한 이벤트를 참여해보신 적이 한 번씩 경험해보셨을 겁니다. 이번 포스팅에선, 레디스에서 제공하는 자료구조 중 하나인 Sorted Set을 활용하여 모든 요청이 DB에 바로 부하가 가지 않고 차례대로 일정 범위만큼씩 처리하는 구성을 해보려고합니다. 선착순 이벤트 시 대기하고 있는 인원에 대해 대기열 순번을 표출하기 용이합니다. 2. 레디스 Sorted Set ❓ Sorted .. 2022. 10. 1. 이전 1 2 3 4 ··· 7 다음