분류 전체보기 283

CHAPTER 05 레디스 운용 관리 [PART 02 실전]

I. 데이터 영속성1. 스냅숏 (RDB)(1) 개요스냅숏은 Redis의 메모리 상태를 일정 시점에 RDB 파일 형태로 저장하는 방식이다일반적으로 save 설정을 통해 특정 시간 동안 일정 횟수 이상의 변경이 발생했을 경우 자동으로 수행된다(2) 장점저장 속도가 빠르며 실행 중인 인스턴스의 상태를 간단히 백업할 수 있다재시작 시 복구 속도가 빠르며 운영 중단 시간을 최소화할 수 있다(3) 단점마지막 저장 이후 발생한 데이터는 손실될 수 있다저장 시점에 따라 일관성 없는 상태가 저장될 가능성도 존재한다2. AOF (Append Only File)(1) 개요AOF는 Redis의 모든 쓰기 명령어를 순차적으로 기록하여 영속성을 보장하는 방식이다재시작 시 해당 로그를 순서대로 재실행함으로써 데이터를 복구한다(2)..

서적/실전 Redis 2025.06.24

Chapter 03.고급 기능 [Part1 기초]

I. 파이프라인필요성Redis는 기본적으로 요청-응답 구조이기 때문에 여러 명령을 순차적으로 실행하면 RTT(Round Trip Time) 오버헤드가 발생함파이프라인은 이러한 불필요한 왕복 비용을 줄여 다수의 명령을 빠르게 처리할 수 있도록 도와줌문제점명령 간 의존성이 있을 경우 처리 순서에 따른 예외가 발생할 수 있고, 응답이 몰려오기 때문에 디버깅이나 실패 추적이 어려움또한 원자성은 보장되지 않음1. 파이프라인(Pipelining)이란?여러 Redis 명령을 클라이언트에서 한꺼번에 전송하고, 서버는 응답을 순차적으로 반환각 명령을 RTT(Round Trip Time)마다 보내지 않고, 한 번에 요청하고 한 번에 응답 받음성능 최적화 측면에서 매우 유용 (컨텍스트 스위칭, 시스템 콜 감소)(1) 특징명..

서적/실전 Redis 2025.06.09

Chapter 02.자료형과 기능 [Part1 기초]

I. 자료형의 기능과 개요1. 다섯 가지 자료형(1) Redis가 기본적으로 제공하는 주요 자료형 다섯 가지:String형: 문자열 및 숫자값 저장에 적합한 단순한 키-값 구조.List형: 삽입 순서를 유지하는 문자열 리스트.Hash형: 필드-값 쌍으로 객체를 표현하는 데 유용.Set형: 순서 없이 중복 없는 고유 문자열의 집합.Sorted Set형: 점수(score)에 따라 자동 정렬되는 집합.이들 자료형은 각각 명확한 유스케이스에 따라 선택되며, 상황에 맞게 적절히 사용하는 것이 성능과 코드 간결성에 중요함.2. 보조 자료형과 기능(1) 특정 용도에 특화된 보조 자료형:비트맵(BitMap)지리적 공간 인덱스(Geospatial Index)(2) 기능적 목적의 주요 기능:Pub/Sub (발행-구독 기능..

서적/실전 Redis 2025.05.26

Chapter 01.레디스의 시작 [Part1 기초] : 연습문제 포함

0. 레디스란레디스(Remote Dictionary Server : Redis)는 인메모리 데이터 구조 저장소로써 빠르게 동작하고, 자료형과 기능이 다양한 비관계형 DB이다. 1. 레디스를 사용하기까지레디스는 인메모리 DB로서 뛰어난 성능과 간단하고 유연한 DB기능과 간단한 설정이라는 장점이있다. NoSQL은 특정 데이터 모델 전용 설계, 빠른 속도로 장점이 있고 RDBMS의 특성상 구현하기 어려운 부분도 있다. 그러다보니 우열관계가 아닌 NoSQL과 RDBMS는 Trade-Off 라고 할 수있다. Redis는 주로 NoSQL범주로 분류되며 최근에는 용도에 따라 RDBMS와 레디스를 함께 사용하는 방식이 늘고있다. RDBMS의 속도, 일부 데이터 모델 표현에 구현의 복잡성이 있다. 이러한 단점 해결하기 ..

서적/실전 Redis 2025.05.17

알림 발송 방식 비동기 방식으로의 개선의 건

I. 들어가며향후 수만 명의 사용자에게 알림을 보내야 할 수도 있는 시스템을 개발하고 있다면, 처음부터 확장성 있는 구조를 설계하는 것이 중요하다. Spring의 비동기 처리 방식을 활용하여 알림 발송 성능을 어떻게 개선할 수 있었는지 개발 단계에서 미리 적용할 것을 정리한다. II. 왜 비동기 알림 방식이 필요했나?개발 중인 시스템은 약 20,000명의 사용자에게 동시에 알림을 발송해야 할 요구사항이 있었다. 단순 for-loop 구조로는 충분할 것처럼 보이지만, 네트워크 I/O가 포함된 알림 발송은 한 명당 수백 ms의 대기 시간이 발생한다. 이런 구조는 향후 운영 환경에서 병목이 될 가능성이 높다. 아직 성능 이슈가 직접 드러나진 않았지만, 비동기 처리 기반의 구조를 선제적으로 도입을 고려하고 있다..

멀티모듈 아키텍처 설계 및 적용

I. 들어가며최근 이직을 했는데, 이직한 곳의 프로젝트 구조가 종래의 단일 모듈 멀티 프로젝가 아닌 멀티 모듈 단일 프로젝트이다낯선 방식인데, 어떤점에서 이 방식을 이용했는지 멀티모듈 아키텍처의 개념과 구조 그리고 실패사례 등을 살펴본다. II. 멀티모듈 아키텍처란?1. 모놀리식 아키텍처하나의 서비스에서 API, Admin, Batch, WEB, DB등이 관리되는 구조이다.이 경우 단일 모듈 멀티 프로젝트 VS 멀티 모듈 단일 프로젝트로 구분이 된다 2. 단일 모듈 멀티 프로젝트이전 직장의 아키텍처 방식이다.각각의 프로젝트 단위로 IDE를 각각 띄우면서 이용을 한다.특히 모듈간 공통된 domain(ex: Member)이 중복이 된다. 이 경우 변경이 있으면 여러 모듈간 반복되는 복사 붙여넣기가 수반된다...

StreamAPI 의 실행순서와 병렬처리

I. Stream API의 이해1. 관점 변화명령형 프로그래밍 (C, JAVA)What을 할 것인지 나타내기 보다 How할 건지를 설명하는 방식이다선언형 프로그래밍How를 나타내기보다 What을 할건지 설명하는 방식2. Stream API의 이해JAVA는 OOP이므로 함수형 프로그래밍 불가JDK8 부터 Stream API 로 데이터 추상화하고 처리하는데 자주 사용되는 함수 정리데이터를 추상화 했다는 것은 데이터의 종류와 관계없이 같은 방식으로 처리재사용성 높일 수 있음특징원본 데이터 변경 X원본 데이터 조회 후 Stream을 생성함Stream 은 일회용한번 사용 끝나면 Stream을 재생성해야함닫힌 Stream은 IllegalStateException 발생내부 반복으로 작업 처리간결해 지는 이유임반복 문..

스프링과 싱글톤: 효율성과 안정성의 조화

I. 들어가며스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다. 설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다.  스프링 기본기를 공부하던 중 다음 문장을 보고 왜 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록하는지 의문이 있었다. 스프링과 싱글톤의 관계를 탐색하고, 웹 어플리케이션 관점에서 특히 싱글톤이 왜 필요한지 그리고 싱글톤 패턴 그 자체와 주의사항에 대해서 알아보겠다. 아울러 시작 전 질문을 한다. 웹 애플리케이션은 수많은 요청을 처리하기 위해 다수의 객체를 필요로 한다. 하지만 매 요청마다 객체를 새로이 생성한다면 어떤 문제가 발생..

N+1 문제와 Fetch 전략을 모르면 JPA를 잘못 쓰고 있을수도...

I. 들어가며JPA 를 이용하기 위해서는 기존에 사용하는 mybatis 이용보다 이점이 필요하다. JPA는 객체 중심 설계와 데이터베이스의 매핑을 손쉽게 처리하는 기능을 제공한다. 하지만 잘못된 설정이나 사용으로 예상치 못한 문제가 발생할 가능성이 상존한다. 이러한 문제를 사전에 이해하고 대비하기 위해 준비하게 되었다.JPA에서 중요한 성능 최적화 이슈인 Fetch전략과 N + 1 문제를 중심으로 살펴보고 이를 해결하는 방법을 살펴보겠다II. 성능 저하를 일으키는 3대 문제와 최적화 방법1. Fetch 전략1) Fetch 전략이란Entity의 연관 데이터를 Eager Loading할지, Lazy Loading할지 결정하는 방식이다.Eager Loading 은 항상 즉시 load해서 연관 데이터가 항상 필..

[Sort]99클럽 코테 스터디 32일차 TIL + 프로그래머스/2/42747. H-Index

H-Index - 문제 42747문제 링크성능 요약메모리: 10.1 MB, 시간: 0.18 ms구분코딩테스트 연습 > 정렬채점 결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 11월 29일 09:47:54문제 설명H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 ..