개요오늘은 저번 시간에 말했던 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을 쓴다면, 적어도 무슨 차이가 있고, 왜 사..
개요TCP를 공부하면서 protobuf를 사용하는데, 사실 '그냥 그런 게 있는 갑다.' 하면서 쓰고 있는 중...대충 JSON 형식이랑 비슷하게 생겼으니 데이터 구조 중 하나겠지... 하고 넘어가면 안된다!!!!! 이번 시간에는 protobuf를 확실히 짚고 넘어가는 시간을 가져보자! Protocol Buffers (프로토콜 버퍼, Protobuf) Google에서 개발한 언어 중립적이고 플랫폼 독립적인 데이터 직렬화(format serialization) 시스템. 주로 데이터 구조를 정의하고 이를 효율적으로 저장하거나 전송하기 위해 사용된다. protobuf 는 다른 IDL (XML, JSON 등) 에 비해 더 작은 용량(이진 형식)으로 데이터를 저장할 수 있기 때문에, 네트워크 연결을 통해 더 빠..
개요 개인 프로젝트의 주제인 Javascript(Node.js)로 로그라이크 게임 만들기를 실시하였다.나는 이를 응용하여 textRPG를 만드는 시간을 가졌고, 나의 textRPG에는 맵 생성을 비롯한 이동하기 로직이 포함된다. 이번 시간에는 맵 생성 시에 고난을 겪었던 이야기를 하고자 한다! 🤣🤣🤣 트러블 슈팅배경 처음 주제를 선정했을 때 내 머릿속 흐름은 다음과 같았다...공격, 방어... → 전투 → RPG → 미니맵... 아, 미니맵을 생성하자...! const map = Array.from({ length: height }, () => Array(width).fill('.')); 위와 같이 맵을 생성하는 데에는 딱 한 줄이면 충분했다!!!하지만 RPG 게임에 텅 비어있는 맵이 어디있겠는가!..