피드로 돌아가기
GeekNewsDatabase
원문 읽기
SQLite로 실제 쇼핑몰을 운영하며 배운 것들
SQLite WAL 모드와 Docker 볼륨 기반의 초경량 DB 아키텍처 구축 및 배포 정합성 확보
AI 요약
Context
인프라 복잡도 최소화를 위해 별도 DB 서버 없이 단일 Docker 볼륨 내 4개의 SQLite 파일을 운영하는 구조 설계. Rails 8의 SQLite 우선 전략을 채택하여 커넥션 풀 관리 및 서버 유지보수 비용 제거를 목표로 함.
Technical Solution
- Write-Ahead Logging(WAL) 모드 활성화를 통한 다수 읽기와 단일 쓰기의 동시성 확보
- Primary, Cache, Queue, Cable 용도로 DB 파일을 분리하여 쓰기 경합 분산 및 목적별 저장소 최적화
- Docker 볼륨 기반 파일시스템 잠금 방식의 특성을 고려한 블루-그린 배포 주기 제어
- sqlite_sequence 테이블의 자동증가 최댓값 추적을 통한 데이터 유실 여부 정밀 진단
- LOWER() 함수와 LIKE 결합을 통한 SQLite 환경의 대소문자 구분 없는 검색 쿼리 구현
- json_extract 결과값의 타입 불일치 문제를 방지하기 위한 명시적 형변환 적용
실천 포인트
- SQLite WAL 모드 사용 시 배포 파이프라인의 컨테이너 교체 주기가 파일 잠금 정합성에 미치는 영향 검토 - 데이터 유실 의심 상황에서 sqlite_sequence 값과 실제 행 수의 차이를 통한 포렌식 분석 수행 - 단일 서버 환경의 적당한 쓰기 부하 시 인프라 단순화를 위해 SQLite 도입 및 추후 PostgreSQL 마이그레이션 경로 확보