Go로 PostgreSQL 프록시 만들기 (4) - 쿼리 캐싱과 무효화
LRU 캐시를 직접 구현하고, 쓰기 시 테이블 기반으로 캐시를 자동 무효화하는 전략을 만든다.
LRU 캐시를 직접 구현하고, 쓰기 시 테이블 기반으로 캐시를 자동 무효화하는 전략을 만든다.
독립적으로 만든 컴포넌트들을 프록시 서버에 통합하고, Docker 환경에서 E2E 테스트로 검증한 뒤, 전체 프로젝트를 돌아본다.
프록시를 운영 가능한 수준으로 고도화한다. Prometheus 메트릭 계측, Extended Query Protocol의 Prepared Statement reader 라우팅, Admin API를 구현한다.
QA 리뷰에서 발견된 Critical/Major 버그 4건을 수정하고, 프록시 수평 확장을 위한 Redis Pub/Sub 캐시 무효화를 구현한다.
프로토콜 레벨 DoS 공격, SQL 문자열 리터럴을 이용한 힌트 인젝션과 키워드 오탐을 수정한다.
진정한 커넥션 다중화를 위한 트랜잭션 레벨 풀링을 구현한다. DISCARD ALL, 세션 바인딩, PgBouncer와의 비교.
복제 구조의 원리(Primary/Replica), 복제 지연(Lag) 대응, 읽기/쓰기 분리 라우팅과 장애 전환 기준
DB 성능의 핵심인 스토리지 엔진. MySQL의 B-Tree와 Cassandra/RocksDB의 LSM-Tree 구조를 비교하고 장단점을 파헤칩니다.
시스템 설계 인터뷰의 단골 문제, URL 단축 서비스를 직접 설계하고 구현하며 인덱스와 캐시를 이해합니다.
Offset vs Cursor 페이지네이션 비교, 대용량 데이터 정렬과 Spring Data 적용