- Floci คือ AWS local emulator แบบโอเพนซอร์สฟรี ที่รันได้ทันทีโดยไม่ต้องสมัครบัญชีหรือตรวจสอบสิทธิ์ และมีโครงสร้างแบบน้ำหนักเบาที่เริ่มทำงานได้ด้วยคำสั่งเดียว
- เป็น ทางเลือกแบบไม่มีข้อจำกัด เพื่อเตรียมรับช่วงหลังจาก LocalStack Community Edition จะยุติบริการในปี 2026 โดยเปิดให้ใช้งานเชิงพาณิชย์ได้ด้วย สัญญาอนุญาต MIT
- เบามากด้วย เวลาเริ่มต้น 24ms, หน่วยความจำ 13MiB, และ ขนาดอิมเมจ 90MB พร้อมความเร็ว มากกว่า LocalStack 100 เท่า และใช้หน่วยความจำ น้อยกว่า 10 เท่า
- รองรับ บริการ AWS มากกว่า 20 รายการ อย่างสมบูรณ์ และมีความเข้ากันได้สูงด้วยการ ผ่านการทดสอบ SDK 408 รายการครบทั้งหมด
- สามารถผสานรวมได้ทันทีเพียง เปลี่ยน endpoint ของ AWS SDK เดิม ทำให้เป็น โซลูชันทดแทนที่พร้อมใช้ทันที สำหรับสภาพแวดล้อมการพัฒนาและทดสอบแบบโลคัล
ภาพรวมของ Floci
- Floci คือ AWS local emulator แบบโอเพนซอร์สฟรี ที่ออกแบบมาให้รันได้ทันทีโดยไม่ต้องสมัครบัญชีหรือต้องใช้โทเคนยืนยันตัวตน
- ทำงานได้ด้วยคำสั่ง
docker compose up เพียงคำสั่งเดียว และ ไม่มีข้อจำกัดด้าน CI/CD หรือการล็อกฟีเจอร์
- ชื่อนี้มาจาก cirrocumulus floccus ซึ่งเป็นรูปแบบของเมฆ และสื่อแนวคิดว่า “เบา นุ่มนวล และฟรีเสมอ”
บทบาทในฐานะทางเลือกของ LocalStack
- LocalStack Community Edition มีกำหนด ยุติบริการในเดือนมีนาคม 2026 และหลังจากนั้นจะมีการบังคับใช้โทเคนยืนยันตัวตน, ยุติการรองรับ CI และหยุดอัปเดตความปลอดภัย
- Floci ถูกนำเสนอเป็น ทางเลือกแบบไม่มีข้อจำกัด สำหรับกรณีนี้
- เผยแพร่ภายใต้ สัญญาอนุญาต MIT จึงสามารถนำไปใช้งานได้อย่างอิสระ รวมถึงการใช้งานเชิงพาณิชย์
เปรียบเทียบประสิทธิภาพและฟังก์ชัน
- มีขนาดเบามากด้วย เวลาเริ่มต้นราว 24ms, หน่วยความจำขณะ idle 13MiB, และ ขนาด Docker image 90MB
- เมื่อเทียบกับ LocalStack Community Edition มี ความเร็วในการเริ่มต้นมากกว่าประมาณ 100 เท่า และ ใช้หน่วยความจำน้อยกว่ามากกว่า 10 เท่า
- รองรับ บริการ AWS มากกว่า 20 รายการ และ ผ่านการทดสอบ SDK 408/408 รายการ
- บริการหลักที่รองรับ:
-
API Gateway v2 / HTTP API**,** Cognito**,** ElastiCache (Redis + IAM authentication)
-
RDS (PostgreSQL, MySQL, IAM authentication), S3 Object Lock (COMPLIANCE / GOVERNANCE)
- รองรับ DynamoDB Streams, IAM, STS, Kinesis, KMS ฯลฯ อย่างสมบูรณ์
- ใน LocalStack ฟังก์ชันข้างต้นยังรองรับเพียงบางส่วนหรือยังไม่รองรับ
เริ่มต้นอย่างรวดเร็ว
- มีตัวอย่างการตั้งค่า
docker-compose.yml พื้นฐานให้
- ใช้พอร์ต
4566 และ mount ไดเรกทอรีโลคัล ./data
- คำสั่งรัน:
docker compose up
- ทุกบริการสามารถเข้าถึงได้ที่
http://localhost:4566
- สามารถใช้ค่าใดก็ได้สำหรับ AWS credentials (
AWS_ACCESS_KEY_ID=test, AWS_SECRET_ACCESS_KEY=test)
- ตัวอย่างคำสั่ง:
aws s3 mb s3://my-bucket
aws sqs create-queue --queue-name my-queue
aws dynamodb list-tables
การผสานรวมกับ SDK
- สามารถใช้งานได้ทันทีโดยเพียง เปลี่ยน endpoint ของ AWS SDK เดิม
- ตัวอย่างตามภาษา:
- ในทุกตัวอย่าง
region ใช้ us-east-1 และ credentials ใช้ค่า "test"
แท็กอิมเมจ
latest: native image, แนะนำเพราะมี ความเร็วเริ่มต้นต่ำกว่า 1 วินาที
latest-jvm: อิมเมจแบบ JVM ที่เน้น ความเข้ากันได้ข้ามแพลตฟอร์ม
x.y.z / x.y.z-jvm: รีลีสแบบตรึงเวอร์ชัน
การตั้งค่าสภาพแวดล้อม
- ทุกการตั้งค่าสามารถ override ได้ด้วยตัวแปรสภาพแวดล้อมที่มีคำนำหน้า
FLOCI_
- ตัวแปรหลัก:
QUARKUS_HTTP_PORT: ค่าเริ่มต้น 4566
FLOCI_DEFAULT_REGION: ค่าเริ่มต้น us-east-1
FLOCI_DEFAULT_ACCOUNT_ID: ค่าเริ่มต้น 000000000000
FLOCI_STORAGE_MODE: เลือกได้จาก memory, persistent, hybrid, wal (ค่าเริ่มต้น hybrid)
FLOCI_STORAGE_PERSISTENT_PATH: พาธของไดเรกทอรีข้อมูล (./data)
- เอกสารการตั้งค่าทั้งหมด: configuration docs
- การตั้งค่าสตอเรจแยกตามบริการ: storage docs
สัญญาอนุญาต
- ให้ใช้งานภายใต้ สัญญาอนุญาต MIT จึง ใช้งานและแก้ไขได้อย่างอิสระโดยไม่มีข้อจำกัด
1 ความคิดเห็น
ความเห็นจาก Hacker News
อยากให้บรรดา ผู้ให้บริการคลาวด์ อย่าง AWS, GCP, Azure มีตัว emulator สำหรับการพัฒนาแบบโลคัลอย่างเป็นทางการ
ตอนนี้กำลังใช้ serverless stack ของ AWS หลายตัวอยู่ แต่การทดสอบแบบบูรณาการในเครื่องแทบเป็นไปไม่ได้เลย
Localstack เป็นทางเลือกที่โอเคก็จริง แต่ฟีเจอร์แบบนี้ถ้า AWS ทำเองโดยตรงน่าจะทำให้ประสบการณ์นักพัฒนาดีขึ้นมาก
คนก็คงจะเข้าใจความต่างนั้นว่าเป็นบั๊กของ AWS ดังนั้นในมุมของ AWS มันจะกลายเป็น ฝันร้ายด้านซัพพอร์ต
น่าสนใจเหมือนกันที่ Localstack เริ่มเจอการแข่งขันเพราะกระแส shift-left infrastructure tooling ที่ขับเคลื่อนด้วย AI
ตอนนี้ถูกลดบทบาทไปแล้ว แต่แนวคิดคือการจำลอง Azure cloud ทั้งก้อนบนเครื่องโลคัล
ซอฟต์แวร์ควรถูกออกแบบโดยยึด abstraction และ interface เป็นศูนย์กลาง เพื่อไม่ให้ผูกติดกับ cloud API เจ้าใดเจ้าหนึ่ง
เครื่องมือประเภทนี้สำหรับฉันดูเป็น ความพยายามที่ไร้ความหมาย
ถ้าจะใช้กับ unit test การ mocking การเรียก AWS น่าจะดีกว่า
ถ้าเป็นงานพัฒนาแบบโลคัล การ provision test environment ขึ้นมาจริงด้วยเครื่องมือ IaC อย่าง Terraform จะปลอดภัยกว่า
ถ้าพฤติกรรมของ emulator ต่างจากบริการจริง ก็มีความเสี่ยงที่บั๊กจะรั่วเข้า production
ขอสรุปประสบการณ์และความคิดของฉันต่อแนวคิด “AWS แบบโลคัล”
คนที่ไม่อยากแม้แต่จะผูกบัตรเครดิต ยังไงก็ไม่น่ากลายเป็น ลูกค้าระดับมูลค่าสูง อยู่ดี
แต่พอจะ deploy จริงก็ต้องไปสะสางหนี้ด้านความปลอดภัยนี้อยู่ดี และในขั้นตอนนั้นโค้ดที่ “ทำงานได้บนเครื่องฉัน” ก็มักพัง
ทางเลือก FOSS คงไล่ทันระดับนั้นได้ยาก
ถ้าจะยึดหลัก least privilege ก็ต้องค่อย ๆ เปิดสิทธิ์ทีละอย่าง ซึ่งช้ามากจนเหมือนเล่นเกม whack-a-mole ของสิทธิ์
ถ้าจำลอง IAM ในเครื่องได้อย่างแม่นยำ ก็จะย่นวงจรการ deploy ลงได้มาก
ฟีเจอร์นี้มีอยู่ใน Localstack รุ่นเสียเงิน เลยสงสัยว่าโปรเจกต์ใหม่นี้ทำได้ดีแค่ไหน
ต้องรัน integration test หลายร้อยรายการให้เร็ว แต่การเรียก AWS จริงนั้นไม่มีประสิทธิภาพเพราะมีทั้ง latency, ปัญหาความสม่ำเสมอ, ค่าใช้จ่าย, rate limit
การแจก AWS account ให้กับนักพัฒนาแต่ละคนก็เป็นฝันร้ายด้านการจัดการ
คำพูดที่ว่า “ต้องโดนระเบิดบิล AWS ด้วยตัวเองถึงจะเรียนรู้” มันเป็น อุปมาแบบไม่สมจริง พอ ๆ กับบอกว่า “ถ้าจะเรียนรู้เรื่องไฟก็ต้องโดนไฟลวกก่อน”
ถ้าให้นักพัฒนาแต่ละคนมีบัญชีแยกและตั้ง billing alert ไว้ ปัญหาด้านความปลอดภัยก็ไม่ได้ใหญ่ขนาดนั้น
สงสัยว่าโปรเจกต์นี้ต่างจาก moto อย่างไร
หลายคนไม่พอใจกับการเปลี่ยนไลเซนส์ของ Localstack แต่จริง ๆ ก็มีทางเลือกที่ดีอยู่แล้ว
service coverage ของ moto น่าประทับใจมาก
ทีมของเราก็เกือบย้ายแล้ว แต่สุดท้ายยังใช้ต่อเพราะสัญญา enterprise support ของ Localstack
ดูแล้วน่าจะมีประโยชน์กับงานทดสอบพอสมควร
ฉันกำลังทำ automation สำหรับแพ็กเกจ Lambda ด้วย Ansible role
ถ้าสามารถ mocking ส่วนที่เช็กว่าใน S3 มี zip เดิมอยู่หรือไม่ได้ ก็น่าจะสะดวกขึ้นมาก
LocalStack Community Edition จะสิ้นสุดในเดือนมีนาคม 2026 และมีแผนจะบังคับใช้ auth token รวมถึงหยุดอัปเดตด้านความปลอดภัย
Floci ถูกนำเสนอเป็นทางเลือกที่ไม่มีข้อจำกัดเหล่านี้
มันช่วยสร้าง feedback loop ที่รวดเร็วโดยไม่ต้องรอการ deploy ผ่าน CloudFormation และประหยัดเวลาไปได้หลายพันชั่วโมง
เรายังสามารถ ทดสอบบนรถไฟ ได้แม้ไม่มีอินเทอร์เน็ต
ชื่อโปรเจกต์นี้ในภาษาโรมาเนียแปลว่า “ก้อนขนเล็ก ๆ” และในภาษาพูดหมายถึง ขนหัวหน่าว เลยดูตลกดี
นี่คือโปรเจกต์ที่ฉันรออยู่
ฉันชอบ Localstack แต่คิดว่าโซลูชันโอเพนที่ ขับเคลื่อนโดยชุมชน เหมาะสมกว่ามาก
ถ้ามีโครงสร้างที่ให้วิศวกร AWS เข้ามามีส่วนร่วมได้โดยตรง ก็จะเป็นประโยชน์กับทุกฝ่าย
ตอนนี้ที่ การนำ AI มาใช้ กำลังเร่งตัว การทดสอบแบบบูรณาการบนเครื่องโลคัลยิ่งเป็นสิ่งจำเป็น
ทางเลือกที่เป็นจริงกว่าคือออก local container version อย่างเป็นทางการแทน
การทดสอบในเครื่องเท่านั้นที่เป็นวิธีปลอดภัยในการลองสถานการณ์อย่าง “โมเดลหลอนจนลบตารางทิ้ง”
เคยใช้ Localstack แล้วถือว่าโอเคมาก
มีใครรู้ไหมว่าฝั่ง GCP มีอะไรคล้าย ๆ กันหรือเปล่า
bigquery-emulator ใช้งานได้ดี แต่ยังไม่เจออะไรที่จำลอง GCP ทั้งระบบได้
ฟีเจอร์ดูเจ๋งดี แต่แทบไม่มี commit history เลย และก็ไม่มี PR หรือ issue ด้วย
มันดูเหมือนโปรเจกต์ที่สร้างอัตโนมัติ เลยให้ความรู้สึกว่า ไม่น่าเชื่อถือ
เวลาทดสอบกับข้อมูลจริงก็ไม่มั่นใจว่าปลอดภัยพอหรือไม่
ตอนนี้ยังอยู่ช่วงต้นมาก ก็เลยคงต้องติดตามดูต่อไป
แต่ก่อนคนเชื่อกันว่าแค่เป็นโอเพนซอร์ส เดี๋ยวก็มีคนมาเจอปัญหาความปลอดภัยเอง
ทุกวันนี้กลับสามารถใช้ LLM ทำ security audit ได้ด้วย
มันอาจไม่สมบูรณ์แบบ แต่การตรวจสอบอัตโนมัติแบบนี้ก็ทำให้ซ่อนมัลแวร์ได้ยากขึ้น