Floci (LocalStack 대안) 스토리지 모드: 서비스별로 적절한 트레이드오프 선택 (그리고 비용은 절감)

발행: (2026년 5월 4일 AM 04:29 GMT+9)
6 분 소요
원문: Dev.to

I’m happy to translate the article for you, but I’ll need the text of the article itself. Could you please paste the content you’d like translated (excluding the source line you’ve already provided)? Once I have the text, I’ll keep the source link at the top unchanged and translate the rest into Korean while preserving all formatting and technical terms.

개요

docker compose down 후에도 살아남는 상태는 생각하지 않던 것 중 하나—테스트 스위트가 필요하고, 로컬 개발이 필요하며, CI 파이프라인에서는 절대 필요하지 않을 때까지.
Floci는 네 가지 저장 모드(모두 무료, 모두 코어에 포함)를 제공하고, 서비스별 오버라이드가 가능해 작업에 맞는 적절한 트레이드오프를 선택할 수 있게 합니다.

스토리지 모드

모드재시작 시 유지쓰기 동작최적 사용 사례
memoryPure RAMCI, 단위 테스트, 일시적인 통합 테스트
hybrid디스크에 비동기 플러시로컬 개발 (최적 지점)
persistent변경마다 동기식 쓰기“마지막 쓰기를 잃지 않음” 워크플로우
wal추가 전용 로그 + 압축고처리량 내구성 워크로드

전역 기본값을 설정하고, 다른 동작이 필요할 경우 서비스별로 재정의합니다.

Configuration examples

Memory (default) – ideal for CI

# docker-compose.yml
services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    environment:
      FLOCI_STORAGE_MODE: memory

모든 것이 RAM에 저장됩니다. 컨테이너를 재시작하면 데이터가 초기화됩니다. 가능한 가장 빠른 쓰기 속도와 최소한의 용량을 제공합니다.

Hybrid – local development

# docker-compose.yml
services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - ./data:/app/data
    environment:
      FLOCI_STORAGE_MODE: hybrid

읽기와 쓰기가 메모리에서 이루어지고, 백그라운드 플러시가 약 5 초마다 데이터를 디스크로 이동합니다. Docker‑compose down을 실행해도 미리 채워진 테스트 데이터가 삭제되지 않습니다.

Persistent – when losing the last write hurts

# docker-compose.yml
services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - ./data:/app/data
    environment:
      FLOCI_STORAGE_MODE: persistent

모든 변경 사항이 응답하기 전에 디스크에 동기화됩니다. 쓰기 속도는 느리지만, 확인된 데이터는 실제로 디스크에 저장됩니다—Docker가 컨테이너를 강제 종료하더라도 마찬가지입니다.

WAL – high‑write workloads that still need durability

# docker-compose.yml
services:
  floci:
    image: floci/floci:latest
    ports: ["4566:4566"]
    volumes:
      - ./data:/app/data
    environment:
      FLOCI_STORAGE_MODE: wal
      FLOCI_STORAGE_WAL_COMPACTION_INTERVAL_MS: 30000

변경 사항은 먼저 추가 전용 로그에 기록되고, 주기적으로 압축됩니다. 영구 모드의 랜덤 쓰기 비용 없이 내구성을 확보할 수 있습니다.

전역 기본값 및 서비스별 오버라이드

# docker-compose.yml
services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - ./data:/app/data
    environment:
      FLOCI_STORAGE_MODE: memory                          # everything is ephemeral by default
      FLOCI_STORAGE_SERVICES_DYNAMODB_MODE: persistent    # keep DynamoDB on disk
      FLOCI_STORAGE_SERVICES_S3_MODE: hybrid              # keep S3 buckets across restarts

전체적으로 빠른 테스트이지만, 재시작 시에도 시드된 DynamoDB 테이블과 S3 버킷을 유지합니다.

LocalStack (Pro)와 비교

기능LocalStack (Pro)Floci
비용유료 플랜무료, MIT‑licensed
세분화Global on/off네 가지 모드, per‑service overrides
쓰기 전략Snapshots (point‑in‑time)Sync, async, or WAL — your choice
스냅샷 중Service is locked, requests blockNo locking, writes never pause
버전 간 호환Snapshots may break across versionsPlain on‑disk format
구현Python pickle serializationNative, format per service

잠금 부분은 대부분의 사람들이 예상하지 못하는 부분입니다. LocalStack의 스냅샷 메커니즘은 서비스가 저장되는 동안 요청을 차단합니다—종료 시에는 허용될 수 있지만 테스트 중간에 나타나면 놀라울 수 있습니다. Floci는 절대 쓰기를 일시 중지하지 않으며, 내구성은 선택한 저장 모드에서 제공됩니다. 이는 얼려서 덤프하는 방식이 아닙니다.

일반적인 설정

CI

services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    environment:
      FLOCI_STORAGE_MODE: memory

로컬 개발

services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - ./data:/app/data
    environment:
      FLOCI_STORAGE_MODE: hybrid

인증 토큰 없음, 프로 티어 없음, 놀라운 잠금 없음. 영속성은 기본적인 개발자 편의성으로, 기업 전용 기능이 아닙니다.

링크

0 조회
Back to Blog

관련 글

더 보기 »