#백엔드

6 편의 글

파이썬 서버가 느릴 때: py-spy로 5분 안에 병목 찾기
5 분 소요

파이썬 서버가 느릴 때: py-spy로 5분 안에 병목 찾기

운영 중인 파이썬 프로세스에 코드 수정·재시작 없이 붙는 샘플링 프로파일러 py-spy 사용법을 정리합니다. dump로 멈춘 프로세스의 정체 확인, top으로 실시간 병목 관찰, record와 플레임그래프, --idle로 보는 off-CPU 대기, GIL 관점의 해석, 컨테이너에서 쓰는 법까지 다룹니다.

CDN이 속도를 높이는 방법: 캐시 히트부터 동적 콘텐츠까지
5 분 소요

CDN이 속도를 높이는 방법: 캐시 히트부터 동적 콘텐츠까지

실무자 관점에서 CDN의 동작을 정리합니다. 거리(RTT)를 줄이는 엣지 구조, 캐시 히트율을 결정하는 Cache-Control과 캐시 키, 무효화와 배포 전략, 캐시가 안 되는 동적 콘텐츠까지 CDN이 돕는 방식(TLS 종료·커넥션 재사용), 그리고 히트율을 갉아먹는 흔한 실수들을 다룹니다.

Redis가 빠른 이유: 메모리, 단일 스레드, 자료구조
5 분 소요

Redis가 빠른 이유: 메모리, 단일 스레드, 자료구조

Redis가 초당 수십만 요청을 처리하는 구조적 이유를 정리합니다. 디스크 없는 메모리 접근, 락이 필요 없는 단일 스레드 이벤트 루프, 목적에 맞게 구현된 자료구조라는 세 기둥과, 단일 스레드의 함정(느린 명령이 전체를 막는 구조), 그리고 Redis가 느려지는 경우까지 다룹니다.

데이터베이스 인덱스가 하는 일: B-tree, 조회 비용, 쓰기의 대가
5 분 소요

데이터베이스 인덱스가 하는 일: B-tree, 조회 비용, 쓰기의 대가

인덱스가 조회를 빠르게 만드는 원리를 B-tree 구조에서 풀어냅니다. 풀 스캔과의 비용 차이, 복합 인덱스와 컬럼 순서, 인덱스가 공짜가 아닌 이유(쓰기 비용·저장 공간), 어떤 컬럼에 인덱스를 만들고 어떤 컬럼에는 만들지 않는지의 실무 기준까지 정리합니다.

REST API가 느릴 때: 병목을 찾는 순서
5 분 소요

REST API가 느릴 때: 병목을 찾는 순서

API 응답이 느릴 때 감이 아니라 순서로 병목을 찾는 방법을 정리합니다. 어디가 느린지 구간부터 쪼개는 계측, 데이터베이스, 직렬화, 외부 호출, N+1이라는 단골 병목 4곳, 캐싱과 페이지네이션 같은 처방의 우선순위, 그리고 p50이 아니라 p99를 봐야 하는 이유까지 다룹니다.

Go 실전 #1 첫 HTTP 서버
4 분 소요

Go 실전 #1 첫 HTTP 서버

net/http 한 패키지로 시작하는 가장 작은 서버를 만들어봅니다. ListenAndServe, HandleFunc, ResponseWriter, 그리고 graceful shutdown까지 정리합니다.