본문 바로가기

전체 글

(67)
Redis 비교표 ✅ Redis 비교표
Redis Cluster ✅ Redis Cluster란?Redis가 제공하는 분산 저장 및 고가용성(High Availability)을 지원하는 공식 기능여러 Redis 노드를 묶어 하나의 클러스터로 구성 → 데이터를 자동으로 샤딩하고, 장애가 발생해도 자동으로 Failover 처리✅ 핵심 개념슬롯(Slot) 기반 분산Redis Cluster는 전체 Key 공간을 16384개 슬롯으로 나눔각 노드는 특정 슬롯 범위를 담당 Key → CRC16 해시 → 슬롯 번호 → 해당 슬롯 담당 노드로 매핑Master-Slave 구조각 슬롯은 Master 노드가 관리, Slave 노드는 복제본 유지Master 장애 발생 시 Slave가 자동 승격(Failover) → 서비스 중단 최소화자동 리밸런싱노드 추가/삭제 시 슬롯을 재분배하여 데이터 ..
Redis 샤딩 ✅ Redis 샤딩하나의 Redis 서버로는 처리할 수 없는 대규모 데이터나 트래픽을 여러 서버에 나누어 저장하고 처리하는 기법즉, 데이터를 Key 단위로 분산시켜 여러 Redis 인스턴스가 각각 일부 데이터를 담당하도록 하는 구조✅ 왜 필요한가?메모리 한계 극복Redis는 In-memory 저장소 → 단일 서버 메모리 한계(예 : 64GB 이상 쓰기 어려움)를 극복하기 위해 필요성능 향상데이터와 요청을 여러 서버로 분산 → 처리량(throughput) 증가확장성서버를 추가하면 선형적으로 저장 용량과 처리 성능 확장 가능✅ 샤딩 방식클라이언트 사이드 샤딩애플리케이션 레벨에서 “이 Key는 어느 Redis 서버에 저장할지” 직접 계산 (예 : Consistent Hashing)단점 : 클라이언트 로직이 복..
Redis ✅ Redis 개요In-memory 데이터 저장소 : 디스크가 아닌 메모리에 데이터를 저장해 읽기/쓰기 속도가 매우 빠름Key-Value 구조 기반으로 동작하며, 다양한 자료구조를 지원 (String, List, Set, Sorted Set, Hash 등)주로 캐시, 세션 저장소, 메시지 큐, Pub/Sub 시스템으로 활용✅ 주요 특징고성능초당 수십만 건 이상의 요청 처리 가능캐시 계층으로 사용 시 DB 부하를 줄여줌다양한 자료구조 지원단순 캐시뿐만 아니라 랭킹 시스템(정렬된 Set), 카운터(Atomic Increment), 채팅/알림 큐 등 활용 가능Persistence (영속성)메모리 기반이지만 RDB(Snapshot), AOF(Append Only File) 방식으로 데이터를 디스크에 저장 가능재..
Spring MVC와 WebFlux의 요청 처리 흐름 1. Spring MVC (동기 / 블로킹 방식)Thread-per-request 모델클라이언트 요청 → 서블릿 컨테이너(Tomcat 등) → 스레드 할당 → 컨트롤러 실행 → DB/외부 API 요청 시 스레드가 대기 상태 → 응답 반환흐름클라이언트가 요청 보냄 (HTTP Request)Tomcat이 요청마다 새로운 스레드(Thread)를 할당컨트롤러 실행DB/외부 API 호출 → 응답 올 때까지 스레드가 블로킹응답을 클라이언트에게 반환스레드 반환(Thread Pool로 되돌림)👉 요청이 많아지면 스레드가 부족해져서 응답 지연 발생.2. Spring WebFlux (비동기 / 논블로킹 방식)Event Loop 기반 모델요청을 받으면 작업을 등록만 하고 바로 스레드를 반환 → 결과가 준비되면 이벤트 루프..
WebFlux 정리 📌 Spring WebFlux 정리1. 정의Spring 5부터 추가된 리액티브 웹 프레임워크논블로킹 I/O 기반 → 적은 스레드로도 높은 동시성 처리 가능Reactor 라이브러리 (Mono, Flux) 사용 → 리액티브 스트림 표준 준수2. 핵심 개념Mono : 0~1개의 결과 (단일 값 비동기 처리)Flux : 0~N개의 결과 (스트림 비동기 처리)Non-blocking : 결과 기다리지 않고 다음 작업 진행Backpressure : 데이터가 몰릴 때 소비자가 감당 가능한 만큼만 처리3. 코드 비교Spring MVC (동기/블로킹)@GetMapping("/user/{id}")public User getUser(@PathVariable String id) { return userRepository..
오라클 메모리 구조 1) 한 줄 요약 🧠SGA = 모두가 같이 쓰는 공용 공간(학교 식당)PGA = 세션(프로세스)마다 따로 쓰는 개인 공간(도시락)2) SGA(System Global Area) — “공용 식당” 🍽️모든 세션이 함께 사용, 인스턴스에 하나Database Buffer Cache디스크에서 읽은 데이터 블록을 담아두는 캐시. 자주 쓰면 여기서 바로 줘서 빠름Shared PoolLibrary Cache : 파싱된 SQL/실행계획 저장(같은 쿼리는 다시 파싱 X)Data Dictionary Cache : 테이블/권한 같은 메타데이터 저장(옵션) Server Result Cache : 자주 쓰는 결과를 캐시Redo Log Buffer : 변경 내역을 잠깐 쌓아두는 공간 → 곧바로 LGWR가 redo 로그 파일에..
jemalloc 어려워서 링크 가져옴 Jason Evans의 jemalloc 설명레디스 쉽게 설명해준 블로그 0 - this-is-spear blog - Obsidian PublishNot Found File 레디스/0.md does not exist.publish.obsidian.mdjemalloc 세미나 jemalloc 세미나jemalloc 사내 세미나, 2018.03.21 - Download as a PDF or view online for freewww.slideshare.net용어 정리 📌앱 스레드 : malloc/free 호출하는 손님tcache(스레드 주머니) : 최근에 쓰인 크기별 블록을 쥐고 있어 “바로 지급/반납” ⚡arena(공용 창고, 여러 개) : 스레드 경쟁 줄이려고 창고를 여러 개로 쪼갬bin/size-class..