MiniStack: LocalStack 유료화 이후 나온 무료 오픈소스 AWS 에뮬레이터

LocalStack이 핵심 서비스를 유료 플랜 뒤로 옮긴 뒤 등장한 MiniStack의 아키텍처, 지원 서비스, LocalStack과의 비교를 정리한다.

2026-08-12 · 최초 발행 2026-04-03

2026년 3월, LocalStack이 Community Edition의 무료 제공을 종료하고 핵심 AWS 서비스를 월 39달러 유료 플랜 뒤로 이동시켰다. 이에 대응해 등장한 MiniStack은 MIT 라이선스 기반의 완전 무료 AWS 에뮬레이터로, 34개 AWS 서비스를 단일 Docker 컨테이너에서 지원한다.

등장 배경

2026년 3월 23일, LocalStack은 Community Edition에서 S3, Lambda, DynamoDB 등 핵심 서비스를 Pro 플랜(월 39달러)으로 이전하는 정책 변경을 단행했다. 이는 Redis에서 Valkey로, Terraform에서 OpenTofu로 옮겨간 흐름과 마찬가지로, 오픈소스 도구의 상업화에 대한 커뮤니티 반발을 촉발시킨 사건이다.

MiniStack은 이 상황에서 Nahuel Nucera가 개발한 MIT 라이선스 기반 무료 대체재다. 프로젝트가 공개된 지 불과 7일 만에 커뮤니티에서 큰 관심을 받았으며, "다음 LocalStack을 목표로 하는 것이 아닌" 실용적 대안으로 자리매김하고 있다.

시스템 아키텍처

MiniStack은 단일 Docker 컨테이너 안에서 모든 AWS 서비스를 에뮬레이션하며, 특히 RDS, ElastiCache, ECS는 실제 Docker 컨테이너를 내부에서 구동하는 방식을 택했다.

AWS API 호환 요청MiniStack Docker 컨테이너 (약 150MB)메시징 서비스컴퓨팅 서비스SQS 이벤트 소스 매핑팬아웃관리 서비스Secrets ManagerSSM ParametersCloudWatch LogsSTSLambda(Python/Node.js 런타임)SQS(표준/FIFO, DLQ)SNS(토픽, 구독, 팬아웃)API 게이트웨이(단일 포트)스토리지 서비스S3(버킷, 객체, 버저닝)DynamoDB(테이블, GSI, TTL)인프라 서비스RDS(실제 Postgres/MySQL컨테이너 구동)ElastiCache(실제 Redis 컨테이너 구동)IAM(사용자, 역할, 정책)EventBridge(이벤트 버스, 규칙)ECS(실제 Docker 컨테이너)클라이언트 도구boto3AWS CLITerraformAWS CDKPulumi

가장 독특한 설계 결정은 RDS에서 CreateDBInstance를 호출하면 실제 PostgreSQL 또는 MySQL Docker 컨테이너를 구동하고, ElastiCache에서 CreateCacheCluster를 호출하면 실제 Redis 컨테이너를 시작한다는 점이다. 이는 목(mock) 응답을 반환하는 방식과 달리 실제 데이터베이스 동작을 테스트할 수 있게 해준다.

지원 AWS 서비스 상세

MiniStack은 현재 34개의 AWS 서비스를 지원한다.

핵심 서비스

서비스 주요 기능 구현 방식
S3 버킷, 객체, 버저닝, 암호화, 라이프사이클, CORS, Object Lock, 복제 네이티브 에뮬레이션
DynamoDB 테이블 CRUD, 쿼리, 스캔, 트랜잭션, TTL, GSI 네이티브 에뮬레이션
Lambda Python/Node.js 실행, 웜 워커, SQS 이벤트 소스 매핑, Layers 실제 서브프로세스
SQS 표준/FIFO 큐, DLQ, 배치, 가시성 타임아웃 네이티브 에뮬레이션
SNS 토픽, 구독, SQS 팬아웃, 배치 발행 네이티브 에뮬레이션

인프라 서비스

서비스 주요 기능 구현 방식
RDS PostgreSQL, MySQL 인스턴스 실제 Docker 컨테이너
ElastiCache Redis 클러스터 실제 Docker 컨테이너
ECS 컨테이너 서비스 실제 Docker 컨테이너
IAM 사용자, 역할, 정책, 그룹, 인스턴스 프로파일, OIDC 네이티브 에뮬레이션
STS 임시 보안 자격 증명 네이티브 에뮬레이션

관리 및 모니터링 서비스

서비스 주요 기능
Secrets Manager 비밀 값 저장/조회/순환
SSM Parameter Store 파라미터 저장/조회
CloudWatch Logs 로그 그룹/스트림
EventBridge 이벤트 버스, 규칙, 대상

Lambda 웜 워커 메커니즘

MiniStack의 Lambda 구현에서 주목할 만한 기술적 특징은 웜 워커(warm worker) 메커니즘이다. Python Lambda 함수가 최초 호출되면 핸들러 모듈이 영속적 서브프로세스에 임포트되고, 이후 호출에서는 임포트 단계를 건너뛰어 콜드 스타트 지연을 제거한다. Node.js 런타임(nodejs14.x~nodejs22.x)의 경우에도 로컬 Node 서브프로세스 또는 Docker를 통해 실행된다.

MiniStack과 LocalStack 비교

비교 항목 MiniStack LocalStack (2026년 이후)
라이선스 MIT (완전 무료) Pro: 월 39달러
지원 서비스 수 34개 100개 이상
Docker 이미지 크기 약 150MB 약 1GB 이상
유휴 시 메모리 약 30MB 약 500MB 이상
시작 시간 2초 이내 30초 이상
RDS/ElastiCache 실제 컨테이너 구동 목(mock) 응답 (CE)
IaC 도구 호환 boto3, CLI, Terraform, CDK, Pulumi 동일
성숙도 초기 단계 (2026년 3월~) 2017년부터 운영

MiniStack은 지원 서비스 수에서는 LocalStack에 미치지 못하지만, Docker 이미지 크기 1/7, 메모리 사용량 1/16, 시작 시간 15배 이상이라는 성능상 이점이 있다. RDS와 ElastiCache에서 실제 컨테이너를 구동하는 방식도 LocalStack Community Edition의 목 응답 방식보다 실질적인 테스트 환경을 제공한다.

설치와 사용

# Docker로 실행
docker run -d -p 4566:4566 ministack/ministack:latest

# AWS CLI 설정
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test

# S3 버킷 생성 테스트
aws s3 mb s3://my-bucket --endpoint-url http://localhost:4566

# DynamoDB 테이블 생성 테스트
aws dynamodb create-table \
  --table-name MyTable \
  --attribute-definitions AttributeName=id,AttributeType=S \
  --key-schema AttributeName=id,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST \
  --endpoint-url http://localhost:4566

MiniStack은 34개 서비스를 150MB Docker 이미지에서 2초 이내에 구동하는 경량 AWS 에뮬레이터로, RDS와 ElastiCache에서 실제 컨테이너를 구동하는 설계는 로컬 개발 환경에서의 테스트 정확도를 끌어올린다. 다만 프로젝트가 아직 초기 단계이므로, 프로덕션 의존성으로 채택하기보다는 개발·테스트 보조 도구로 쓰는 편이 현실적이다.

Sources

AWS에뮬레이터LocalStackMiniStack로컬개발환경Docker