GitHub - hectorvent/floci: Light, fluffy, and always free - AWS Local Emulator
핵심 포인트
- 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 서비스를 에뮬레이션하여 개발 및 테스트 워크플로우를 간소화합니다. 핵심 방법론은 다음과 같습니다.
- 경량 및 고성능 설계:
- 시작 시간: 약 24ms로 매우 빠릅니다. 이는 LocalStack Community의 약 3.3초와 비교했을 때 현저히 낮은 수치입니다.
- 유휴 메모리: 약 13 MiB를 사용하며, LocalStack Community의 약 143 MiB 대비 훨씬 효율적입니다.
- Docker 이미지 크기: 약 90 MB로, LocalStack Community의 약 1.0 GB에 비해 매우 작습니다.
- 네이티브 바이너리: 약 40 MB의 네이티브 바이너리를 제공하여 빠른 시작 시간과 낮은 리소스 사용량을 가능하게 합니다. 이는 JVM 기반 애플리케이션을 GraalVM과 같은 기술을 사용하여 네이티브 이미지로 컴파일함으로써 달성되는 성능 최적화로 추정됩니다.
- Docker 기반 배포:
docker compose up명령어를 통해 쉽게 배포하고 실행할 수 있도록 설계되었습니다. 이는 개발자가 추가적인 설정 없이 빠르게 AWS 에뮬레이션 환경을 구축할 수 있게 합니다.
- AWS SDK 호환성:
- 기존 AWS SDK(Java, Python, Node.js 등)에서
endpointOverride또는endpoint_url을http://localhost:4566으로 지정하는 방식으로 seamlessly 통합됩니다. 이는 Floci가 실제 AWS API 엔드포인트의 동작을 모방하여, 코드 변경 없이 로컬에서 AWS 서비스를 테스트할 수 있도록 합니다. - 인증 정보(
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)는 "test"와 같이 임의의 값을 사용할 수 있도록 하여 설정의 복잡성을 줄였습니다.
- 기존 AWS SDK(Java, Python, Node.js 등)에서
- 지원 서비스 및 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또는⚠️로 표시되어 부분적인 지원을 시사합니다.
- 유연한 구성:
- 모든 설정은
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)를 통해 지정할 수 있습니다.
- 모든 설정은
- 라이선스: MIT 라이선스를 채택하여 사용자가 자유롭게 사용할 수 있도록 합니다.
Floci는 LocalStack Community의 제약에 대한 강력한 대안으로, 특히 CI/CD 파이프라인 및 로컬 개발 환경에서 AWS 서비스를 효율적으로 에뮬레이션해야 하는 개발자에게 최적화된 솔루션을 제공합니다.