본문 바로가기

전체 글

(109)
[Redis] Redis의 다양한 자료구조와 활용에 대해 알아보자 (2) [Redis] Redis의 다양한 자료구조와 활용에 대해 알아보자 (1)레디스라는 기술 스택을 사용하면서 레디스의 장점과 이점에 대해 검색을 해보면,항상 빠지지 않고 등장하는 것이 '다양한 자료구조 지원'이다.레디스는 단순한 Key-Value 저장소가 아니라, 다양zapzook.tistory.com 이전 포스팅에서는 Redis의 기본 자료구조(String, List, Set)에 대해 알아보았다.이번 포스팅에서는 Redis의 고급 자료구조인 Hash, Sorted Set(ZSet), HyperLogLog, Geo 자료구조에 대해 살펴보고,이를 어떻게 활용할 수 있을지 예제 코드와 함께 알아보자.✅ HashHash는 여러 필드를 하나의 Key로 관리할 때 유용한 자료구조로, 객체를 저장하기에 적합하다.Spr..
[DB] 검색 기능을 위한 데이터베이스 설계 : RDB vs NoSQL 검색 기능을 위한 데이터베이스 설계 : RDB vs NoSQL'어떤 상황에서 어떤 선택이 최적인가?'✅ 서론현대 웹 서비스나 모바일 애플리케이션에서는 검색 기능이 거의 필수처럼 자리 잡았다.예를 들어 이커머스 서비스의 상품 검색이나 소셜 커뮤니티의 게시글 검색 등의 기능은해당 서비스의 필수적인 기능이고, 검색 성능 역시 사용자 경험과 직결되는 중요한 요소이다. 이러한 기능을 위해 데이터베이스를 설계할 때, 우리는 크게 RDB와 NoSQL을 비교해볼 수 있다.본 포스팅에선 RDB와 NoSQL의 개념 및 특징을 알아보고,검색 기능 구현 시 고려해야 할 주요 오소와 DB 선택의 중요성에 대해 알아보려 한다. ✅ RDB vs NoSQL📌 RDBRDB, 즉 관계형 데이터베이스는 데이터를 테이블(표) 형태로 표현..
[Redis] Redis의 다양한 자료구조와 활용에 대해 알아보자 (1) 레디스라는 기술 스택을 사용하면서 레디스의 장점과 이점에 대해 검색을 해보면,항상 빠지지 않고 등장하는 것이 '다양한 자료구조 지원'이다.레디스는 단순한 Key-Value 저장소가 아니라, 다양한 고급 자료구조를 제공한다는 것이 큰 장점이다. 지금까지는 레디스를 거의 캐싱 용도로만 사용했기에레디스에서 지원하는 다양한 자료구조와 활용에 대해 공부해보지 못했었다.이는 레디스가 가진 여러 이점 중 일부분만 활용해온 셈이다.. 이번 포스팅에선 레디스의 여러 자료구조들 중 기본 자료구조(String, List, Set)에 대해 먼저 알아보겠다. ✅ String레디스에서 지원하는 가장 기본적인 자료형이며, 저장할 수 있는 최대 크기는 512MB이다. Java의 Map 처럼 동작한다고 생각하면 편하다. 📌 SET,..
[Redis] Redis를 활용한 Session Clustering 기존의 세션 방식은 서버의 Scale-Out 과정에서 문제가 발생할 수 있다.본 포스팅에서는 이러한 문제점에 대해 분석하고, 그 문제점을 해결하기 위한 대표적인 두 가지 방안인 Sticky Session과 Session Clustering을 살펴볼 것이다. 마지막으로 Redis를 활용한 Session Clustering을 직접 구현해볼 예정이다. ✅ HTTP Session   HTTP 세션은 사용자의 상태를 유지하기 위해 서버에서 관리하는 방식이다. 위 그림과 같이 사용자가 웹 애플리케이션에 접속하면 서버는 세션 ID를 생성하고, 이를 통해 사용자의 정보를 유지한다. 기본적으로 세션 정보는 요청을 처리한 서버에 저장되며, 같은 사용자가 다시 요청하면 동일한 서버에서 세션을 확인하여 정보를 유지한다. ⚡세..
[Devops] Docker란 무엇인가? 지금까지 웹 애플리케이션을 개발하고, 배포하는 과정에서Docker를 많이 사용하고 활용한 경험이 있다. 하지만 사용 경험과 별개로 Docker가 가진 특징과 장단점과 같은 이론적인 측면을 깊게 공부한 적이 없었던 것 같아,이번 포스팅에선 Docker의 개요와 특징, 장단점과 같은 이론적인 측면을 알아보고자 한다. ✅ Docker란? Docker는 애플리케이션을 쉽게 만들고, 테스트하고, 배포할 수 있게 도와주는 소프트웨어 플랫폼이다. 애플리케이션을 컨테이너라는 가볍고 이식성있는 패키지로 실행할 수 있으며,Docker 이미지는 애플리케이션을 실행하는데 필요한 모든 것(코드, 런타임, 시스템 도구, 시스템 라이브러리 등)을 포함한다. 📌 Docker의 주요 특징컨테이너화애플리케이션과 필요한 모든 것을 하나..
[Spring] Elastic Search 검색 엔진 도입 여정 (1) 프로젝트의 기존 RDB 테이블을 Elastic Search로 전환하고, 검색 엔진을 구현하는 과정을 다룬 포스팅입니다.   Intellij에서 공공 데이터셋(csv) 동기화 및 활용하기주문 관리 플랫폼(배달 앱) 개발 프로젝트를 진행하던 중,위치 데이터를 저장하는 Location 테이블을 만들어야 하는 요구사항이 생겼다. Location 테이블은 서울특별시의 여러 위치 정보를 담zapzook.tistory.com 지난번 포스팅에서 위치 데이터를 저장하는 Location 테이블을 구성하였다.공공 데이터셋(csv)을 가져와, RDB 테이블(Location)에 해당 csv를 import하여 활용하는 과정을 거쳤었다. 그런데 이후에 생각을 해보니 이러한 Read Only 데이터(검색을 위한 데이터)를 RDB에 ..
[트러블 슈팅] 캐싱 적용중 발생한 역직렬화 에러 프로젝트에 데이터 캐싱을 적용 중 발생한트러블 슈팅과 해결 과정을 정리한 글입니다.   [트러블 슈팅] 캐싱 적용 중 발생한 PageImpl 역직렬화 에러프로젝트에 데이터 캐싱을 적용 중 발생한트러블 슈팅과 해결 과정을 정리한 글입니다.팀 프로젝트 (배달 주문 플랫폼 개발) 진행 중, 요청에 대한 응답속도 향상과전체적인 성능 개선을 위해zapzook.tistory.com 이전에 작성한 포스팅과 이어지는 트러블 슈팅이다. Search 서비스에 캐싱 적용을 마치고 User 도메인의 로그인 및 JWT 인가 과정에 캐싱을 적용해보면 좋겠다는 생각이 들었다.  원래라면 JWT는 무상태성을 지향하기 때문에, 인증/인가에 필요한 정보를 토큰에 담아두고,서버 세션에 의존하지 않아야 한다. 즉, 매번 DB에 유저 조회를..
[트러블 슈팅] 캐싱 적용 중 발생한 PageImpl 역직렬화 에러 프로젝트에 데이터 캐싱을 적용 중 발생한트러블 슈팅과 해결 과정을 정리한 글입니다.팀 프로젝트 (배달 주문 플랫폼 개발) 진행 중, 요청에 대한 응답속도 향상과전체적인 성능 개선을 위해 데이터 캐싱을 적용해 보기로 하였다.  [Spring][Redis] Redis 캐싱 기능을 활용한 조회 성능 개선 (CacheManager)데이터 캐싱의 개념에 대해 알아보고, Redis의 캐싱 기능을 활용하여조회 성능을 개선하는 예제를 포함한 포스팅입니다.✅ 캐싱이란?캐시(Cache)는 데이터나 값을 저장하는 임시 저장소로, 데이터zapzook.tistory.com(캐싱 적용 방식은 이전 포스팅 참조) 서비스의 조회 API(서비스)에 캐싱을 적용하되, 단건 조회까지 모두 캐싱을 하면캐시 키가 너무 많아지니 전체 조회(S..