캐싱(Cache)?애플리케이션 성능을 개선하기 위한 핵심 기술로, 자주 사용되거나 최근에 사용된 데이터를 저장해두었다가 재사용하는 기술. 자주 사용되는 데이터를 빠르게 액세스할 수 있는 저장소(메모리, 디스크 등)에 저장하여 읽기 속도를 높이고 시스템 부하를 줄인다. 데이터베이스, API 호출, 파일 시스템, 계산 결과 등 느리거나 비용이 큰 작업의 결과를 캐싱하면 성능이 크게 향상된다. 주요 장점 속도 향상: 데이터를 메모리 등 빠른 저장소에서 바로 제공해 작업을 빠르게 처리.시스템 부하 감소: 데이터베이스나 외부 API 호출 빈도를 줄여 자원 사용량 감소.비용 절감: 네트워크 대역폭 및 서버 자원 사용량 감소. 작동 순서일반적으로 캐싱은 1. 조회 요청(클라이언트의 데이터 요청) → 2. 캐시 확인(..
Fluent Validation유효성 검사 규칙을 작성하기 위해 인터페이스와 람다식을 사용하는 .NET용 유효성 검증 라이브러리.이전 Node.js에서 사용했던 JOI라이브러리와 비슷한 기능을 한다고 생각하면 된다! 시작하기dotnet add package FluentValidation더보기ASP.NET Core 통합인 경우dotnet add package FluentValidation.AspNetCore 실습using FluentValidation;using HolyShitServer.Src.Network.Packets;namespace HolyShitServer.Src.Utils.FluentValidation;public class RegisterRequestValidator : AbstractVal..
Bull QueueBull은 Node.js에서 사용하는 강력한 작업 큐(Job queue) 라이브러리로, Redis를 기반으로 동작한다. 이를 통해 백그라운드 작업을 효율적으로 관리하거나, 대규모의 비동기 작업을 처리할 수 있다. Bull은 작업을 대기, 진행, 완료, 실패 등 다양한 상태로 관리하며, 분산 환경에서도 안정적으로 동작하도록 설계되었다. 주요 기능작업 상태 관리: 작업을 대기 상태(waiting), 진행 중(active), 완료(completed), 실패(failed)로 관리한다. 각 작업의 상태를 Redis에서 조회할 수 있어 추적 가능이 용이하다.작업 재시도 및 지연 처리: 작업 실패 시 재시도(retry) 가능. 작업을 특정 시간 뒤에 실행하도록 지연(queue delay) 설정도 가..
데이터 모델링의 이해모델링의 개념현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정. 데이터베이스의 구조와 관계를 정의하며, 이를 통해 데이터의 저장, 조작, 관리 방법을 명확하게 정의한다. 모델링의 특징단순화(Simplification): 현실을 단순화하여 핵심 요소에 집중하고 불필요한 세부 사항을 제거. 단순화를 통해 복잡한 현실 세계를 이해하고 표현하기 쉬워진다.추상화(Abstraction): 현실세계를 일정한 형식에 맞추어 간략하게 대략적으로 표현하는 과정. 다양한 현상을 일정한 양식인 표기법에 따라 표현한다.명확화(Clarity): 대상에 대한 애매모호함을 최대한 제거하고 정확하게 현상을 기술하는 과정. 명확화를 통해 모델을 이해하는 이들의 의사소통을 원..
데이터 모델링의 이해관계(Relationship)?엔터티 내의 인스턴스들 간 서로 논리적인 연관성이 있는 상태. 분류 - 존재/행위존재에 의한 관계: 예시. 직원 --- 부서 (소속되다/보유하다)행위에 의한 관계: 예시. 고객 --- 상품 (주문하다/주문되다)더보기ERD(Entity Relationship Diagram)는 존재/행위 등 관계를 똑같이 표시한다. → 간략하게 설명하면, 엔터티 사이의 관계를 그림으로 표현하는 것을 의미한다.UML 클래스다이어그램 → 연관관계(존재)는 실선으로 표기 / 의존관계(행위)는 점선으로 표시. 표시 방법표기하는 방식에 따라 IE와 Barker 표기법으로 구분한다. 보통 IE를 쓰지만 차이점을 구분해야 한다. 관계명(Membership), 관계차수(Cardinalit..
개요오늘은 저번 시간에 말했던 redis cluster를 적용해보는 시간을 가졌다. 사실 대략적으로 사용 방법만 살펴보고 빠르게 적용이 완료될 줄 알았는데... 생각보다 오래 걸렸다... Redis Cluster먼저 redis cluster가 무엇인지 다시 한 번 살펴보자. Redis Cluster는 Redis의 분산처리 및 고가용성을 지원하는 구성 방식으로, 데이터를 여러 Redis 노드에 분산 저장하고 관리할 수 있도록 설계되었다. 이는 단일 Redis 인스턴스의 한계를 극복하고 확장성과 장애 복구 능력을 강화하기 위해 사용된다. 주요 특징데이터 분산 (Sharding): 데이터를 키 범위(Hash Slot)로 나누고, 이를 클러스터의 여러 노드에 분배. Redis는 키에 대해 해시(Hash) 값을 ..