본문 바로가기
전체 1401
1329
Database2분 읽기
N+1 쿼리 문제, 발견과 해결
목록 1번 + 각 항목마다 1번씩 쿼리가 나가는 N+1은 성능 킬러다. eager loading·조인·in 절·DataLoader로 한 방에 줄인다.
#ORM#Performance#SQL
2026.06.14
1328
Database2분 읽기
PostgreSQL 테이블이 계속 커진다 — VACUUM과 부풀음
행을 지워도 디스크가 안 줄고 느려지는 건 MVCC 죽은 튜플(bloat) 때문. autovacuum·VACUUM·인덱스 재생성 정리.
#PostgreSQL#VACUUM#Bloat
2026.06.14
1327
Backend2분 읽기
.env 환경변수 관리와 흔한 유출 사고 막기
.env를 깃에 올려 키가 유출되는 사고가 흔하다. gitignore·시크릿 매니저·프론트 노출 변수 구분까지 안전 관리법.
#Security#Env#Secrets
2026.06.13
1326
Database2분 읽기
PostgreSQL 인덱스를 만들었는데 안 타는 이유
인덱스가 있어도 Seq Scan을 하는 건 이유가 있다. 함수 가공·형변환·낮은 선택도·통계 부재 등 원인을 EXPLAIN으로 짚는다.
#PostgreSQL#Index#Performance
2026.06.13
1325
Backend2분 읽기
결제 API 멱등성(idempotency), 중복 결제 막기
네트워크 재시도·더블클릭으로 같은 결제가 두 번 일어난다. Idempotency-Key로 "한 번만" 보장하는 표준 패턴.
#Payment#Idempotency#API
2026.06.13
1324
Backend3분 읽기
Webhook 안전하게 받기 — 서명 검증과 멱등 처리
결제·외부 이벤트 webhook은 위조·중복 전송이 온다. HMAC 서명 검증으로 진위를, 이벤트 ID로 멱등성을 보장한다.
#Webhook#Security#HMAC
2026.06.12
1323
Backend2분 읽기
파일 업로드 서버 처리, multipart와 스트리밍
큰 파일을 메모리에 통째로 받으면 OOM 난다. 스트림으로 디스크/스토리지에 흘리고, 크기·확장자·MIME를 검증한다.
#Upload#Node.js#Streaming
2026.06.12
1322
Backend2분 읽기
API rate limiting, 어떻게 구현하나 (토큰 버킷)
남용·DoS·비용 폭증을 막는 rate limit. 고정 윈도우의 경계 문제와 토큰 버킷·슬라이딩 윈도우 비교, Redis 구현.
#API#RateLimit#Redis
2026.06.12
1321
Backend3분 읽기
비밀번호 해싱, bcrypt와 argon2 중 무엇을
비밀번호는 절대 평문·단순 해시(MD5/SHA) 저장 금지. bcrypt는 검증된 표준, argon2id는 현대 권장. 둘 다 안전하게 쓰는 법.
#Security#Password#bcrypt
2026.06.11
1320
Backend2분 읽기
Node.js 메모리 누수 찾기 — 힙 스냅샷 실전
시간이 지날수록 메모리가 계속 오른다면 누수다. 전역 캐시·이벤트 리스너·클로저가 단골 범인. 힙 스냅샷 비교로 추적.
#Node.js#Memory#Performance
2026.06.11
1319
Backend2분 읽기
JWT vs 세션, 인증 방식 선택과 흔한 보안 실수
JWT가 항상 정답은 아니다. 무상태 확장성 vs 즉시 무효화의 트레이드오프, 그리고 토큰 저장 위치 같은 보안 실수 정리.
#JWT#Session#Auth
2026.06.10
1318
Backend2분 읽기
API 페이지네이션, offset과 cursor 중 무엇을
offset/limit은 구현이 쉽지만 뒤로 갈수록 느리고 데이터가 밀린다. 무한 스크롤·대용량엔 cursor 기반이 정답.
#API#Pagination#Database
2026.06.10