백엔드/Python-Flask Python/SQLAlchemy N+1 쿼리 잡기: 이미지 라벨링 플랫폼 실전 편 코드 리뷰에서 발견된 세 곳의 N+1 쿼리. 이미지 100장이면 DB 라운드트립이 101회였던 이유와 `IN` 쿼리 + 벌크 DELETE로 2회로 줄인 실전 기록을 Python/SQLAlchemy로 정리했습니다. Prisma 편의 자매글입니다.
백엔드/Python-Flask Flask에서 ML 학습 백그라운드 실행: threading의 한계와 ProcessPoolExecutor 전환 Flask에서 YOLO 학습을 `threading.Thread`로 돌리면 GIL 병목, 취소 불가, orphan 기록 세 문제가 생깁니다. `ProcessPoolExecutor`로 전환하면서 PID 기반 SIGTERM 폴백과 서버 기동 시 복구 훅까지 함께 다룹니다.
백엔드/Python-Flask JSON 파일 데이터베이스에서 PostgreSQL로: 서비스 시그니처를 유지하며 데이터 레이어 교체하기 `users.json`, `labels/*.json` 파일 저장소를 PostgreSQL로 교체하면서 라우트 9개는 한 줄도 수정하지 않았습니다. 계층 경계를 미리 뽑아 둔 지난 편 리팩토링의 보상을 그대로 보여 주는 실전 기록입니다.
백엔드/Python-Flask 1,932줄 app.py를 54줄로: 모놀리식 Flask를 Blueprint로 분해하기 인수인계 받은 Flask 백엔드의 `app.py`가 1,932줄 한 파일에 42개 API가 섞여 있었습니다. Application Factory 패턴과 Blueprint로 도메인을 분리하고, 42개 경로를 그대로 유지하며 프론트엔드 변경 없이 리팩토링한 실전 기록입니다.