본문 바로가기
전체 1578
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
1317
Backend3분 읽기
Express에서 async 에러가 안 잡힐 때 — 핸들링 패턴
async 라우트에서 throw한 에러가 서버를 죽이거나 응답이 멈춘다. try/catch 래퍼나 express-async 패턴으로 중앙 처리.
#Express#Node.js#ErrorHandling
2026.06.10
1316
Backend3분 읽기
Node.js EADDRINUSE, 포트가 이미 사용 중일 때
"address already in use :3000" 에러 해결. 점유 프로세스 찾아 종료, 우아한 종료(graceful shutdown)로 재발 방지.
#Node.js#Port#Process
2026.06.09
1315
Frontend2분 읽기
React 상태관리, Context·Zustand·Redux 언제 무엇을
전역 상태가 필요하다고 무조건 Redux는 아니다. 규모·갱신 빈도·팀 규약 기준으로 Context, Zustand, Redux를 가른다.
#React#StateManagement#Zustand
2026.06.09