GitHub - hectorvent/floci: Light, fluffy, and always free - AWS Local Emulator
Service

GitHub - hectorvent/floci: Light, fluffy, and always free - AWS Local Emulator

hectorvent
2026.03.23
·GitHub·by 이호민
#AWS#Docker#Emulator#LocalStack#Open Source

핵심 포인트

  • 1Floci는 AWS 서비스를 로컬 환경에서 에뮬레이트하여 개발 및 테스트를 지원하는 무료 오픈소스 도구입니다.
  • 2이 에뮬레이터는 auth token, CI/CD 제한, 보안 업데이트 중단과 같은 LocalStack Community Edition의 제약 없이 빠른 시작 시간과 낮은 메모리 사용량으로 차별화됩니다.
  • 3Floci는 Docker Compose를 통해 쉽게 설정 가능하며, 다양한 AWS SDK와 호환되어 개발자가 AWS 엔드포인트를 로컬로 지정하여 사용할 수 있습니다.

Floci는 hectorvent에서 개발한 무료 오픈소스 로컬 AWS 에뮬레이터입니다. "floccus" 구름의 이름을 따서 명명되었으며, popcorn과 같이 가볍고 fluffy한 경험을 제공하는 것을 목표로 합니다. 이 프로젝트의 주된 동기는 LocalStack Community 에디션이 2026년 3월 이후 인증 토큰 요구, CI/CD 지원 중단, 보안 업데이트 동결 등 정책 변경을 단행하면서, 이에 대한 제약 없는 대안을 제시하고자 함입니다.

핵심 방법론 및 기술적 특징:

Floci는 로컬 환경에서 AWS 서비스를 에뮬레이션하여 개발 및 테스트 워크플로우를 간소화합니다. 핵심 방법론은 다음과 같습니다.

  1. 경량 및 고성능 설계:
    • 시작 시간: 약 24ms로 매우 빠릅니다. 이는 LocalStack Community의 약 3.3초와 비교했을 때 현저히 낮은 수치입니다.
    • 유휴 메모리: 약 13 MiB를 사용하며, LocalStack Community의 약 143 MiB 대비 훨씬 효율적입니다.
    • Docker 이미지 크기: 약 90 MB로, LocalStack Community의 약 1.0 GB에 비해 매우 작습니다.
    • 네이티브 바이너리: 약 40 MB의 네이티브 바이너리를 제공하여 빠른 시작 시간과 낮은 리소스 사용량을 가능하게 합니다. 이는 JVM 기반 애플리케이션을 GraalVM과 같은 기술을 사용하여 네이티브 이미지로 컴파일함으로써 달성되는 성능 최적화로 추정됩니다.
  1. Docker 기반 배포:
    • docker compose up 명령어를 통해 쉽게 배포하고 실행할 수 있도록 설계되었습니다. 이는 개발자가 추가적인 설정 없이 빠르게 AWS 에뮬레이션 환경을 구축할 수 있게 합니다.
  1. AWS SDK 호환성:
    • 기존 AWS SDK(Java, Python, Node.js 등)에서 endpointOverride 또는 endpoint_urlhttp://localhost:4566으로 지정하는 방식으로 seamlessly 통합됩니다. 이는 Floci가 실제 AWS API 엔드포인트의 동작을 모방하여, 코드 변경 없이 로컬에서 AWS 서비스를 테스트할 수 있도록 합니다.
    • 인증 정보(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)는 "test"와 같이 임의의 값을 사용할 수 있도록 하여 설정의 복잡성을 줄였습니다.
  1. 지원 서비스 및 API:
    • Floci는 API Gateway v2 (HTTP API), Cognito, ElastiCache (Redis 및 IAM 인증), RDS (PostgreSQL, MySQL 및 IAM 인증), S3 Object Lock (COMPLIANCE / GOVERNANCE), DynamoDB Streams, IAM (사용자, 역할, 정책, 그룹), STS (7가지 모든 작업), Kinesis (스트림, 샤드, fan-out), KMS (서명, 검증, 재암호화) 등 20개 이상의 AWS 서비스를 에뮬레이션합니다.
    • 총 408개 AWS SDK 테스트 중 408개를 통과했다고 명시하여 높은 호환성을 강조합니다. 일부 서비스는 Partial 또는 ⚠️로 표시되어 부분적인 지원을 시사합니다.
  1. 유연한 구성:
    • 모든 설정은 FLOCI_ prefix를 사용하는 환경 변수를 통해 오버라이드할 수 있습니다. 예를 들어, QUARKUS_HTTP_PORT (기본값 4566), FLOCI_DEFAULT_REGION (기본값 us-east-1), FLOCI_DEFAULT_ACCOUNT_ID (기본값 000000000000) 등이 있습니다.
    • 저장 모드 (Storage Mode): FLOCI_STORAGE_MODE 변수를 통해 hybrid (기본값), memory, persistent, wal 중 하나를 선택하여 데이터 저장 방식을 제어할 수 있습니다.
      • memory: 모든 데이터를 인메모리에 저장하여 빠른 성능을 제공하지만, Floci 인스턴스가 종료되면 데이터가 손실됩니다.
      • persistent: 데이터를 디스크에 저장하여 지속성을 보장합니다.
      • wal (Write-Ahead Log): 트랜잭션의 내구성과 복구 가능성을 높이기 위해 변경 사항을 먼저 로그에 기록하는 방식입니다.
      • hybrid: 메모리 기반 성능과 디스크 기반 지속성을 조합한 방식으로 추정됩니다.
    • 지속성 저장 경로는 FLOCI_STORAGE_PERSISTENT_PATH (기본값 ./data)를 통해 지정할 수 있습니다.
  1. 라이선스: MIT 라이선스를 채택하여 사용자가 자유롭게 사용할 수 있도록 합니다.

Floci는 LocalStack Community의 제약에 대한 강력한 대안으로, 특히 CI/CD 파이프라인 및 로컬 개발 환경에서 AWS 서비스를 효율적으로 에뮬레이션해야 하는 개발자에게 최적화된 솔루션을 제공합니다.