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) 설정도 가..
개요오늘은 저번 시간에 말했던 redis cluster를 적용해보는 시간을 가졌다. 사실 대략적으로 사용 방법만 살펴보고 빠르게 적용이 완료될 줄 알았는데... 생각보다 오래 걸렸다... Redis Cluster먼저 redis cluster가 무엇인지 다시 한 번 살펴보자. Redis Cluster는 Redis의 분산처리 및 고가용성을 지원하는 구성 방식으로, 데이터를 여러 Redis 노드에 분산 저장하고 관리할 수 있도록 설계되었다. 이는 단일 Redis 인스턴스의 한계를 극복하고 확장성과 장애 복구 능력을 강화하기 위해 사용된다. 주요 특징데이터 분산 (Sharding): 데이터를 키 범위(Hash Slot)로 나누고, 이를 클러스터의 여러 노드에 분배. Redis는 키에 대해 해시(Hash) 값을 ..
Redis (Remote Dictionary Server)데이터 구조 서버로 잘 알려진 오픈 소스 인메모리(in-memory) 데이터 저장소. 매우 빠르고 유연한 성능 덕분에 주로 캐시, 메시지 브로커, 세션 저장소, 그리고 실시간 데이터 처리를 위해 사용된다. 특징더보기 인메모리 데이터 저장소데이터를 메모리에 저장하므로 읽기와 쓰기 속도가 매우 빠르다.디스크 기반 데이터베이스보다 짧은 응답 시간이 필요할 때 적합하다.데이터 구조단순한 키-값 저장소 이상으로 다양한 데이터 구조를 지원한다:지속성 옵션기본적으로 데이터를 메모리에 저장하지만, 디스크에 데이터를 저장하여 지속성을 유지할 수도 있다.RDB (Redis Database): 주기적으로 스냅샷 저장. AOF (Append-Only File): 모든 ..
개요사실 이번 시간은 트러블 슈팅이라기 보다는 내 개인적인 의문으로 공부를 한 시간이라고 할 수 있다.한창 TCP 멀티 서버를 구축하고 테스트해보던 중... 문득 이런 생각이 들었다. 현재 내가 만든 서버에 접속 가능한 클라이언트가 몇 명 정도 될까? 나의 궁금증이 해소되는 데에는 그리 오랜 시간이 필요하지 않았다. 왜냐...?이미 미래시를 가지고 있는 튜터님께서 테스트를 해주셨거든... 대충 200명에서 250명 사이에서 서버가 터지는 걸 확인했다. 하지만 여기서 끝내면 그저 궁금증에 지나지 않는다. 만약 서버에 더 많은 유저가 접속을 시도했을 때, 어떻게 하면 부하를 줄이고 유저를 더 수용할 수 있는지 알아보자!!! 로드 밸런싱물론 나는 이론적으로 이미 공부를 했었던 내용이다. 바로 로드 밸런싱!!!..
개요내가 진행하는 프로젝트의 대부분은 Prisma라는 ORM을 사용하여 DB를 생성, 관리한다. 물론 프리즈마가 ORM이고, 이를 사용하기 위해 어떤 세팅을 해야하며, 무슨 메서드나 문법을 사용하는 지도 잘 안다. 왜냐면 계속 사용해왔으니까!!! 그럼 도대체 Prisma를 왜 사용할까? 아니, 분명 현업에서는 대개 Low-Level Query를 사용한다고 알고 있는데, 나는 지금 왜 Low-Level Query를 사용하지 않고 ORM을 사용하고 있을까? 솔직하게 말하자면... 그냥 편하고 익숙해서... 내가 좋은 개발자가 되기 위해 노력하고, 공부하는데... 사용하는 이유가 고작 '편하고 익숙해서?' 라는 생각이 들자 깊이 반성을 시작했다... 내가 ORM을 쓴다면, 적어도 무슨 차이가 있고, 왜 사..