📚 자바 백엔드 입문 · ?편 — PG·Redis·Kafka 130편 완주 가이드
📚 시리즈 2 · 130편
백엔드 데이터 인프라 — PostgreSQL · Redis · Kafka
영속 저장의 PostgreSQL, 캐시·실시간의 Redis, 이벤트 스트림의 Kafka. 백엔드를 떠받치는 세 인프라를 PG 46 + Redis 33 + Kafka 51 = 130편에 한 호흡으로 풀어쓴 학습 자료입니다.
어떤 분이 읽으면 좋아요
이 시리즈는 영속·캐시·이벤트 인프라가 처음인 자바·Spring 백엔드 엔지니어, 또는 회사에서 PG·Redis·Kafka 중 하나를 운영해야 하는 분을 염두에 두고 썼어요. 자바 백엔드 입문 59편을 완주하고 애플리케이션 코드는 손에 익었다면, 그 아래 데이터 레이어를 깊이 들여다볼 차례.
세 도구를 다 처음 보시는 분은 PG 1편(pg-intro) → Redis 1편(redis-intro) → Kafka 1편(kafka-intro) 세 글이면 큰 그림이 잡혀요. 셋 중 하나만 급하신 분은 각 도구의 1편·Quickstart 두 글부터 짚으시면 됩니다.
추천 읽기 순서
1부. PostgreSQL (46편)
Part 1. PostgreSQL 튜토리얼 (18편)
| 편 |
제목 |
핵심 |
| 1편 |
PostgreSQL 종합 |
정의·MySQL 비교·오픈소스 RDBMS 5단어 |
| 2편 |
설치 |
패키지·바이너리·Docker 설치 비교 |
| 3편 |
아키텍처 |
postmaster·backend·shared buffer·WAL |
| 4편 |
psql 시작 |
psql·meta command·\d·\l |
| 5편 |
Create Database |
CREATE DATABASE·encoding·locale |
| 6편 |
Access Database |
접속·인증·pg_hba.conf |
| 7편 |
핵심 개념 |
Cluster·Database·Schema·Table |
| 8편 |
SQL 기초 |
SELECT·FROM·WHERE 첫걸음 |
| 9편 |
테이블 만들기 |
CREATE TABLE·column·data type |
| 10편 |
INSERT |
INSERT INTO·VALUES·COPY |
| 11편 |
SELECT |
컬럼 선택·필터·정렬 |
| 12편 |
JOIN |
INNER·LEFT·RIGHT·FULL·CROSS |
| 13편 |
UPDATE |
UPDATE·SET·FROM 절 |
| 14편 |
DELETE |
DELETE·USING·RETURNING |
| 15편 |
Foreign Key |
FK·CASCADE·NO ACTION |
| 16편 |
View |
CREATE VIEW·Materialized View |
| 17편 |
Transaction |
BEGIN·COMMIT·ROLLBACK·SAVEPOINT |
| 18편 |
Window·Advanced |
OVER·PARTITION BY·CTE |
Part 2. PostgreSQL SQL Language 깊이 (23편)
| 편 |
제목 |
핵심 |
| 19편 |
SQL Syntax Lexical |
identifier·키워드·literal·constant |
| 20편 |
SQL Syntax |
expression·연산자·함수 호출 |
| 21편 |
DDL Overview |
DDL이란·스키마 설계 시작점 |
| 22편 |
DDL Create Table |
기본·기본값·생성된 컬럼 |
| 23편 |
DDL Constraints |
NOT NULL·UNIQUE·CHECK·PK·FK·EXCLUSION |
| 24편 |
DML Overview |
DML 큰 그림·트랜잭션 결합 |
| 25편 |
DML Insert |
INSERT·UPSERT·ON CONFLICT |
| 26편 |
DML Update |
UPDATE·FROM·RETURNING |
| 27편 |
DML Delete |
DELETE·USING·CASCADE |
| 28편 |
Queries Overview |
SELECT 큰 그림·평가 순서 |
| 29편 |
SELECT Lists |
column list·alias·DISTINCT |
| 30편 |
Table Expressions |
FROM·JOIN·WHERE·GROUP·HAVING |
| 31편 |
Queries 종합 |
정렬·LIMIT·VALUES·집합 연산 |
| 32편 |
Data Type |
numeric·char·date/time·boolean·UUID |
| 33편 |
JSON·JSONB |
jsonb·연산자·인덱스 |
| 34편 |
Index 개념 |
B-Tree·언제 인덱스를 만드나 |
| 35편 |
Index Type |
B-Tree·Hash·GiST·GIN·BRIN·SP-GiST |
| 36편 |
Index 깊이 |
부분·표현·복합·CONCURRENTLY |
| 37편 |
MVCC 개념 |
xmin·xmax·snapshot·VACUUM |
| 38편 |
MVCC Isolation |
Read Committed·Repeatable·Serializable |
| 39편 |
Text Search |
tsvector·tsquery·GIN |
| 40편 |
EXPLAIN |
EXPLAIN·ANALYZE·BUFFERS·plan 읽기 |
| 41편 |
Performance Tips |
튜닝 7대 체크리스트 |
Part 3. PostgreSQL 운영 (5편)
| 편 |
제목 |
핵심 |
| 42편 |
Install Binaries |
소스·바이너리·설정 디렉터리 |
| 43편 |
Runtime Config |
postgresql.conf·shared_buffers·work_mem |
| 44편 |
User Management |
ROLE·GRANT·REVOKE·OWNER |
| 45편 |
Managing Databases |
CREATE DB·tablespace·template |
| 46편 |
Backup |
pg_dump·pg_basebackup·PITR·WAL archive |
2부. Redis (33편)
Part 4-1. Redis 기본·자료형 (8편)
| 편 |
제목 |
핵심 |
| 47편 |
Redis 종합 |
정의·In-memory KV·언제 쓰나 |
| 48편 |
Data Types Overview |
9가지 자료형 큰 그림 |
| 49편 |
Strings |
SET·GET·INCR·SETEX·MSET |
| 50편 |
Hashes |
HSET·HGET·HGETALL·HINCRBY |
| 51편 |
Lists |
LPUSH·RPUSH·LPOP·BLPOP·LRANGE |
| 52편 |
Sets |
SADD·SISMEMBER·SINTER·SDIFF |
| 53편 |
Sorted Sets |
ZADD·ZRANGE·ZRANGEBYSCORE·랭킹 |
| 54편 |
Streams |
XADD·XREAD·consumer group |
Part 4-2. Redis 키·만료·파이프라인 (3편)
| 편 |
제목 |
핵심 |
| 55편 |
Keyspace·Expire |
TTL·EXPIRE·EXPIREAT·lazy expiration |
| 56편 |
Keyspace Notifications |
keyevent·pub/sub·이벤트 구독 |
| 57편 |
Pipelining |
RTT 절감·batch·MULTI 차이 |
Part 4-3. Redis 상호작용·프로그래밍 (4편)
| 편 |
제목 |
핵심 |
| 58편 |
Pub/Sub |
PUBLISH·SUBSCRIBE·PSUBSCRIBE |
| 59편 |
Transactions |
MULTI·EXEC·WATCH·optimistic |
| 60편 |
Lua Scripting |
EVAL·SCRIPT LOAD·원자성 |
| 61편 |
Functions |
Redis 7+ FUNCTION·라이브러리 |
Part 4-4. Redis 패턴 (4편)
| 편 |
제목 |
핵심 |
| 62편 |
Patterns Overview |
Cache-aside·Write-through·Read-through |
| 63편 |
Distributed Lock |
Redlock·SETNX·만료·재진입 |
| 64편 |
Twitter Clone |
Timeline·Fan-out·Sorted Set 적용 |
| 65편 |
Secondary Indexes |
보조 인덱스 모방·Sorted Set 키 설계 |
Part 4-5. Redis 운영 (6편)
| 편 |
제목 |
핵심 |
| 66편 |
Persistence |
RDB·AOF·하이브리드 |
| 67편 |
Replication |
master-replica·async·재동기화 |
| 68편 |
Cluster Scaling |
16384 슬롯·resharding·MOVED·ASK |
| 69편 |
Sentinel |
자동 페일오버·quorum·notification |
| 70편 |
ACL·Security |
ACL·사용자·command 권한 |
| 71편 |
TLS Encryption |
TLS·인증서·client/replica 암호화 |
Part 4-6. Redis 성능·통합 (2편)
| 편 |
제목 |
핵심 |
| 72편 |
Memory Optimization |
maxmemory·eviction policy·OBJECT ENCODING |
| 73편 |
Spring Data Redis |
RedisTemplate·@Cacheable·Lettuce |
Part 4-7. Redis 모듈 (4편)
| 편 |
제목 |
핵심 |
| 74편 |
RedisJSON |
JSON.SET·JSONPath·document store |
| 75편 |
RediSearch |
FT.CREATE·FT.SEARCH·인덱스·집계 |
| 76편 |
RedisTimeSeries |
TS.ADD·downsampling·aggregation |
| 77편 |
Vector Database |
dense vector·KNN·HNSW·RAG |
Part 4-8. Redis 클라이언트 (2편)
| 편 |
제목 |
핵심 |
| 78편 |
Clients Overview |
언어별 클라이언트 비교 |
| 79편 |
Java Clients |
Jedis vs Lettuce 깊이 비교 |
3부. Kafka (51편)
Part 5-1. Kafka 기본·개념 (3편)
| 편 |
제목 |
핵심 |
| 80편 |
Kafka 종합 |
정의·분산 로그·이벤트 스트리밍 |
| 81편 |
Use Cases |
메시징·로그 수집·CDC·스트림 처리 |
| 82편 |
Quickstart |
Docker·CLI·topic·producer·consumer |
Part 5-2. Kafka Design — 내부 동작 (7편)
| 편 |
제목 |
핵심 |
| 83편 |
Motivation |
왜 Kafka가 필요했나·설계 목표 |
| 84편 |
Persistence |
append-only log·zero-copy·OS page cache |
| 85편 |
Efficiency |
batching·compression·sendfile |
| 86편 |
Producer 설계 |
ack·partitioner·batching·idempotence |
| 87편 |
Consumer 설계 |
pull·offset·consumer group·rebalance |
| 88편 |
Delivery Semantics |
at-most-once·at-least-once·exactly-once |
| 89편 |
Replication |
ISR·leader·HW·LEO·unclean leader |
Part 5-3. Kafka API (4편)
| 편 |
제목 |
핵심 |
| 90편 |
APIs Overview |
Producer·Consumer·Admin·Streams 4 API |
| 91편 |
Producer API |
KafkaProducer·send·callback·flush |
| 92편 |
Consumer API |
poll·subscribe·commit·seek |
| 93편 |
Admin Client API |
createTopics·describe·alterConfigs |
Part 5-4. Kafka Configuration (5편)
| 편 |
제목 |
핵심 |
| 94편 |
Broker Config |
num.partitions·log.dirs·replication factor |
| 95편 |
Topic Config |
retention.ms·cleanup.policy·min.insync.replicas |
| 96편 |
Producer Config |
acks·linger.ms·batch.size·compression.type |
| 97편 |
Consumer Config |
group.id·auto.offset.reset·max.poll.records |
| 98편 |
Admin Config |
request.timeout·retries·security |
Part 5-5. Kafka Operations (6편)
| 편 |
제목 |
핵심 |
| 99편 |
Operations Basic |
topic 관리·partition 추가·rebalance |
| 100편 |
Monitoring·JMX |
JMX·MBean·lag·throughput |
| 101편 |
Multi-tenancy |
quota·ACL·topic naming |
| 102편 |
Datacenters |
DC 간 배치·rack awareness |
| 103편 |
Geo-replication |
MirrorMaker 2·Cluster Linking |
| 104편 |
Hardware·OS |
디스크·메모리·파일시스템·tuning |
Part 5-6. Kafka 고급 인프라 (3편)
| 편 |
제목 |
핵심 |
| 105편 |
KRaft |
Zookeeper 대체·Raft·메타데이터 quorum |
| 106편 |
Tiered Storage |
hot/cold·S3·원격 로그 |
| 107편 |
Log Compaction |
key 기반·tombstone·CDC 기반 |
Part 5-7. Kafka Internals (5편)
| 편 |
제목 |
핵심 |
| 108편 |
Log 구현 |
segment·index·offset·time index |
| 109편 |
Network Layer |
NIO·SocketServer·Reactor |
| 110편 |
Message Format |
record batch·header·varint |
| 111편 |
Rebalance Protocol |
Eager·Cooperative·Static Membership |
| 112편 |
Transaction Protocol |
TransactionCoordinator·EOS·2PC |
Part 5-8. Kafka Security (4편)
| 편 |
제목 |
핵심 |
| 113편 |
Security Overview |
인증·인가·암호화 3축 |
| 114편 |
SSL·TLS |
keystore·truststore·mTLS |
| 115편 |
SASL |
PLAIN·SCRAM·GSSAPI·OAUTHBEARER |
| 116편 |
Authorization·ACL |
ACL·resource·operation·principal |
Part 5-9. Kafka Connect (4편)
| 편 |
제목 |
핵심 |
| 117편 |
Connect Overview |
Source·Sink·worker·distributed |
| 118편 |
Connect User Guide |
connector·SMT·converter |
| 119편 |
Connect Developer Guide |
Connector·Task·SourceRecord·offset |
| 120편 |
Connect Config |
worker config·connector config·REST |
Part 5-10. Kafka Streams (9편)
| 편 |
제목 |
핵심 |
| 121편 |
Streams Intro |
스트림 처리·KStream·KTable |
| 122편 |
Streams Quickstart |
첫 토폴로지·WordCount |
| 123편 |
Core Concepts |
Topology·State·Time·Window |
| 124편 |
Write·Run App |
StreamsBuilder·실행·packaging |
| 125편 |
Streams DSL |
map·filter·join·aggregate·window |
| 126편 |
Processor API |
Processor·ProcessorContext·State Store |
| 127편 |
Stateful·IQ |
State Store·Interactive Query·메모리 관리 |
| 128편 |
Streams Testing |
TopologyTestDriver·integration test |
| 129편 |
Streams Ops |
Security·topic 관리·reset tool |
Part 5-11. Kafka 통합 (1편)
| 편 |
제목 |
핵심 |
| 130편 |
Spring Kafka |
@KafkaListener·KafkaTemplate·EOS 통합 |
시리즈 핵심 한 줄 정리
- 세 도구의 자리 — PostgreSQL = 영속·정합성, Redis = 캐시·실시간, Kafka = 이벤트·로그
- PostgreSQL 핵심 5단어 — MVCC · Index · WAL · EXPLAIN · Transaction
- Redis 핵심 5단어 — In-memory · Data Type · TTL · Persistence · Cluster
- Kafka 핵심 5단어 — Topic · Partition · Replication · Consumer Group · Offset
- 자바·Spring 통합 —
Spring Data JPA + Spring Data Redis + Spring Kafka 세트가 표준
- 운영 7대 사고 — PG long transaction·Redis OOM·Redis hot key·Kafka consumer lag·Kafka rebalance storm·Kafka split-brain·세 도구 공통 디스크 풀
- 분산·HA — PG는 streaming replication·Redis는 Sentinel·Cluster·Kafka는 ISR·KRaft 가 표준
- 트랜잭션의 결 — PG MVCC isolation 4단계·Redis MULTI/EXEC·Kafka EOS(idempotence + transaction) 셋 다 결이 다름
- 현재 안정 버전 — PostgreSQL 17.x · Redis 8.x · Apache Kafka 4.0 (2026-05 기준)
- 시리즈 1과 결합 — 자바 백엔드 입문 59편 위에 이 데이터 인프라 130편을 얹으면 백엔드 한 묶음이 잡힘
다른 시리즈
이 시리즈가 끝나면 시리즈 8 (Elasticsearch 38편) 으로 4번째 데이터 인프라(검색·로그)까지 묶거나, 시리즈 3 (Spring Batch 48편) 으로 PG·Redis·Kafka 위에 올라가는 배치 처리 레이어를 보시는 흐름이 자연스러워요.