Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Backend Performance Lab (Skill Step Labs Series #05)

대용량 트래픽 처리 & 고성능 백엔드 엔지니어링 실습 랩
🔗 GitHub Topics: #backend-performance #fastapi #connection-pooling #redis-cache


📌 1. 프로젝트 개요 (Overview)

본 레포지거리는 동시 접속자가 폭증하는 고트래픽 서비스 환경에서 발생하는 데이터베이스 커넥션 고갈, DB N+1 쿼리 렌더링 병목, 동기 블로킹 I/O로 인한 이벤트 루프 지연을 방지하고 백엔드 응답 속도를 극대화하는 성능 튜닝 패턴을 다룹니다.


🛠️ 2. 기술 스택 (Tech Stack)

구 분 기술 스택 / 패턴 주요 용도
Frameworks Node.js (TypeScript), Python FastAPI (uvicorn) 비동기 고성능 웹 백엔드 서빙
Database & Cache PostgreSQL, Redis In-Memory Cache 커넥션 풀링 및 핫 데이터 캐싱
Performance Async I/O, Connection Pooling, Batch Query TPS 극대화 및 데이터베이스 부하 분산

💡 3. 핵심 학습 모듈 (Key Learning Modules)

1) FastAPI 초고성능 비동기 API (fastapi-app/)

  • 위치: fastapi-app/main.py
  • 핵심: Async/Await 기반 Uvicorn 이벤트 루프 서빙 및 Pydantic 데이터 직렬화 튜닝.

2) DB 커넥션 풀링 & N+1 쿼리 최적화 (src/)

  • 위치: src/connection-pool.ts, src/batch-query.ts
  • 핵심: 데이터베이스 Connection Pool 개수 튜닝 및 JOIN/IN 절 Batch Query 변환으로 N+1 쿼리 차단.

3) Redis 인메모리 캐싱 전략

  • 위치: src/redis-cache.ts
  • 핵심: Write-Through vs Cache-Aside 캐싱 전략 및 Cache Stampede(캐시 폭주) 방지 TTL 처리.

🎯 4. 핵심 엔지니어링 & 트레이드오프 딥다이브 (Core Engineering Deep-Dive)

Q1. ORM 사용 시 발생하는 N+1 쿼리 문제의 발생 원인과 해결 방안은?

분석: 하위 엔티티 조회 시 메인 쿼리 1개 후 N번의 추가 SELECT 쿼리가 나가는 병목 현상입니다. ORM 레벨에서 JOIN FETCHinclude/select_related로 단일 조인 쿼리를 생성하거나, DataLoader 패턴으로 ID를 수집해 WHERE IN (...) 배치 쿼리로 변환해야 합니다.

Q2. DB 커넥션 풀(Connection Pool) 수치 산정 기준과 튜닝 방식은?

분석: CPU 코어 수 이상으로 커넥션 풀을 과도하게 올리면 스레드 간 컨텍스트 스위칭(Context Switching) 오버헤드와 메모리 고갈로 인해 전체 TPS가 하락합니다. 보통 풀 크기 = (CPU 코어 수 * 2) + 디스크 Spindle 수 공식을 기반으로 모니터링하며 최적값을 산정합니다.

Q3. Cache-Aside 패턴과 Cache Stampede(캐시 폭주) 현상 방지 알고리즘은?

분석: Cache-Aside는 캐시 우선 조회 후 없으면 DB에서 읽어 캐싱하는 패턴입니다. 핫키 캐시가 만료되는 순간 동시 요청이 DB로 몰리는 Cache Stampede를 방지하기 위해 분산 락(Mutex)을 걸거나 만료 전 확률적으로 백그라운드 갱신(PER Algorithm)을 수행합니다.


🏃 5. 로컬 실행 방법 (How to Run)

# 1. Node.js 의존성 설치 & 벤치마크
npm install
npm run dev

# 2. FastAPI 어플리케이션 실행
cd fastapi-app
pip install -r requirements.txt
uvicorn main:app --reload --port 8000

🗺️ 6. Skill Step Labs 성격별 카테고리 로드맵

🎨 1. Frontend & Mobile Web Architecture (#frontend-architecture)

⚡ 2. Fullstack & Backend Performance (#backend-performance)

🐳 3. Infrastructure & DevOps (#infra-devops)

🧠 4. AI Engineering & Data Platform (#ai-data-platform)

📱 5. Mobile Native Architecture (#mobile-native)

Releases

Packages

Contributors

Languages