📚

Learning

개발 공부 기록 및 학습 노트

지속 업데이트 스프링 · JPA · DB 운영 · 모니터링

🚀 백엔드 커리큘럼

STEP 7

7단계: 복습(Q&A)

학습하며 남긴 Q&A를 한 번에 모아 복습하는 단계

Backend Roadmap 12/16
STEP 8

8단계: 보안 (Security Specialist)

기능 구현을 넘어, 안전한 서비스를 만들기 위한 필수 보안 지식과 공격 방어 기법을 다룹니다.

Backend Roadmap 12/28
STEP 9

9단계: 컴퓨터 공학 심화 (Deep CS)

분산 시스템의 정합성 모델, DB 스토리지 엔진의 원리 등 시니어 레벨로 가기 위한 이론적 깊이를 다룹니다.

Backend Roadmap 12/28
STEP 11

11단계: 아키텍처 마스터리 (Architecture Mastery)

대규모 분산 시스템에서 발생하는 데이터 정합성 문제와 무한 확장을 위한 샤딩, 그리고 복잡한 도메인을 다루는 DDD까지 아키텍트 레벨의 난제를 다룹니다.

Backend Roadmap 12/28

🗺️ 학습 가이드

개발하면서 배우고 공부한 내용들을 주제별로 정리합니다. 백엔드 학습은 기초 → 스프링 → 데이터/설계 → 운영/모니터링 → 심화/시스템 설계 → 복습(Q&A) 모듈로 나누어 지속적으로 업데이트하며, 커리큘럼·주제 카드·최신 노트가 자동으로 정렬됩니다. 학습 순서는 타임라인 페이지에서 study_order 기준으로 확인할 수 있습니다.

  • 학습 타임라인: /learning/timeline/에서 study_order 순서대로 확인합니다.
  • 커리큘럼 카드: Backend Roadmap 토픽 글이 자동으로 순서대로 표시됩니다.
  • 주제 카드: Spring/Database/Kafka/DevOps 등 토픽별 최신 글을 한 번에 확인합니다.
  • 최근 학습 노트: 최신순 정렬, 더보기/토픽별 필터 지원.

학습 방법

  • 개념 → 실험 → 기록: 읽고 끝내지 말고, 작은 코드/재현으로 확인한 뒤 내 말로 정리합니다.
  • 선택 기준 만들기: “언제 A, 언제 B”를 한 줄이라도 남기면 실전에서 재사용됩니다.
  • 복습(Q&A): 막힌 포인트를 질문/답 형태로 쌓아두면 다시 꺼내보기 쉬워집니다.

📂 학습 주제

API

URL, Header, Query 기반 버전 관리와 Breaking Change 전략

3개 12/28

API Design

학습 노트 모음

1개 10/12

Algorithm

학습 노트 모음

1개 12/16

Architecture

학습 노트 모음

21개 12/29

Backend

학습 노트 모음

8개 12/16

Backend Roadmap

학습 노트 모음

12개 12/28

Build

학습 노트 모음

1개 12/16

CS

학습 노트 모음

2개 12/29

Caching

학습 노트 모음

1개 12/16

Cloud

S3 개념, Presigned URL, 대용량 업로드, 비용 최적화

1개 12/28

Code Quality

네이밍, 함수 설계, 주석, 리팩토링 원칙

1개 12/28

Database

학습 노트 모음

20개 12/28

Database Internals

학습 노트 모음

1개 12/28

Design Patterns

학습 노트 모음

1개 10/09

DevOps

학습 노트 모음

21개 12/29

Distributed

Kafka, RabbitMQ, Redis Pub/Sub 비교와 선택 기준

1개 12/28

Distributed Systems

학습 노트 모음

2개 12/28

Frontend

React 성능 최적화, Virtual DOM, memo, useCallback 관련 핵심 개념과 실전 예제 정리

2개 12/01

Git

학습 노트 모음

1개 12/16

JPA

Lazy/Eager 로딩, Batch Size, QueryDSL, Hibernate 통계

4개 12/28

JVM

학습 노트 모음

2개 12/16

Java

학습 노트 모음

8개 12/29

Kafka

학습 노트 모음

6개 12/16

Messaging

학습 노트 모음

1개 12/16

Modern Tech

학습 노트 모음

5개 12/28

Network

학습 노트 모음

8개 12/29

Networking

학습 노트 모음

2개 12/16

OOP

학습 노트 모음

1개 10/06

OS

학습 노트 모음

1개 12/28

Observability

Traces, Metrics, Logs 통합, 분산 컨텍스트 전파

4개 12/28

Ops

학습 노트 모음

4개 12/16

Performance

학습 노트 모음

1개 12/16

Practical Project

학습 노트 모음

1개 12/28

Q&A

학습 노트 모음

3개 12/16

React

React 라이브러리 학습 노트

1개 11/03

Reactive

Reactive Programming, Publisher/Subscriber, Backpressure 관련 핵심 개념과 실전 예제 정리

1개 12/01

Redis

학습 노트 모음

2개 12/16

Security

학습 노트 모음

12개 12/29

Spring

ApplicationEvent, @EventListener, 비동기 이벤트, 트랜잭션 바인딩

32개 12/28

Spring Data JPA

학습 노트 모음

1개 11/02

System Design

학습 노트 모음

4개 12/16

Testing

테스트 피라미드, Mock vs Stub, 통합 테스트 격리 전략

3개 12/28

최근 학습 노트

CS

OSI 7계층과 TCP/IP 이해

백엔드 개발자가 알아야 할 실무 관점의 네트워크 계층 구조 (L4 vs L7 로드밸런서 차이점 포함)

Network OSI 7 Layer TCP/IP +1
DevOps

피처 플래그: 안전한 기능 릴리스

이 글에서 얻는 것

  • 피처 플래그로 배포와 릴리스를 분리하는 방법을 이해합니다
  • 카나리 릴리스A/B 테스트 구현 패턴을 알아봅니다
  • 피처 플래그 베스트 프랙티스와 관리 전략을 익힙 …

Feature Flag DevOps Release +2
Database

페이지네이션과 정렬: 대용량 데이터 처리

이 글에서 얻는 것

  • Offset 페이징의 한계와 대안을 이해합니다
  • Cursor 기반 페이징으로 대용량 데이터를 효율적으로 처리합니다
  • No-Offset …

Pagination Database Performance +2
Testing

테스트 전략: 단위 테스트부터 E2E까지

이 글에서 얻는 것

  • 테스트 피라미드와 각 레벨의 목적을 이해합니다
  • Mock vs Stub vs Spy 차이를 알고 적절히 사용합니다
  • 통합 테스트 격리 전략으로 안정적인 테스트를 …

Testing JUnit Mockito +2
Code Quality

클린 코드: 읽기 좋은 코드 작성법

이 글에서 얻는 것

  • 좋은 네이밍으로 코드의 의도를 명확히 전달합니다
  • 함수 설계 원칙으로 단일 책임을 지키는 함수를 작성합니다
  • 코드 스멜을 인식하고 리팩토링합니다

네이밍

의도를 …

Clean Code Refactoring Best Practices +1
Cloud

오브젝트 스토리지: S3와 파일 관리

이 글에서 얻는 것

  • 오브젝트 스토리지의 개념과 파일 시스템과의 차이를 이해합니다
  • Presigned URL로 안전한 업로드/다운로드를 구현합니다
  • 대용량 파일 업로드비용 최적화

S3 Object Storage AWS +2
Spring

예외 처리 패턴: 비즈니스 예외 설계

이 글에서 얻는 것

  • 비즈니스 예외 계층을 설계합니다
  • 글로벌 예외 핸들링으로 일관된 에러 응답을 제공합니다
  • 예외 로깅 전략을 구현합니다

예외 계층 설계

기본 구조

classDi …

Exception Handling Spring Error Handling +1
Database Internals

스토리지 엔진 내부: B-Tree vs LSM-Tree

DB 성능의 핵심인 스토리지 엔진. MySQL의 B-Tree와 Cassandra/RocksDB의 LSM-Tree 구조를 비교하고 장단점을 파헤칩니다.

Database B-Tree LSM-Tree +2
DevOps

설정 관리: 외부 설정과 시크릿 관리

이 글에서 얻는 것

  • 12-Factor App 설정 원칙을 이해합니다
  • Spring Cloud Config로 중앙 설정 관리를 구현합니다
  • Vault …

Configuration Spring Cloud Config Vault +1
Distributed Systems

분산 트랜잭션: 2PC에서 SAGA까지

마이크로서비스 환경에서 데이터 정합성을 어떻게 보장할까요? 강한 일관성(2PC)의 한계와 결과적 일관성(SAGA) 패턴의 구현 방법을 다룹니다.

Distributed Transaction SAGA 2PC +1
API

멱등성: 안전한 재시도를 위한 API 설계

이 글에서 얻는 것

  • **멱등성(Idempotency)**의 개념과 중요성을 이해합니다
  • Idempotency Key 패턴으로 중복 요청을 처리합니다
  • 결제/주문 API에서 멱등성을 …

Idempotency API Retry +2
Distributed Systems

데이터 정합성 모델: Strong부터 Eventual까지

분산 시스템에서 '최신 데이터'를 본다는 것의 의미와 비용. Linearizability, Sequential, Eventual Consistency의 차이를 명확히 구분합니다.

Consistency Distributed Systems Linearizability +1
Database

데이터 샤딩과 Consistent Hashing

DB 데이터를 여러 서버에 나누는 샤딩 전략과, 서버 증설 시 데이터 이동을 최소화하는 Consistent Hashing 알고리즘 설명.

Sharding Consistent Hashing Database Scaling +1
Network

WebSocket과 실시간 통신

이 글에서 얻는 것

  • HTTP Polling vs WebSocket의 본질적 차이를 이해합니다
  • STOMP …

WebSocket STOMP Real-time +1
Modern Tech

Vector DB 내부: HNSW 인덱스와 RAG 백엔드

AI 서비스의 필수소인 Vector Search. 고차원 데이터를 빠르게 검색하는 HNSW(Hierarchical Navigable Small World) 알고리즘의 원리를 파헤칩 …

AI Vector DB HNSW +2
Spring

Spring Validation: 입력 검증 완벽 가이드

이 글에서 얻는 것

  • Bean Validation으로 선언적 검증을 구현합니다
  • Custom Validator로 복잡한 검증 로직을 처리합니다
  • 글로벌 예외 핸들링으로 일관된 에러 응 …

Spring Validation Bean Validation +1
Observability

OpenTelemetry: 통합 관측 표준

이 글에서 얻는 것

  • OpenTelemetry의 3가지 신호(Traces, Metrics, Logs)를 이해합니다
  • 자동 계측수동 계측 방법을 알아봅니다
  • 분산 컨텍스트 전파로 요 …

OpenTelemetry Observability Tracing +2
JPA

JPA 성능 최적화: Fetch 전략과 배치 처리

이 글에서 얻는 것

  • Fetch 전략 (Lazy vs Eager)의 동작과 함정을 이해합니다
  • Batch SizeFetch Join으로 N+1을 최적화합니다
  • 대용량 배치 처리 패 …

JPA Hibernate Performance +2
API

GraphQL 심화: 스키마 설계와 성능 최적화

이 글에서 얻는 것

  • GraphQL과 REST의 본질적 차이를 이해합니다
  • N+1 문제를 DataLoader로 해결하는 패턴을 익힙니다
  • 실시간 기능을 위한 Subscription 구 …

GraphQL API DataLoader +1
Architecture

DDD 심화: Aggregate Root와 트랜잭션 경계

도메인 주도 설계(DDD)에서 가장 어려운 Aggregate 개념. 트랜잭션의 범위를 정의하고 데이터 무결성을 지키는 원칙을 다룹니다.

DDD Aggregate Transaction +1
Architecture

CQRS: 명령과 조회의 분리

이 글에서 얻는 것

  • CQRS 패턴의 개념과 적용 시점을 이해합니다
  • CommandQuery 모델을 분리하는 방법을 알아봅니다
  • Event Sourcing …

CQRS Architecture DDD +1
API

API 버전 관리: 하위 호환성을 지키는 방법

이 글에서 얻는 것

  • API 버전 관리 전략별 장단점을 이해합니다
  • Breaking Change를 안전하게 처리하는 방법을 알아봅니다
  • Deprecation 정책으로 클라이언트 마이그 …

API Versioning REST +1
Backend Roadmap

11단계: 아키텍처 마스터리 (Architecture Mastery)

대규모 분산 시스템에서 발생하는 데이터 정합성 문제와 무한 확장을 위한 샤딩, 그리고 복잡한 도메인을 다루는 DDD까지 아키텍트 레벨의 난제를 다룹니다.

Distributed Transactions Sharding DDD +1
Backend Roadmap

9단계: 컴퓨터 공학 심화 (Deep CS)

분산 시스템의 정합성 모델, DB 스토리지 엔진의 원리 등 시니어 레벨로 가기 위한 이론적 깊이를 다룹니다.

CS Distributed Systems Database Internals +1
Backend Roadmap

8단계: 보안 (Security Specialist)

기능 구현을 넘어, 안전한 서비스를 만들기 위한 필수 보안 지식과 공격 방어 기법을 다룹니다.

Security Auth Cryptography +1
Ops

클라우드 비용 최적화 전략

오토스케일, 캐시/스토리지 티어링, 예약/세이빙 플랜, 모니터링을 통한 비용 최적화

Cost Optimization Autoscaling Caching +1
System Design

시스템 설계: 뉴스피드

Fan-out on write/read, 캐시/타임라인 테이블 설계, 지연/일관성 트레이드오프 정리

System Design Newsfeed Fanout +1
System Design

시스템 설계: URL Shortener

Key 생성, 충돌 방지, 캐시/DB 설계, 확장성·가용성 고려사항 정리

System Design URL Shortener Hash +2
Architecture

멀티테넌시 설계 전략

스키마/데이터베이스 분리, 테넌트 격리/보안, 마이그레이션·운영 고려사항

Multitenancy Schema Isolation +1
Architecture

레거시 리팩터링 전략

대규모 레거시 개선을 위한 우선순위, 단계별 접근, 위험 관리

Legacy Refactoring Strangler +1
Spring

WebFlux vs MVC 선택 가이드

Reactive 필요성 판단 기준, 스레드 모델 차이, 적용/비적용 시나리오 정리

WebFlux Spring MVC Reactive +1
Testing

Spring 통합 테스트와 Testcontainers

MySQL/Redis/Kafka를 Testcontainers로 올려 실제 환경과 유사한 통합 테스트를 구성하는 방법

Testcontainers Spring Boot Integration Test +2
Security

Spring Security: 필터 체인의 미학

어렵게만 느껴지는 Security의 내부 작동 원리(DelegatingFilterProxy, FilterChain)와 커스텀 필터

Spring Security Filter Chain JWT +1
Spring

Spring Security + JWT 인증 흐름

JWT 기반 인증 필터, 토큰 발급/검증, Stateless 세션 구성을 코드로 정리

Spring Security JWT Authentication +1
Spring

Spring Boot 자동 설정 해부

자동 설정 동작 원리, 조건부 빈 등록, 커스터마이징 포인트 정리

Spring Boot AutoConfiguration Condition +1
Redis

Redis 캐시 패턴 모음

Cache-Aside, Write-Through, Write-Behind, 분산락 패턴을 코드 예시와 함께 정리

Redis Cache Aside Write Through +2
Q&A

Q&A 모음: 운영/보안 20제

CI/CD, 모니터링/알람, 네트워크, CORS/CSRF/OWASP 등 운영/보안 관련 20문항 Q&A

Ops Security DevOps +1
Kafka

Kafka 재시도/DLQ 설계

재시도 토픽, DLQ, 멱등 처리로 Kafka 소비 실패를 다루는 패턴

Kafka Retry DLQ +1
Architecture

gRPC 서비스 설계 기초

프로토 정의, 일방향/양방향 스트리밍, gRPC-Gateway 연계 등 gRPC 설계 핵심

gRPC Protobuf Streaming +1
Architecture

GraphQL 스키마 설계 가이드

스키마 정의, 리졸버 구조, N+1 방지(DataLoader), 버전 관리 베스트 프랙티스

GraphQL Schema Resolver +1
Architecture

Event Sourcing과 CQRS 입문

이벤트 소싱과 CQRS 기본 개념, 장단점, 적용 시 고려사항

Event Sourcing CQRS Command +1
Security

CI/CD 보안: 공급망 공격 막기

내 코드는 안전해도 빌드 도구가 해킹당하면? 소스부터 배포까지 신뢰 루프 만들기

CI/CD Supply Chain SBOM +1
Backend Roadmap

7단계: 복습(Q&A)

학습하며 남긴 Q&A를 한 번에 모아 복습하는 단계

Q&A 백엔드 정리 +1
Backend

캐싱 전략 정리

Q1. 캐싱의 기본 개념과 Cache-Aside, Write-Through, Write-Behind 전략을 설명해주세요.

답변

**캐싱(Caching)** …

캐싱 Redis Caffeine +2
Spring

예외 처리 전략 정리

Q1. @ControllerAdvice와 @ExceptionHandler를 사용한 글로벌 예외 처리를 설명해주세요.

답변

@ControllerAdvice는 Spring …

예외처리 Spring ControllerAdvice +2
Frontend

상태관리 비교 정리

상태관리 비교 정리

Q1. Redux와 Context API의 차이는 무엇인가요?

답변

ReduxContext API는 모두 전역 상태 관리를 위한 도구이지만, …

React Redux Zustand +2
Backend

동시성 제어 정리

Q1. 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)의 차이점과 사용 사례를 설명해주세요.

답변

동시성 제어는 여러 트랜잭션이 동시에 같은 …

동시성 Lock JPA +3
Spring

WebFlux 구조 정리

Q1. Mono와 Flux의 차이는 무엇인가요?

답변

Mono: 0개 또는 1개의 데이터를 비동기로 처리하는 Publisher

Flux: 0개 이상 N개의 데이터를 비동기로 처리하 …

Spring WebFlux Reactor Reactive +2
Database

SQL 성능 튜닝 정리

SQL 성능 튜닝 정리

Q1. Execution Plan (실행 계획)은 어떻게 읽나요?

답변

**Execution Plan (실행 계획)**은 DB 옵티마이저가 쿼리를 어떻게 실 …

SQL Performance Join +1
Spring

Spring Transaction 관리 정리

Spring Transaction 관리 정리

Q1. @Transactional은 어떻게 동작하나요?

답변

@TransactionalSpring AOP를 이용한 선언적 트랜잭션 …

Spring Transaction ACID +1
Spring

Spring Bean Lifecycle 정리

Q1. Spring Bean의 생명주기를 설명해주세요.

답변

Spring Bean은 컨테이너 시작 → 생성 → 의존성 주입 → 초기화 → 사용 → 소멸 단계를 거칩니다.

상세 생명 …

Spring Bean Lifecycle +1
Reactive

Reactive Programming 개념 정리

Reactive Programming 개념 정리

Q1. Reactive Programming이란 무엇이고, 왜 필요한가요?

답변

Reactive Programming비동기 데이 …

Reactive Backpressure Publisher +1
Frontend

React 성능 최적화 정리

React 성능 최적화 정리

Q1. Virtual DOM은 어떻게 동작하나요?

답변

Virtual DOM실제 DOM의 가벼운 복사본으로, React가 UI …

React Performance Virtual DOM +1
Security

OAuth2 인증 구조 정리

Q1. OAuth2 인증 흐름을 설명하고, 4가지 Grant Type의 차이점을 비교해주세요.

답변

OAuth2는 인증(Authentication)이 아닌 인 …

OAuth2 인증 보안 +3
Kafka

Kafka Partition 설계 정리

Kafka Partition 설계 정리

Q1. Kafka에서 메시지는 어떻게 Partition에 분배되나요?

답변

Partition 분배 방식메시지의 Key에 따라 결정됩니다. …

Kafka Partition Ordering +1
Kafka

Kafka Consumer Group 정리

Kafka Consumer Group 정리

Q1. Kafka Consumer Group이란 무엇이고, 왜 필요한가요?

답변

Consumer Group여러 Consumer가 협력 …

Kafka Consumer Group Rebalance +1
Java

JVM 내부 구조 정리

Q1. JVM의 구조를 설명해주세요.

답변

JVM은 크게 Class Loader, Runtime Data Area, Execution Engine으로 구성됩니다. …

Java JVM ClassLoader +1
Java

Java GC & 메모리 구조 정리

Q1. Java의 메모리 구조를 설명해주세요. Heap과 Stack의 차이는 무엇인가요?

답변

Java 메모리는 크게 Heap, Stack, Method Area, PC …

Java GC Memory +1
DevOps

Docker & Kubernetes 정리

Docker & Kubernetes 정리

Q1. Docker와 가상머신(VM)의 차이는 무엇인가요?

답변

**Docker (Container)**와 **VM (Virtual …

Docker Kubernetes DevOps +1
Spring

DispatcherServlet 동작 흐름 정리

Q1. DispatcherServlet의 동작 흐름을 설명해주세요.

답변

DispatcherServlet은 Spring MVC의 Front Controller로, 모든 HTTP 요 …

Spring Spring MVC DispatcherServlet +1
Database

DB 인덱스 최적화 정리

DB 인덱스 최적화 정리

Q1. B-Tree 인덱스는 어떻게 동작하나요?

답변

**B-Tree (Balanced Tree)**는 대부분의 RDBMS에서 사용하는 균형 잡힌 트리 구 …

Database Index B-Tree +1
DevOps

CI/CD 개념 정리

CI/CD 개념 정리

Q1. CI/CD란 무엇이고, 왜 필요한가요?

답변

CI/CD는 **지속적 통합(Continuous Integration)**과 **지속적 배 …

CI/CD Jenkins ArgoCD +1
Backend

API 성능 문제 해결 정리

API 성능 문제 해결 정리

Q1. Thread Dump는 어떻게 분석하나요?

답변

Thread Dump특정 시점의 모든 스레드 상태 스냅샷으로, 성능 문제 진단에 핵심적입니 …

Performance API Thread Dump +1
React

React Hooks 기초

React Hooks의 기본 개념과 사용법 정리

React Hooks Frontend
Database

MySQL 인덱스 기초 예제

WHERE, ORDER BY, JOIN에서 인덱스가 어떻게 사용되는지 간단한 예제로 정리

MySQL Index Explain +1