분류 전체보기
-
[Search Engine] SphinxSearch Engine 2024. 8. 22. 20:02
해당 포스팅에서는 Sphinx 검색엔진을 설치하고, 쿼리를 실행 해보겠습니다. Sphinx란?고성능, 오픈 소스 검색 엔진으로, 대량의 데이터를 신속하고 정확하게 검색할 수 있도록 설계된 시스템입니다. 특히 MySQL, PostgreSQL 같은 관계형 데이터베이스와의 통합이 뛰어나며, 다양한 애플리케이션에서 쉽게 사용할 수 있습니다. Sphinx의 특징빠른 검색 속도: Sphinx는 대용량 데이터에서도 매우 빠른 검색 성능을 자랑합니다. 이는 Sphinx가 데이터의 색인(Index)을 생성하고, 검색할 때 이 색인을 활용하여 속도를 극대화하기 때문입니다.확장성: Sphinx는 수백만 개의 문서를 색인하고 검색할 수 있는 능력을 가지고 있어, 대규모 애플리케이션에서도 사용하기 적합합니다. 또한, 분산 검색..
-
[MySQL] like, fulltext index, sphinx engine cost 비교Search Engine 2024. 8. 21. 00:10
검색 엔진 모듈화를 위한 3가지 방안의 차이점을 비교합니다.✍️ 목차1. LIKE Search1-1. 선형 검색으로 인한 속도 저하1-2. 인덱스 사용의 제한1-3. 문자열 패턴 매칭 한계2. Full-Text Index Search2-1. 전문 검색 기능2-2. 인덱스 기반 검색2-3. 정확성 및 유사성 검색2-4. 확장성 제한3. Sphinx Search Engine3-1. 가중치 기반 검색3-2. 문서 유사성 검색3-3. 유연성 및 통합4. 비교 분석sphinx검색 속도용량소요시간Fulltext indexing 시 리스크5. 선택 기준5-1. 데이터베이스 내장 Full-Text 검색 기능5-2. 외부 검색 엔진(Sphinx, Elasticsearch 등)1. LIKE SearchLIKE 검색은 매우..
-
[MQ] RabbitMQMQ 2024. 8. 20. 23:36
이번 포스팅에서는 Message Queue 중 하나인 RabbitMQ의 특징을 설명합니다. RabbitMQ란 AMQP 프로토콜의 메시징 모델을 기반으로 구현한 메시지 브로커로 Publisher에서 Consumer로 메시지를 전달할 때 중간에서 메시지 브로커 역할을 합니다. AMQP란? 시스템 간 메시지를 교환하기 위해 공개 표준으로 정의한 표준 메시징 프로토콜이며 ‘메시지 브로커’라는 미들웨어를 활용해서 비동기식으로 메시지 전달이 가능합니다. RabbiMQ는 높은 처리량보다는 지정된 수신인에게 원하는 방식으로 메시징을 신뢰성 있게 전달하는데 초점이 맞춰져 있어 대용량 트래픽에는 불리하지만 익스체인지 타입이나 라우팅 정책에 따라서 동작 방식을 선택할 수 있습니다. Publisher : 메시지를 생성..
-
[Nginx] Elastic Beanstalk Nginx RateLimit 설정 (2)Nginx 2024. 4. 20. 17:49
✍️ 저번 포스팅에서는 limit_req module, limit_req_zone, 사용자 지정 에러 등을 설정 했습니다. 이번 포스팅에서는 RateLimit 설정 마무리와 각 서비스에서 필요한 예외 설정까지 진행하고 최종적으로 AWS ElasticBeanstalk를 배포할 때 적용하는 방법까지 알아보겠습니다. 1. Client Max Body Size 제한 📘 /project/platform/nginx/conf.d/rate_limit.conf # limit body_size client_max_body_size 5M; 클라이언트가 전송할 수 있는 요청 본문의 크기를 제한 할 수 있는 설정입니다. 위 예시는 클라이언트가 보낼 수 있는 요청의 본문 크기를 5MB로 제한합니다. 2. Nginx 설정에서 클라..
-
[Nginx] Elastic Beanstalk Nginx RateLimit 설정 (1)Nginx 2024. 4. 20. 17:36
서비스를 구축할 때 DDoS와 같은 공격을 방지하기 위한 효과적인 방법 중 하나는 동일한 IP로부터 들어오는 요청에 대한 속도(요청) 제한을 설정하는 것입니다. 이를 위해 Nginx의 Rate Limit 방식을 활용하여 공격으로부터의 보호를 강화할 수 있습니다. 이번 포스팅에서는 Elastic Beanstalk에 배포할 때 Nginx 설정 파일을 Override하여 Rate Limit을 적용하는 방법에 대해 소개 하겠습니다. Nginx Rate Limit 방식은 Leaky Bucket 알고리즘과 비슷한 방식으로 동작하여, 일정 속도로 흘러 들어오는 요청을 허용하고 초과하는 요청은 일정 기간 동안 기다리거나 거부하는 메커니즘을 제공합니다. Leaky Bucket Algorithm: Leaky Bucket ..
-
[Kafka] 프로듀서 애플리케이션 생성 및 실행Apache Kafka 2024. 4. 20. 15:40
아파치 카프카 애플리케이션 프로그래밍 With Java 책을 학습한 내용을 공유합니다. ✍️ Kafka Producer Application을 생성하고 실행까지 진행해보겠습니다. 실습환경 Inteliij Java 17 Gradle kafka-client Dependency 추가 프로듀서를 구현하기 위해 카프카 클라이언트 라이브러리를 추가합니다. dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation 'org.apache.kafka:kafka-clients:2.5.0' // add im..
-
[Kafka] Topics, Producer, Consumer 설치 및 실행Apache Kafka 2024. 2. 14. 03:32
아파치 카프카 애플리케이션 프로그래밍 With Java 책을 학습한 내용을 공유합니다. ✍️ Kafka Topics, Producer, Consumer를 학습하고 실습을 진행 해보겠습니다. 🚀 Apache Kafka의 토픽(Topic)이란 ? 토픽(Topic)은 데이터의 주제나 카테고리를 나타내는 개념입니다. 토픽은 Kafka에서 메시지를 구분하고 분류하는 데 사용됩니다. 간단히 말하면, 특정 주제에 관련된 데이터를 포함하는 카프카의 논리적인 채널이라고 생각할 수 있습니다. 여러 프로듀서(데이터를 생성 및 전송하는 역할)가 특정 토픽으로 데이터를 전송할 수 있고, 이를 통해 여러 컨슈머(데이터를 소비하는 역할)가 해당 토픽의 데이터를 읽을 수 있습니다. 토픽은 Kafka 클러스터 내에서 파티션으로 나뉠 ..
-
[Kafka] EC2에 카프카 브로커, 주키퍼 설치 및 실행Apache Kafka 2024. 2. 14. 00:32
아파치 카프카 애플리케이션 프로그래밍 With Java 책을 학습한 내용을 공유합니다. 🚀Apache Kafka란 ? Apache Kafka는 대용량의 데이터를 안정적이고 효과적으로 스트리밍하고 처리하는 데 사용되는 오픈 소스 분산 스트리밍 플랫폼입니다. 대략적인 Kafka의 핵심 개념, 특징, 활용 사례는 아래와 같습니다. Kafka의 기본 개념 Kafka는 이벤트 스트리밍을 위한 플랫폼으로, 고성능, 내결함성, 확장성을 갖추고 있습니다. 기본적인 개념은 다음과 같습니다. 토픽(Topic): Kafka에서는 메시지가 흐르는 주제로, 데이터의 주제나 카테고리를 나타냅니다. 프로듀서(Producer): 데이터를 Kafka 토픽에 전송하는 역할을 하는 애플리케이션입니다. 컨슈머(Consumer): Kafka..