MiniStack — โปรแกรมจำลอง AWS แบบโลคัลฟรีโอเพนซอร์ส
(ministack.org)- เป็น โปรแกรมจำลองโอเพนซอร์สฟรี ที่สามารถจำลองสภาพแวดล้อม AWS ได้อย่างสมบูรณ์บนเครื่องโลคัล และถูกพัฒนาขึ้นมาเพื่อเป็นทางเลือกแทน LocalStack ที่เปลี่ยนไปเป็นแบบมีค่าใช้จ่าย
- รัน 34 บริการของ AWS ผ่านพอร์ตเดียว และ เปิดใช้งาน Postgres, Redis และ Docker container จริง เพื่อมอบสภาพแวดล้อมทดสอบระดับโครงสร้างพื้นฐาน
- เข้ากันได้อย่างสมบูรณ์กับ AWS SDK, CLI, Terraform, CDK, Pulumi ฯลฯ และเผยแพร่ภายใต้ สัญญาอนุญาต MIT โดยไม่ต้องสมัครบัญชีหรือมี telemetry
- ทำงานบนเครื่องโลคัลได้เบาและรวดเร็วด้วย เวลาเริ่มต้น 2 วินาที, ใช้หน่วยความจำ 30MB และ Docker image ขนาด 150MB
- ทุกความสามารถเปิดให้ใช้ฟรีทั้งหมด ทำให้สามารถสร้าง สภาพแวดล้อมพัฒนา AWS แบบโลคัลที่สมบูรณ์เพื่อทดแทนฟีเจอร์ของ LocalStack Pro ได้
ภาพรวมของ MiniStack
- MiniStack เป็น เครื่องมือโอเพนซอร์สฟรี ที่สามารถจำลองสภาพแวดล้อม AWS ได้อย่างสมบูรณ์บนเครื่องโลคัล และออกแบบมาเพื่อใช้แทน LocalStack ที่เปลี่ยนไปเป็นแบบมีค่าใช้จ่าย
- รัน 34 บริการของ AWS ผ่านพอร์ตเดียว และใช้ Postgres, Redis และ Docker container จริง
- ทำงานได้โดยไม่ต้องสมัครบัญชี, ไม่มี license key, ไม่มี remote telemetry และเผยแพร่ภายใต้ สัญญาอนุญาต MIT
- มี เวลาเริ่มต้นราว 2 วินาที, การใช้หน่วยความจำขณะ idle 30MB และ Docker image ขนาด 150MB
- หลังจากที่ LocalStack Community เวอร์ชันถูกทำให้มีค่าใช้จ่าย จึงถูกเสนอให้เป็น โซลูชันทดแทนที่มอบประสบการณ์พัฒนาแบบเดียวกันได้ฟรี
ฟีเจอร์และบริการหลัก
- RDS, ElastiCache, ECS เป็นต้น ทำงานโดยเปิด Docker container จริง เพื่อมอบ สภาพแวดล้อมโครงสร้างพื้นฐานจริง
- Athena รัน SQL query จริงผ่าน DuckDB และหากยังไม่ได้ติดตั้งจะส่งคืนผลลัพธ์จำลอง
- คงความเข้ากันได้กับ AWS SDK จึงใช้งานร่วมกับ boto3, AWS CLI, Terraform, CDK, Pulumi ฯลฯ ได้
- ทุกบริการใช้งานได้ฟรี โดยไม่มีการจำกัดฟีเจอร์หรือแบ่งแผนแบบเสียเงิน
-
34 บริการ AWS ที่รวมมา
- S3: รองรับ bucket, object, versioning, encryption, lifecycle, CORS, replication เป็นต้น
- SQS: รองรับความสามารถของคิว เช่น FIFO, DLQ, batch, visibility เป็นต้น
- SNS: รองรับ topic, subscription, SQS fanout, batch publish
- DynamoDB: รองรับ CRUD, query, scan, transaction, TTL, GSI
- Lambda: รองรับการรัน Python จริง, SQS event mapping, Layers
- รวมบริการหลักของ AWS ส่วนใหญ่ เช่น IAM / STS / Secrets Manager / CloudWatch / SSM / EventBridge / Kinesis / SES / Step Functions / API Gateway v1·v2 / Route53 / Cognito / EC2 / EMR / EBS / EFS / ALB / ACM / WAF / CloudFormation
- RDS เปิดใช้งาน container ของ Postgres/MySQL จริง และ ElastiCache เปิดใช้งาน container ของ Redis/Memcached จริง
- ECS รัน Docker container จริง ส่วน Glue และ Athena มีความสามารถด้าน data catalog และการรัน SQL
เปรียบเทียบกับ LocalStack
- LocalStack Free มีบริการหลักหลายส่วนที่กลายเป็นแบบเสียเงิน แต่ MiniStack ให้ความสามารถเดียวกันได้ฟรี
- ฟีเจอร์ที่เป็นของ LocalStack Pro โดยเฉพาะ เช่น Lambda, IAM, SSM, EventBridge, EC2, EMR, EBS, EFS, ALB, CloudFormation ก็รวมมาให้ใช้ฟรีเช่นกัน
- RDS, ElastiCache, ECS, Athena เป็นต้น ทำงานบนพื้นฐานของ container จริง
- ด้วย เวลาเริ่มต้นราว 2 วินาที, ใช้หน่วยความจำ 30MB และ Docker image 150MB จึงเบากว่า LocalStack มาก
- สัญญาอนุญาต ใช้ MIT ต่างจาก BSL/Proprietary ของ LocalStack และ ใช้งานฟรีทั้งหมด
การทำงานบนพื้นฐานโครงสร้างจริง
- RDS: เมื่อสั่ง
CreateDBInstanceจะสร้าง Docker container ของ Postgres/MySQL จริง และเชื่อมต่อได้โดยตรงผ่านพอร์ตบนเครื่องโลคัล - ElastiCache: ใช้คำสั่ง
CreateCacheClusterเพื่อรัน Redis container จริง และนำไปใช้เป็นที่เก็บ session เป็นต้น ได้ - ECS: ใช้คำสั่ง
RunTaskเพื่อรัน Docker container จริง และทดสอบ ECS task definition ได้บนเครื่องโลคัล - Athena: รัน SQL query จริงผ่าน DuckDB และส่งคืน result set
- เข้ากันได้อย่างสมบูรณ์กับเครื่องมือ AWS ทั้งหมด และใช้งานได้โดยไม่ต้องเปลี่ยน API endpoint
การติดตั้งและการใช้งาน
- สามารถรันได้ด้วยคำสั่ง Docker เพียงบรรทัดเดียว
docker run -p 4566:4566 nahuelnucera/ministack - สามารถเข้าถึงทุกบริการ เช่น S3, RDS, ElastiCache ผ่าน AWS CLI ได้
- ตัวอย่าง:
aws --endpoint-url=http://localhost:4566 s3 mb s3://my-bucketaws --endpoint-url=http://localhost:4566 rds create-db-instance --engine postgresaws --endpoint-url=http://localhost:4566 elasticache create-cache-cluster --engine redis
ข้อมูลสัญญาอนุญาตและการเผยแพร่
- เผยแพร่ภายใต้ สัญญาอนุญาต MIT จึงสามารถ fork หรือนำไปฝังรวมได้อย่างอิสระ
- เปิดเผยสาธารณะบน GitHub และ Docker Hub
- ผู้พัฒนาคือ Nahuel และมีแผนดูแลโครงการไปจนถึงปี 2026
ข้อสรุปสำคัญ
- MiniStack เป็น ทางเลือกแทน LocalStack แบบฟรีเต็มรูปแบบ ที่มอบ สภาพแวดล้อม AWS แบบโลคัลบนพื้นฐานโครงสร้างจริง
- มีจุดเด่นคือ เริ่มต้นได้รวดเร็ว, ใช้ทรัพยากรน้อย และ เข้ากันได้กับ SDK อย่างสมบูรณ์
- ทุกฟีเจอร์ฟรี, สัญญาอนุญาต MIT, ไม่มี telemetry
- เป็นเครื่องมือที่มอบ ประสบการณ์ทดสอบแบบเดียวกับสภาพแวดล้อม AWS production สำหรับการพัฒนาแบบโลคัลและสภาพแวดล้อม CI/CD
1 ความคิดเห็น
ความเห็นจาก Hacker News
ฉันค่อนข้างรู้จัก DynamoDB ดี
แต่โค้ดนี้ยังจำลอง service exception, การตรวจสอบ input, eventual consistency และ edge case ต่าง ๆ ได้ไม่ดีพอ
ดังนั้นการพัฒนาหรือทดสอบโดยอิงกับ ministack เลยยังรู้สึกไม่มั่นใจ
อีกอย่าง AWS หลายบริการก็มี free tier อยู่แล้ว จึงไม่ได้มีเหตุผลมากนักที่จะต้องใช้ของทดแทนแบบนี้
กล่าวคือใช้เพื่อตรวจสอบว่าแอปพลิเคชันเรียก API ที่ถูกต้องพร้อมข้อมูลที่ถูกต้องหรือไม่
ถ้าต้องการพฤติกรรมจริงของ DynamoDB (เช่น การจำกัด capacity, ความหน่วงของ consistency, การประมวลผล stream) มันไม่ใช่ตัวแทนของสิ่งนั้น
แต่เรายินดีรับ contribution ที่ช่วยให้ทำซ้ำข้อผิดพลาดได้ดีขึ้นเสมอ
ตอนนี้
ProvisionedThroughputExceededException,TransactionConflictException,ItemCollectionSizeLimitExceededExceptionเป็นต้น กำลังรออยู่ทำการทดสอบพื้นฐานด้วย ministack แล้วค่อยให้เกิดค่าใช้จ่ายบน AWS จริงเฉพาะในขั้นตอน load test ก็พอ
ฉันกำลังดู ministack อยู่ เพราะไม่พอใจกับ การเปลี่ยนไลเซนส์ ของ LocalStack
ถ้าใครรีบ ก็แค่ปักเวอร์ชันด้วยแท็ก
community-archiveก็แก้ได้ทันทีลิงก์ Docker Hub
ฉันมองว่าโปรเจกต์ clone ไหน ๆ ก็คงแก้ปัญหาที่ทำให้ LocalStack ล้มเหลวได้ยาก
การรักษาความเข้ากันได้ฟรีกับบริการ AWS จำนวนมหาศาลนั้นดูแทบเป็นไปไม่ได้ในทางปฏิบัติ
อาจเป็นไปได้ว่า LocalStack มี codebase ที่เละ หรือจัดการผู้ร่วมพัฒนาได้ไม่ดี
ตอนนี้ AWS โตเต็มที่แล้วและความเร็วในการเปลี่ยนแปลงช้าลง อีกทั้ง AI ก็สร้างโค้ดได้ถึงระดับ 80% อย่างง่ายดาย
และการขึ้นราคาของ LocalStack ก็ทำให้เกิดกลุ่มนักพัฒนาที่กำลังมองหาทางเลือกโอเพ่นซอร์ส
ยังมีสิ่งให้เรียนรู้ได้มากจากเวอร์ชันโอเพ่นซอร์สของ LocalStack
แค่อยากคง บริการหลักของ community version เดิม ให้ทันสมัยเท่านั้น
เราไม่ได้วางแผนจะรองรับบริการใหญ่ ๆ อย่าง MWAA
เพราะบริการ AWS หลักส่วนใหญ่แทบไม่มีการเปลี่ยนแปลง API มากนัก
ถ้าต้องการฟีเจอร์ซับซ้อนบนเครื่องโลคัล ก็ใช้บัญชี AWS สำหรับพัฒนาจริงไปเลย
ถ้าใช้ LLM และแนวทางการทดสอบแบบใหม่ให้ดี น่าจะสามารถสร้างชุดบริการที่เข้ากันได้แบบกึ่งอัตโนมัติได้
แต่ฉันไม่ได้อยากลงมือมีส่วนร่วมเอง
Floci ก็เคยลองแล้ว แต่มี ปัญหาแบบโค้ดช่วงเริ่มต้น อยู่
ปัญหาที่แท้จริงของ LocalStack คือ drift
เทสต์บนเครื่องโลคัลผ่าน แต่พอขึ้น staging กลับพังเพราะความต่างของ format การตอบกลับของ S3 หรือ throttling ของ DynamoDB บ่อยมาก
สุดท้ายเราเลยเปลี่ยนไปใช้ integration test บนสภาพแวดล้อม AWS จริงที่มีอายุสั้น
ถึงจะแพงกว่า แต่ปัญหา ที่คาดไม่ถึง ใน production ลดลงเยอะมาก
คือถ้าผ่านบนเครื่องโลคัล ค่อยไปรัน integration test บน AWS จริงอีกที
เพิ่งมารู้ข่าวเรื่อง การเปลี่ยนไลเซนส์ ของ LocalStack ตอนนี้เอง
เมื่อก่อนใช้มันกับการทดสอบ CI/CD บน GH Actions ได้ดี และความเข้ากันได้กับ AWS CLI ก็ค่อนข้างดี
จริง ๆ เคยหวังว่า Amazon จะซื้อ LocalStack แล้วทำเป็นสภาพแวดล้อมพัฒนาแบบโลคัลอย่างเป็นทางการ
แต่ก็คงไม่สมจริงนัก เพราะแบบนั้นจะไปลดรายได้จากสภาพแวดล้อมทดสอบของ AWS
เรายังใช้งานอย่างพอใจอยู่ แต่ก็ผิดหวังกับทิศทางนี้
หวังว่านี่จะไม่ใช่มาตรการเพื่อดึงรายได้ระยะสั้น
ในระยะยาวมีโอกาสสูงที่ลูกค้าจะไหลไปหาทางเลือกฟรีหรือ โซลูชันส่วนบุคคลที่อิง GenAI
ส่วนตัวฉันไม่ได้สนใจ Pods หรือ console UI ของ LocalStack
หวังว่าพวกเขาคงไม่ได้รับเงินลงทุน VC โดยมีเงื่อนไขให้ยกเลิก community edition
CLI อาจทำงานได้ดี แต่บริการของ LocalStack มัก ทำงานไม่ตรงกับเอกสาร
พอเห็น README ที่มี ไดอะแกรม ASCII เบี้ยวซึ่ง Claude ทำขึ้นมาแล้วก็รู้สึกเชื่อถือไม่ได้
ถ้าเป็นโปรเจกต์ที่แม้แต่ QC ขั้นพื้นฐานยังไม่ผ่าน ก็คงเชื่อคำอธิบายฟีเจอร์ได้ยาก
ลิงก์ตัวอย่าง
ลิงก์ CHANGELOG
ถ้าเป็นแบบนี้ต่อไป โค้ดคุณภาพต่ำที่สร้างโดย AI ก็คงเพิ่มขึ้นเรื่อย ๆ
ถ้าไม่แม้แต่จะเช็กการจัดแนว ก็ยิ่งน่าเชื่อถือน้อยลงไปอีก
ยังเร็วเกินไปที่จะเอาเข้า SDLC แต่ก็ดูเป็น โปรเจกต์ที่มีอนาคต
ในฐานะคนที่ผิดหวังกับ LocalStack ฉันคิดว่านี่อาจกลายเป็นทางเลือกได้
มีอีกทางเลือกหนึ่งที่เคยขึ้น HN มาก่อน
ลิงก์เธรดที่เกี่ยวข้อง
นี่ยังเป็นโปรเจกต์ที่เพิ่งมีอายุแค่ 7 วัน
ฉันอยากได้ตัวแทน LocalStack มาก แต่ตอนนี้ยังขาด ความพร้อมใช้งานจริง อีกมาก
ซอฟต์แวร์สมัยนี้เหมือนจะเป็นแบบนี้กันหมด — เว็บไซต์สวย คำกล่าวอ้างใหญ่โต โค้ดจาก AI และการทดสอบที่ไม่พอ
อยากรู้ว่าฝั่ง GCP มีอะไรที่เทียบได้บ้าง
ไม่เข้าใจว่าทำไม Amazon ถึงไม่ทำแบบนี้
มันน่าจะทำให้ทุกฝ่ายสะดวกกว่านี้มาก
อยากให้มีฟังก์ชัน ตัวจำลองต้นทุนจริง ด้วย