본문 바로가기
전체 1578
1338
Infra2분 읽기
Let's Encrypt 인증서 자동 갱신, 만료로 사이트 죽이지 않기
90일 인증서는 자동 갱신이 핵심. certbot 타이머 동작 확인, 갱신 후 nginx reload, dry-run 점검까지.
#HTTPS#TLS#certbot
2026.06.17
1337
Infra2분 읽기
nginx 502 Bad Gateway, 원인부터 잡기
502는 nginx가 업스트림(앱)에서 정상 응답을 못 받았다는 뜻. 앱 다운·소켓 경로·타임아웃·권한 순으로 점검한다.
#nginx#Reverse Proxy#Debugging
2026.06.17
1336
Database2분 읽기
무중단으로 컬럼 추가하기 — 안전한 마이그레이션
NOT NULL+DEFAULT를 큰 테이블에 한 번에 걸면 잠금으로 장애가 난다. 단계적(expand-contract) 마이그레이션 절차.
#Migration#PostgreSQL#ZeroDowntime
2026.06.16
1335
Database2분 읽기
소프트 삭제 vs 하드 삭제, 무엇을 선택할까
deleted_at 컬럼으로 숨기는 소프트 삭제는 복구·감사에 좋지만 쿼리·유니크 제약·용량 부담이 따른다. 기준 정리.
#Database#SoftDelete#Design
2026.06.16
1334
Database2분 읽기
EXPLAIN ANALYZE 읽는 법 — 느린 쿼리 진단
Seq Scan·Nested Loop·actual time·rows 추정 오차. EXPLAIN ANALYZE에서 진짜 병목을 찾는 읽기 순서.
#PostgreSQL#EXPLAIN#Performance
2026.06.16
1333
Database2분 읽기
복합 인덱스 컬럼 순서, 왜 중요한가
복합 인덱스 (a,b)는 a로 시작하는 조건엔 쓰이지만 b만으론 못 탄다. 등호·범위·정렬을 고려한 순서 설계.
#Index#PostgreSQL#Performance
2026.06.15
1332
Database2분 읽기
DB 커넥션 풀 사이즈, 크게 잡을수록 좋은 게 아니다
풀을 무작정 키우면 DB가 컨텍스트 스위칭으로 더 느려진다. 코어 수 기반 공식과 서버리스 환경의 함정.
#Database#ConnectionPool#Performance
2026.06.15
1331
Database2분 읽기
Redis 캐시 무효화 전략과 흔한 함정
"캐시 무효화는 컴퓨터과학 2대 난제." TTL·쓰기 시 무효화·캐시 스탬피드·일관성 트레이드오프를 실무 기준으로.
#Redis#Cache#Performance
2026.06.15
1330
Database2분 읽기
트랜잭션 격리수준과 데드락, 실무 기준
Read Committed로 충분한 경우가 대부분이지만, 잔액·재고는 더 강한 격리나 잠금이 필요하다. 데드락 회피 원칙까지.
#Transaction#Isolation#Deadlock
2026.06.14
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