In-Memory DB 구현 3편 - RESP 프로토콜

들어가며 이전 포스팅에서 TCP 스트림을 파싱해 PING/ECHO 명령어를 처리하는 서버를 만들었다. 하지만 PING\r\n 같은 단순한 텍스트 형식에는 몇 가지 한계가 있다. 데이터 안에 \r\n이 포함되면 구분자로 오인한다 문자열인지, 숫자인지, 에러인지 타입을 알 수 없다 악의적인 클라이언트가 무한히 긴 데이터를 보낼 수 있다 Redis는 이런 문제를 해결하기 위해 Redis Serialization Protocol 이라는 자체 프로토콜을 사용한다. 이번 포스팅에서는 RESP 프로토콜의 구조를 이해하고 직접 파서를 구현해본다. 단순히 어떻게 파싱하는지를 넘어서 프로토콜이 왜 이런 형태를 갖게 되었는지, 직렬화 포맷 사이의 트레이드오프는 무엇이고 바이너리 세이프라는 개념이 실제로 어떤 문제를 해결하는지까지 깊이 들여다본다. ...

2026년 2월 2일 PM04:19 · PolarBear

외부에서 AWS ElastiCache Redis 접근하기 (SSH 터널 방식)

들어가며 현재 서비스중인 앱의 세션 상태가 불안정한 이유로, 캐시서버로 토큰관리 전략을 하고있기에 운영중인 AWS ElasticCache RedisOSS에 접근하여 확인해보기로 했다. 먼저 여느때와 다름없이 외부에서 접근하기 위해 인바운드 규칙을 추가하여 레디스 인사이트에서 접근해보니 연결이 안되는 것이다. Public Subnet에 있는 일반적인 RDBMS나 SSH로 서버접근 등은 인바운드 규칙을 추가하는 것만으로도 가능한데, AWS ElastiCache(OSS Redis)는 기본적으로 VPC(Virtual Private Cloud) 내부 전용 서비스이기때문에, 퍼블릭 IP 자체가 존재하지 않는다. 이 때문에 단순한 외부접근이 불가능하다. 외부(로컬 PC 등)에서 직접 붙을 수 없으므로, Bastion EC2 를 경유해 SSH 터널링으로 접근해야한다. ...

2025년 10월 28일 AM10:39 · PolarBear