[Etc] Elasticsearch를 통해 검색 시간 단축하기 (1)
·
Data Infra/etc
1. Elasticsearch란?Elasticsearch는 Apache Lucene(아파치 루씬) 기반의 Java 오픈 소스 분산 검색 엔진입니다. Elasticsearch를 통해 루씬 라이브러리(Java에서 개발한 정보 검색용 라이브러리)를 단독으로 사용할 수 있으며, 방대한 양의 데이터를 신속하게(거의 실시간) 저장, 검색, 분석을 수행할 수 있습니다. Elasticsearch는 검색을 위해 단독으로 사용하기도 하며, ELK(Elasticsearch/Logstash/Kibana) 스택으로 사용되기도 합니다. ELK 스택은 다음과 같습니다.Logstash : 다양한 소스(DB, csv 파일 등)의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱 하여 Elasticsearch로 전달Elasticsearc..
[Redis] 캐시를 통해 읽기 성능 향상하기 (2)
·
Data Infra/Redis
0. 들어가기 전이전 글에서는 캐시의 정의와 다양한 캐시 전략에 대해 다뤘습니다.자세한 내용이 궁금하신 분들은 아래 링크를 참고해 주세요. https://young-code.tistory.com/39#2.%20캐싱%20전략%20패턴%20종류-1 [Redis] 캐시를 통해 읽기 성능 향상하기 (1)1. 캐싱캐시 전략은 웹 서비스 환경에서 시스템 성능 향상을 기대할 수 있는 중요한 기술입니다. 일반적으로 캐시는 메모리를 사용하기 때문에 데이터베이스보다 훨씬 빠르게 데이터를 응답할young-code.tistory.com 이번 글에서는 제가 프로젝트에서 캐시를 적용한 방법을 공유하려고 합니다. 1. 캐싱할 데이터캐시는 조회는 빈번하지만 쓰기는 자주 발생하지 않는 데이터를 저장할 때 가장 효율적입니다. 성능 테스..
[Redis] 캐시를 통해 읽기 성능 향상하기 (1)
·
Data Infra/Redis
1. 캐싱캐시 전략은 웹 서비스 환경에서 시스템 성능 향상을 기대할 수 있는 중요한 기술입니다. 일반적으로 캐시는 메모리를 사용하기 때문에 데이터베이스보다 훨씬 빠르게 데이터를 응답할 수 있어 이용자에게 빠르게 서비스를 제공할 수 있습니다. 하지만 기본적으로 RAM의 용량은 커봐야 16 ~32G 정도라, 데이터를 모두 캐시에 저장해 버리면 용량 부족 현상이 일어나 시스템이 다운될 수 있습니다. 따라서 어느 종류의 데이터를 캐시에 저장할지, 얼마큼 데이터를 캐시에 저장할지, 얼마나 오래된 데이터를 캐시에서 제거하는지에 대한 '지침 전략'을 숙지할 필요가 있습니다. 💡 참고캐시를 효율적으로 이용하기 위해서는 캐시에 저장할 데이터의 특성도 고려해야 합니다.예를 들어 자주 조회되는 데이터, 결과값이 자주 변동..
[DB] 낙관적 락, 비관적 락, Redis 동시성 이슈 성능 테스트
·
Data Infra/etc
0. 들어가기 전현재 진행 중인 프로젝트에는 SNS 기능이 있으며, 게시물에 조회 수와 좋아요 기능이 포함되어 있습니다. 조회 수는 데이터의 신뢰성이 크게 중요하지 않다고 생각되지만, 좋아요 수는 사용자 경험에 큰 영향을 미칠 수 있어 동시성 문제를 해결하며 성능을 최적화하려고 합니다. 이를 위해 낙관적 락, 비관적 락, 레디스가 떠오르는데, 개인적으로 낙관적 락 직접 확인해 보는 것이 좋을 것 같아 확인해보려 합니다. Jmeter로 성능 테스트를 진행할 예정입니다. 👉 Redis 고려 이유In-Memory DB이다.Redis는 In-Memory DB이기 때문에 IO 작업이 훨씬 빠를 것이라 생각했습니다.Redis 6.0부터는 Network IO가 추가되었다.Redis 6.0에서는 IO만 담당하는 Th..
[DB] 락(Lock)
·
Data Infra/Database
1. Lock이란?여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 하나의 커넥션만 변경할 수 있게 해주는 기능입니다. 📌 참고락을 이해할 때 '락을 획득한다'라는 의미를 '외부에서 잠금을 건다.' 라는 의미로 이해했습니다. 외부에서 잠금을 거는 것이 아니라 '내가 방으로 들어가서 내가 방문을 잠그는 것'의 관점으로 이해하니 더 쉽게 이해할 수 있었습니다.  2. Lock의 종류락의 종류는 크게 다음과 같은 2가지 종류로 나뉩니다.공유 Lock (Shared Lock, Read Lock, S-Lock)베타 Lock (Exclusive Lock, Write Lock, X-Lock) a. 공유 Lock (Shared Lock, Read Lock, S-Lock)공유 Lock은 데이터를 변경하지 않는..