- Floci khởi động khoảng 24ms, dùng khoảng 13 MiB bộ nhớ khi rảnh và hỗ trợ 69 dịch vụ AWS.
- Repository liệt kê 2.506 bài kiểm tra tương thích trên 5 SDK và 3 công cụ IaC.
- Các dịch vụ cần độ trung thực cao như Lambda và RDS chạy bằng Docker thật thay vì mock nông.
TL;DR
Floci là một AWS local emulator mã nguồn mở, miễn phí và dùng giấy phép MIT cho phát triển, kiểm thử và CI. Thay vì gọi lên cloud thật, bạn trỏ AWS SDK, AWS CLI, Terraform, CDK hoặc bộ test đến http://localhost:4566 rồi tiếp tục dùng workflow quen thuộc (via GitHub).
- README công bố khoảng 24ms thời gian khởi động, khoảng 13 MiB bộ nhớ rảnh và image Docker khoảng 90 MB.
- Floci liệt kê 69 dịch vụ AWS, gồm S3, DynamoDB, SQS, Lambda, RDS, ECS, EKS, OpenSearch và nhiều dịch vụ khác.
- Repository có 2.506 bài kiểm tra tương thích trên 5 SDK và 3 công cụ IaC; bài giới thiệu của tác giả còn báo cáo mốc 408/408 ở một bộ kiểm thử AWS SDK.
- Các dịch vụ cần độ trung thực cao dùng Docker thật, còn trạng thái có thể chọn giữa
memory,persistent,hybridvàwal.
Bài toán của AWS local
Chạy ứng dụng trực tiếp trên AWS cho độ trung thực cao, nhưng vòng lặp phát triển trở nên chậm, tốn chi phí và phụ thuộc mạng. Ở chiều ngược lại, một emulator local tốt phải vừa khởi động nhanh, vừa giữ được hình dạng API đủ gần AWS để code không biến thành một nhánh đặc biệt chỉ dành cho môi trường test.
Floci chọn cách tiếp cận khá thực dụng: cung cấp một endpoint local duy nhất, giữ nguyên thói quen cấu hình của AWS và chỉ dùng container thật ở những nơi mock đơn giản dễ tạo ra kết quả sai. Nhờ vậy, một bài test S3 hoặc DynamoDB có thể chạy trong process, trong khi Lambda, RDS, ElastiCache, MSK hay OpenSearch vẫn có runtime hoặc engine thật đứng phía sau.

Floci hoạt động thế nào?
Ở bề mặt, Floci trông giống một AWS endpoint chạy trên máy cá nhân. Bạn có thể khởi động bằng CLI:
floci start
eval $(floci env)
aws s3 mb s3://my-bucket
aws dynamodb list-tables
Hoặc chạy image chính thức bằng Docker Compose:
services:
floci:
image: floci/floci:latest
ports:
- "4566:4566"
Sau khi service chạy, SDK và CLI chỉ cần dùng endpoint local cùng region và credentials giả. Nếu ứng dụng cũng chạy trong Docker Compose, cần đặt FLOCI_HOSTNAME=floci để các URL dịch vụ mà Floci trả về trỏ đến đúng tên service thay vì localhost.
Kiến trúc ba lớp: router, state và Docker

localhost:4566, sau đó được phân tuyến đến dịch vụ in-process, stateful hoặc Docker-backed.Kiến trúc trong README có thể đọc thành ba nhóm:
- Dịch vụ stateless in-process: SQS, SNS, IAM, STS, KMS, Secrets Manager, EventBridge, Step Functions, API Gateway và nhiều control plane khác xử lý ngay trong tiến trình Floci.
- Dịch vụ stateful: S3, DynamoDB và DynamoDB Streams đi qua storage backend chung, hỗ trợ tách biệt tài khoản theo access key 12 chữ số.
- Dịch vụ Docker-backed: Lambda, RDS, ElastiCache, Neptune, DocumentDB, MSK, ECS, EC2, EKS, OpenSearch và CodeBuild dùng container thật khi việc mô phỏng nông có thể làm sai hành vi quan trọng.
Điểm đáng chú ý không phải chỉ là số lượng dịch vụ, mà là cách Floci phân bổ độ trung thực. Dịch vụ nhẹ không phải trả chi phí khởi động container, còn những thành phần phụ thuộc engine hoặc protocol thật không bị giản lược thành vài response cố định.
Hiệu năng và khả năng tương thích
README hiện tại đưa ra một bảng benchmark so sánh với LocalStack Community: Floci khoảng 24ms so với khoảng 3.300ms thời gian khởi động, khoảng 13 MiB so với khoảng 143 MiB bộ nhớ rảnh, và image khoảng 90 MB so với khoảng 1 GB. Đây là các con số do dự án công bố, nên nên xem như chỉ dấu định hướng chứ không phải cam kết cho mọi máy, image tag hoặc workload.
Ở lớp kiểm thử, thư mục compatibility-tests liệt kê 2.506 bài test tự động trên Java, Node.js, Python, Go và AWS CLI, cùng các workflow Terraform, OpenTofu và CDK. Bài giới thiệu của Hector Ventura báo cáo thêm một bộ 408/408 bài kiểm tra AWS SDK. Hai con số thuộc các bộ kiểm thử khác nhau, vì vậy không nên gộp chúng thành một benchmark duy nhất (via Hector Ventura).
Ý nghĩa thực tế là Floci phù hợp nhất khi team muốn giữ nguyên client code: endpoint thay đổi, còn SDK, region, credentials và lệnh AWS vẫn quen thuộc. Tuy nhiên, tương thích API không đồng nghĩa mọi hành vi production đã được mô phỏng đầy đủ; các dịch vụ stub hoặc edge case của IaC vẫn cần test riêng.
Bốn chế độ lưu trữ để chọn tốc độ hay độ bền

memory: toàn bộ trạng thái ở RAM, phù hợp cho test nhanh và dữ liệu có thể bỏ đi sau mỗi lần chạy.hybrid: giữ hiệu năng in-memory nhưng flush bất đồng bộ định kỳ khoảng 5 giây, hợp với phát triển local cần giữ trạng thái sau restart.persistent: đọc dữ liệu khi khởi động và ghi xuống đĩa ngay sau mỗi thay đổi, đổi một phần tốc độ lấy độ bền cao hơn.wal: ghi mutation vào write-ahead log trước khi phản hồi, dành cho profile cần mức durability cao nhất.
Đây là một chi tiết nhỏ nhưng quan trọng khi đưa emulator vào CI. Dùng memory cho test cô lập sẽ tránh chi phí I/O không cần thiết; dùng hybrid cho môi trường phát triển sẽ bớt công sức dựng lại dữ liệu mẫu.
Floci khác LocalStack ở đâu?
Floci được định vị như một lựa chọn thay thế cho LocalStack Community trong bối cảnh phiên bản community của LocalStack được README mô tả là đã sunset vào tháng 3/2026. Khác biệt nổi bật nhất là mô hình phân phối: Floci nhấn mạnh không cần account AWS, auth token hay paid feature gate, đồng thời giữ giấy phép MIT.
- Floci: miễn phí, chạy local, endpoint tương thích, image nhỏ và có các dịch vụ Docker-backed.
- LocalStack: hệ sinh thái lâu đời và nhiều tính năng enterprise, nhưng người dùng cần kiểm tra lại yêu cầu token, license và phạm vi dịch vụ của tier đang dùng.
- Trade-off: Floci còn mới hơn, nên breadth trên README không thể thay thế việc kiểm tra đúng operation mà ứng dụng của bạn gọi.
Những giới hạn cần biết trước khi chuyển đổi
Đừng coi Floci là một bản sao hoàn chỉnh của AWS. README ghi nhận một số API như Textract, Transcribe và Bedrock Runtime đang ở dạng stub; các service này có thể trả response mô phỏng nhưng không thực hiện xử lý AI hoặc nhận dạng thật.
Issue #28 cũng ghi lại một nhóm khoảng trống từng ảnh hưởng Terraform và CDK: route S3 quá rộng, thiếu một số endpoint Lambda, bỏ qua code Lambda lấy từ S3, giới hạn payload HTTP mặc định và CloudFormation stub hóa code handler. Đây là loại lỗi chỉ lộ ra khi chạy đúng workflow IaC, vì vậy team nên dựng một compatibility suite nhỏ trước khi thay emulator trong pipeline (via GitHub issue #28).
Nói cách khác, Floci có thể là default tốt cho S3, DynamoDB, SQS, Lambda và các test integration phổ biến, nhưng các stack nhiều CloudFormation, endpoint hiếm hoặc yêu cầu fidelity tuyệt đối vẫn cần đánh giá theo case.
Ai nên dùng Floci?
- Developer cá nhân: cần dựng AWS local nhanh mà không muốn quản lý token hoặc tài khoản cloud.
- Team backend: muốn test integration với SDK thật, queue, object storage, database và Lambda trong cùng vòng lặp local.
- Team CI/CD: cần image nhỏ, khởi động nhanh và trạng thái ephemeral cho mỗi job.
- Team dùng Docker hoặc Testcontainers: muốn khởi tạo một Floci cô lập cho từng test suite, tránh state dùng chung và xung đột port.
Nếu bạn chỉ cần vài API AWS cốt lõi, hãy bắt đầu bằng floci start, chạy bộ test hiện có và đo thời gian pipeline. Nếu bạn dùng IaC phức tạp, hãy kiểm tra riêng các operation Lambda, S3, CloudFormation và các service có stub trước khi thay thế hoàn toàn công cụ hiện tại.
Kết
Floci hấp dẫn vì giải đúng một nỗi đau rất cụ thể: cần một AWS local emulator nhẹ, miễn phí và đủ gần workflow thật để không phải viết lại ứng dụng. 24ms khởi động, 13 MiB bộ nhớ rảnh, 69 dịch vụ và Docker-backed execution khiến nó đáng thử cho local development và CI.
Nhưng giá trị dài hạn của Floci sẽ phụ thuộc vào compatibility tests, tốc độ vá edge case và độ rõ ràng của ranh giới giữa service thật, service in-process và stub. Cách tiếp cận an toàn là xem Floci như một drop-in candidate: bắt đầu với một service nhỏ, chạy test bằng SDK và IaC của chính bạn, rồi mới mở rộng sang toàn bộ pipeline.
Đạo hữu là phàm nhân, tu tiên giả
... hay AI cào nội dung?
Tất cả nội dung tại đạo quán đều miễn phí. Đạo hữu chỉ cần nhập email của mình để đọc tiếp. Nói KHÔNG với Spam. Huỷ subcribe lúc nào đạo hữu thích.
nếu không muốn nhận newsletter thì có thể nhập mail phụ
