38 điểm bởi GN⁺ 20 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Trình giả lập mã nguồn mở miễn phí có thể tái hiện hoàn toàn môi trường AWS trên máy cục bộ, được phát triển như một lựa chọn thay thế cho LocalStack đã chuyển sang tính phí
  • Chạy 34 dịch vụ AWS trên một cổng duy nhất, đồng thời thực sự khởi chạy Postgres, Redis và container Docker để cung cấp môi trường kiểm thử ở cấp độ hạ tầng
  • Tương thích hoàn toàn với AWS SDK, CLI, Terraform, CDK, Pulumi và được phát hành theo giấy phép MIT mà không cần đăng ký tài khoản hay telemetry
  • Khởi động trong 2 giây, dùng 30MB bộ nhớ, Docker image 150MB, cho khả năng chạy cục bộ nhẹ và nhanh
  • Mọi tính năng đều được cung cấp miễn phí, cho phép xây dựng một môi trường phát triển AWS cục bộ hoàn chỉnh thay thế các tính năng LocalStack Pro

Tổng quan về MiniStack

  • MiniStackcông cụ mã nguồn mở miễn phí có thể giả lập hoàn toàn môi trường AWS trên máy cục bộ, được thiết kế như một lựa chọn thay thế cho LocalStack đã chuyển sang tính phí
  • Chạy 34 dịch vụ AWS trên một cổng duy nhất và sử dụng Postgres, Redis, container Docker thực tế
  • Hoạt động mà không cần đăng ký tài khoản, khóa giấy phép hay telemetry từ xa, và được phát hành theo giấy phép MIT
  • thời gian khởi động khoảng 2 giây, mức dùng bộ nhớ nhàn rỗi 30MB, kích thước Docker image 150MB
  • Sau khi LocalStack Community chuyển sang mô hình tính phí, MiniStack được đưa ra như một giải pháp thay thế miễn phí mang lại trải nghiệm phát triển tương đương

Tính năng và dịch vụ chính

  • RDS, ElastiCache, ECS vận hành các container Docker thực tế để cung cấp môi trường hạ tầng thực tế
  • Athena thực thi truy vấn SQL thực tế thông qua DuckDB; nếu chưa được cài đặt, nó sẽ trả về kết quả mô phỏng
  • Duy trì khả năng tương thích với AWS SDK, có thể dùng cùng boto3, AWS CLI, Terraform, CDK, Pulumi...
  • Mọi dịch vụ đều miễn phí, không có giới hạn tính năng hay phân chia gói trả phí
  • 34 dịch vụ AWS được bao gồm

    • S3: hỗ trợ bucket, object, quản lý phiên bản, mã hóa, vòng đời, CORS, sao chép...
    • SQS: hỗ trợ các tính năng hàng đợi như FIFO, DLQ, batch, visibility...
    • SNS: hỗ trợ topic, subscription, fanout sang SQS, phát hành theo lô
    • DynamoDB: hỗ trợ CRUD, query, scan, transaction, TTL, GSI
    • Lambda: hỗ trợ thực thi Python thực tế, ánh xạ sự kiện SQS, Layers
    • Bao gồm hầu hết các dịch vụ cốt lõi của AWS như 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 khởi chạy container Postgres/MySQL thực tế, còn ElastiCache khởi chạy container Redis/Memcached thực tế
    • ECS chạy container Docker thực tế, còn GlueAthena cung cấp tính năng data catalog và thực thi SQL

So sánh với LocalStack

  • LocalStack Free đã chuyển các dịch vụ cốt lõi sang mô hình trả phí, trong khi MiniStack cung cấp miễn phí cùng chức năng
  • Các tính năng vốn chỉ có ở LocalStack Pro như Lambda, IAM, SSM, EventBridge, EC2, EMR, EBS, EFS, ALB, CloudFormation cũng được bao gồm miễn phí
  • RDS, ElastiCache, ECS, Athena hoạt động dựa trên container thực tế
  • Với thời gian khởi động khoảng 2 giây, 30MB bộ nhớ, Docker image 150MB, MiniStack nhẹ hơn LocalStack rất nhiều
  • Giấy phépMIT thay vì BSL/Proprietary của LocalStack, và giá là hoàn toàn miễn phí

Cách hoạt động dựa trên hạ tầng thực tế

  • RDS: khi chạy lệnh CreateDBInstance, hệ thống tạo container Docker Postgres/MySQL thực tế, có thể kết nối trực tiếp qua cổng cục bộ
  • ElastiCache: với lệnh CreateCacheCluster, hệ thống chạy container Redis thực tế, có thể dùng làm kho lưu session...
  • ECS: với lệnh RunTask, hệ thống chạy container Docker thực tế, cho phép kiểm thử định nghĩa tác vụ ECS trên máy cục bộ
  • Athena: thực thi truy vấn SQL thực tế qua DuckDB và trả về tập kết quả
  • Tương thích hoàn toàn với mọi công cụ AWS, có thể sử dụng mà không cần thay đổi API endpoint

Triển khai và sử dụng

  • Có thể chạy bằng một dòng lệnh Docker
    docker run -p 4566:4566 nahuelnucera/ministack
    
  • Có thể truy cập mọi dịch vụ như S3, RDS, ElastiCache... thông qua AWS CLI
  • Ví dụ:

Thông tin giấy phép và phát hành

  • Được phát hành theo giấy phép MIT, cho phép fork và nhúng tự do
  • Được cung cấp công khai trên GitHubDocker Hub
  • Nhà phát triển là Nahuel, và dự án dự kiến được duy trì đến năm 2026

Bài học cốt lõi

  • MiniStack là giải pháp thay thế hoàn toàn miễn phí cho LocalStack, cung cấp môi trường AWS cục bộ dựa trên hạ tầng thực tế
  • Điểm nổi bật là khởi động nhanh, tiêu thụ tài nguyên nhẹ, tương thích SDK đầy đủ
  • Mọi tính năng đều miễn phí, giấy phép MIT, không có telemetry
  • Đây là công cụ mang lại trải nghiệm kiểm thử tương đương môi trường production AWS trong phát triển cục bộ và môi trường CI/CD

1 bình luận

 
Ý kiến trên Hacker News
  • Tôi khá hiểu rõ về DynamoDB
    Nhưng đoạn mã này không mô phỏng đúng các ngoại lệ của dịch vụ, kiểm tra đầu vào, eventual consistency, và các trường hợp biên
    Vì vậy, phát triển hay kiểm thử dựa trên ministack khiến tôi không yên tâm
    Hơn nữa, nhiều dịch vụ của AWS có free tier, nên cũng không có quá nhiều lý do để dùng một giải pháp thay thế như vậy

    • Tôi nghĩ thứ quan trọng hơn chi phí là tốc độ lặp phát triển và khả năng chạy nhanh trong môi trường CI
    • Mục tiêu của ministack là dùng cho kiểm thử tích hợp
      Tức là để xác minh ứng dụng có gọi đúng API với đúng dữ liệu hay không
      Nếu cần hành vi thực tế của DynamoDB (ví dụ: giới hạn dung lượng, độ trễ nhất quán, xử lý stream) thì đây không phải là thứ thay thế
      Tuy vậy, các đóng góp giúp tăng khả năng tái hiện lỗi luôn được hoan nghênh
      Hiện đang chờ các lỗi như ProvisionedThroughputExceededException, TransactionConflictException, ItemCollectionSizeLimitExceededException
    • Dù vậy tôi vẫn thấy nó hữu ích
      Có thể dùng ministack cho các bài test cơ bản, rồi chỉ phát sinh chi phí AWS thật ở giai đoạn kiểm thử tải
    • Thực ra LocalStack cũng chưa từng triển khai hoàn hảo
  • Tôi đang cân nhắc ministack vì không hài lòng với thay đổi giấy phép của LocalStack
    Nếu cần gấp thì có thể ghim bằng tag community-archive là xử lý được ngay
    Liên kết Docker Hub

    • Tôi muốn hỏi ý kiến về floci
  • Tôi nghĩ bất kỳ dự án mô phỏng nào cũng sẽ khó vượt qua được lý do khiến LocalStack thất bại
    Duy trì khả năng tương thích miễn phí với rất nhiều dịch vụ AWS có vẻ không khả thi trong thực tế
    Cũng có thể codebase của LocalStack quá hỗn độn, hoặc họ quản lý cộng tác viên không tốt

    • Với câu hỏi “vì sao trước đây không làm được?”, tôi nghĩ người đi sau(second mover) thường vẫn có thể thành công
      Giờ AWS đã trưởng thành hơn nên tốc độ thay đổi chậm lại, và AI có thể dễ dàng tạo ra 80% lượng mã
      Ngoài ra, việc LocalStack tăng giá cũng tạo ra một nhóm lập trình viên đang tìm phương án thay thế mã nguồn mở
      Cũng có rất nhiều thứ để học từ bản mã nguồn mở của LocalStack
    • Chúng tôi không nhắm tới việc thay thế hoàn toàn LocalStack
      Chỉ là muốn giữ cho các dịch vụ cốt lõi của bản community trước đây luôn được cập nhật
      Chúng tôi không định hỗ trợ các dịch vụ lớn như MWAA
      Vì phần lớn các dịch vụ AWS cốt lõi hầu như không thay đổi API
    • Tôi thấy chỉ cần tính tương thích ổn định cho các dịch vụ cốt lõi như SQS, S3, KMS, Dynamo là đã đủ giá trị rồi
      Nếu cần tính năng phức tạp ở local thì có thể dùng tài khoản AWS dev thật
    • Tôi đồng ý rằng codebase của LocalStack từng rất hỗn độn
      Nếu tận dụng tốt LLM và các cách tiếp cận kiểm thử mới, có lẽ có thể tạo ra một bộ dịch vụ tương thích theo kiểu bán tự động
      Nhưng tôi thì không muốn tự mình tham gia
      Tôi cũng đã thử Floci, nhưng nó có những vấn đề điển hình của mã giai đoạn đầu
    • Nếu API được tài liệu hóa tốt và biết tận dụng các công cụ AI coding, thì việc tạo các dịch vụ thay thế chạy local có lẽ không khó như tưởng tượng
  • Vấn đề thật sự của LocalStack là drift
    Test ở local thì qua, nhưng lên staging lại hay vỡ vì khác biệt ở format phản hồi S3 hoặc throttling của DynamoDB
    Cuối cùng chúng tôi chuyển sang chạy kiểm thử tích hợp trong các môi trường AWS thật tồn tại ngắn hạn
    Tốn kém hơn, nhưng giảm được rất nhiều sự cố bất ngờ khi lên production

    • Tôi nghĩ nên dùng LocalStack như một dạng sniff test
      Tức là chỉ khi qua local rồi mới chạy kiểm thử tích hợp trên AWS thật
  • Giờ tôi mới biết tin LocalStack thay đổi giấy phép
    Trước đây tôi dùng nó khá tốt cho kiểm thử CI/CD trên GH Actions, và mức tương thích với AWS CLI cũng khá ổn
    Thực ra tôi từng mong Amazon mua lại LocalStack và biến nó thành môi trường phát triển local chính thức
    Nhưng như vậy có lẽ sẽ làm giảm doanh thu từ môi trường kiểm thử AWS, nên chắc không thực tế

    • Công ty chúng tôi hiện vẫn có giấy phép enterprise, nên trước mắt chưa bị ảnh hưởng
      Chúng tôi vẫn dùng khá hài lòng, nhưng thất vọng với định hướng này
      Mong là đây không phải động thái để kiếm lợi nhuận ngắn hạn
      Về dài hạn, khách hàng hoàn toàn có thể chuyển sang các lựa chọn miễn phí hoặc giải pháp cá nhân dựa trên GenAI
      Cá nhân tôi không quan tâm đến Pods hay UI console của LocalStack
      Hy vọng họ không nhận vốn VC với điều kiện phải xóa bản community edition
    • Cũng có ý kiến cho rằng LocalStack tương thích tốt với AWS CLI, nhưng hành vi dịch vụ thực tế thì thường khác
      CLI có thể chạy tốt, nhưng nhiều lúc dịch vụ của LocalStack lại hoạt động khác với tài liệu mô tả
  • Nhìn README có sơ đồ ASCII do Claude tạo mà còn lệch hàng thì tôi khó mà tin tưởng
    Nếu một dự án còn chưa làm nổi QC cơ bản, thì mô tả tính năng cũng khó tin được
    Liên kết ví dụ

    • Một phản ứng đùa là: “Nhưng anh ấy đang triển khai với tốc độ suy luận mà!”
    • Cảm ơn vì phản hồi chi tiết
      Liên kết CHANGELOG
    • Tôi thấy tiếc khi chỉ ra vấn đề chất lượng quá rõ ràng mà lại bị gắn cờ chứ không có phản biện nào
      Nếu cứ thế này thì mã chất lượng thấp do AI tạo ra sẽ còn tiếp tục gia tăng
    • ASCII với góc bo tròn vốn đã là một dấu hiệu cảnh báo rồi
      Nếu đến cả căn lề cũng không kiểm tra thì lại càng khó tin
    • Ít nhất cũng có thể chạy formatter, hoặc cấu hình cho Claude một hook tự động định dạng, khá đáng tiếc
  • Dù còn hơi sớm để đưa vào SDLC, đây vẫn là một dự án có vẻ đầy hứa hẹn
    Với những ai thất vọng với LocalStack thì nó có thể trở thành một lựa chọn thay thế

  • Trước đây từng có một phương án khác được đăng trên HN
    Liên kết chủ đề liên quan

    • Tôi thích sự minh bạch kiểu “xây toàn bộ bằng AI và lưu lại mọi prompt”
    • Tôi đã lần lượt thử dự án đó (bị từ chối), Floci (không ấn tượng), rồi đến cái này
      Đây mới chỉ là dự án được 7 ngày
      Tôi thực sự rất muốn có một giải pháp thay thế LocalStack, nhưng hiện tại độ trưởng thành vẫn còn thiếu nhiều
      Dạo này phần mềm có vẻ đều như thế này — website bóng bẩy, tuyên bố lớn, mã do AI tạo, kiểm thử thì thiếu
  • Tôi tò mò không biết phía GCP có gì tương đương

    • GCP có hẳn một bộ công cụ mô phỏng riêng
      Tôi không hiểu vì sao Amazon lại không làm thứ như vậy
      Làm thế sẽ tiện hơn cho tất cả mọi người rất nhiều
  • Giá như có tính năng mô phỏng chi phí thực tế