- Garage คือ ระบบจัดเก็บอ็อบเจ็กต์ที่เข้ากันได้กับ S3 ซึ่งสามารถทำงานได้อย่างเสถียรแม้อยู่ในสภาพแวดล้อมนอกดาต้าเซ็นเตอร์
- ให้มาเป็น ไบนารีแบบไม่มี dependency เดียว จึงรันได้ง่ายบน Linux ทุกดิสทริบิวชัน
- ข้อมูลจะถูกทำสำเนาไปยัง 3 โซน (zone) เพื่อให้มี ความซ้ำซ้อนและความทนทานต่อความขัดข้อง สูง
- รองรับ Amazon S3 API จึงใช้งานร่วมกับแอปพลิเคชันหลากหลาย เช่น Nextcloud, Matrix, Mastodon
- ใช้ฮาร์ดแวร์ไม่สูงและมีการออกแบบที่อิงงานวิจัยแบบเปิด ช่วย ขยายการเข้าถึงระบบกระจายศูนย์
ภาพรวม
- Garage คือ ระบบจัดเก็บอ็อบเจ็กต์ S3 ที่สามารถให้บริการได้อย่างเสถียรแม้อยู่นอกดาต้าเซ็นเตอร์ และสามารถรันครอบคลุมหลายดาต้าเซ็นเตอร์ผ่านอินเทอร์เน็ตได้
- ใช้งานได้หลากหลาย เช่น โฮสต์เว็บไซต์, เก็บสื่อ, ปลายทางสำหรับแบ็กอัป
เป้าหมายการออกแบบ
- เป็นระบบที่พัฒนาขึ้นโดยให้ความสำคัญกับ ความเบาและประสิทธิภาพ
- แจกจ่ายเป็น ไฟล์ปฏิบัติการแบบไม่มี dependency เดียว จึงทำงานได้บน Linux ทุกดิสทริบิวชัน
- ออกแบบให้เป็นมิตรกับผู้ดูแลระบบเพื่อ ปรับใช้ได้รวดเร็วและใช้งานได้อย่างปลอดภัย
- ออกแบบมาให้ ปรับใช้ได้ในทุกสภาพแวดล้อม จึงสามารถใช้งานข้ามหลายดาต้าเซ็นเตอร์บนอินเทอร์เน็ตได้แม้ไม่มีเครือข่าย backbone เฉพาะ
- มี ความยืดหยุ่นในการฟื้นตัว สูง สามารถทนต่อ ปัญหาเครือข่าย, ความหน่วง, ความผิดพลาดของดิสก์, ความผิดพลาดของผู้ปฏิบัติงาน ได้
ข้อกำหนดขั้นต่ำ
- CPU: x86_64, ARMv7 หรือ ARMv8 ที่ออกในช่วง 10 ปีที่ผ่านมา
- RAM: 1GB
- พื้นที่ดิสก์: อย่างน้อย 16GB
- เครือข่าย: ความหน่วงไม่เกิน 200ms, แบนด์วิดท์อย่างน้อย 50Mbps
- รองรับ ฮาร์ดแวร์ต่างสเปก จึงสามารถสร้างคลัสเตอร์โดยใช้เครื่องมือสองได้
ความสามารถในการกู้คืนข้อมูลและความเข้ากันได้
- แต่ละชิ้นข้อมูล (chunk) จะถูกเก็บแบบทำสำเนาไว้ใน 3 โซน
- รองรับ Amazon S3 API จึงเข้ากันได้กับแอปพลิเคชันเดิมได้ทันที
- ตัวอย่างที่รองรับ: Nextcloud, Matrix, Cyberduck, Mastodon, Rclone, PeerTube
พื้นฐานทางเทคนิค
- Garage ถูกออกแบบโดยอิงจาก ผลงานวิจัยด้านระบบกระจายศูนย์ สมัยใหม่
- คีย์-แวลูสโตร์ Dynamo ของ Amazon
- Conflict-Free Replicated Data Types (CRDTs)
- ซอฟต์แวร์เน็ตเวิร์กโหลดบาลานเซอร์ Maglev
ผู้สนับสนุนและเงินทุน
- โครงการ Garage ได้รับ เงินทุนภาครัฐ หลายครั้ง
- 2021–2022: NGI POINTER – สนับสนุนพนักงานประจำเต็มเวลา 3 คน เป็นเวลา 1 ปี
- 2023–2024: NLnet / NGI0 Entrust – สนับสนุนพนักงานประจำเต็มเวลา 1 คน เป็นเวลา 1 ปี
- 2025: NLnet / NGI0 Commons Fund – สนับสนุนพนักงานประจำเต็มเวลา 1.5 คน เป็นเวลา 1 ปี
- ได้รับการสนับสนุนทางการเงินจากโครงการวิจัยและนวัตกรรม Horizon 2021 ของสหภาพยุโรป และโครงการ Next Generation Internet
- สามารถเข้าร่วมเพิ่มเติมผ่านการสนับสนุนหรือสัญญาสนับสนุนได้ (ติดต่อ: garagehq@deuxfleurs.fr)
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ไม่นานมานี้ได้ทดสอบ Garage ภายในอย่างค่อนข้างกว้างขวาง
การติดตั้งง่ายกว่า MinIO เล็กน้อย แต่ประสิทธิภาพความเร็วสูงยังตามหลัง
ในสภาพแวดล้อม 25G NIC, MinIO ทำได้ถึง 20~25Gbps แต่ Garage ถูกจำกัดอยู่ราว 5Gbps
ให้ความรู้สึกว่า Garage ไม่ได้มุ่งเป้าไปที่กรณีใช้งานที่ต้องการประสิทธิภาพสูงแบบนี้
ครั้งหน้าวางแผนจะลองดู RustFS และ Ceph/Rook ด้วย
จากทิศทางล่าสุดของ MinIO ดูเหมือนว่าท้ายที่สุดคงต้องหาทางเลือกอื่น
ปรัชญาคือ “ประสิทธิภาพสูงจะจำกัดทั้งการออกแบบและโครงสร้างพื้นฐาน ดังนั้นเราจึงมุ่งหา ประสิทธิภาพผ่านความมินิมอล”
(เอกสาร Design Goals)
แต่ก็น่าสนใจว่าคอขวดด้านประสิทธิภาพเกิดขึ้นตรงไหน อาจเป็นไปได้ว่ามีการประมวลผลแบบขนานน้อยกว่า MinIO
เพราะ มีความซับซ้อนสูงมาก และถ้าไม่เข้าใจอย่างถ่องแท้ เวลาคลัสเตอร์พังจะกู้คืนได้ยาก
ดูเป็นโปรเจ็กต์ที่น่าสนใจสำหรับงานพัฒนาแบบโลคัล
แต่พออ่าน คู่มือการตั้งค่า production แล้วก็แอบน่ากลัวนิดหน่อย
Garage แนะนำให้ใช้ไฟล์ซิสเต็มอย่าง BTRFS หรือ ZFS เพราะตอนเก็บเมทาดาทาไม่ได้ทำ checksum และการตรวจสอบความถูกต้อง เอง
เอนจิน LMDB เริ่มต้นมีความเสี่ยงข้อมูลเสียหายเมื่อปิดตัวผิดปกติ จึงต้องทำ snapshot เป็นประจำ
แม้จะใช้ SQLite ได้ด้วย แต่ก็น่าแปลกใจที่ DB เริ่มต้นเปราะบางต่อไฟดับ
เขาบอกว่าจะรวมเข้ากับ Garage ทันที
ข้อกำหนดขั้นต่ำของ Garage ที่ RAM 1GB ทำให้รู้สึกหนักไปนิด
แนะนำให้ใช้ไดรฟ์ NVMe ที่มี PLP (power loss protection) หรือใช้ UPS
หลังเหตุการณ์ของ MinIO ก็เห็นการ นำ Garage ไปใช้เพิ่มขึ้นอย่างรวดเร็ว
บทความเปรียบเทียบ benchmark ของ Repoflow มีประโยชน์มาก
RustFS ก็น่าสนใจ แต่ตัดออกด้วยเหตุผลที่ไม่ใช่ด้านเทคนิค
ถ้าใครมีคำแนะนำในการแทนที่ MinIO ก็อยากฟัง
ดูได้ที่ ลิงก์ GitHub
และก็อยากรู้เหมือนกันว่าเมื่อเทียบกับ Ceph S3 Gateway เป็นอย่างไร
เว็บไซต์ทางการของ Deuxfleurs เป็นหนึ่งในเว็บที่มี ดีไซน์สวยที่สุด เท่าที่เคยเห็นมา
กำลังใช้ Garage สำหรับงานพัฒนาและทดสอบแบบโลคัล
ใช้ร่วมกับ s5cmd แล้วสามารถ seed ข้อมูล 15GB และออบเจ็กต์มากกว่า 60,000 รายการได้ภายใน 60 วินาที
การทำ สำเนาสภาพแวดล้อม staging ที่มีทั้ง API, DB, cache และ object container ด้วย Docker เสร็จภายใน 2 นาที
การตั้งค่าง่ายมากและทำงานได้เสถียร
ก่อนหน้านี้ใช้ LocalStack S3 แต่มีปัญหาเรื่อง ขาด persistence และ MinIO OSS ก็หยุดบำรุงรักษาแล้ว
ลองดู SeaweedFS กับ RustFS ด้วย แต่ Garage ง่ายที่สุด
Garage ทำได้น่าประทับใจมากในโค้ดทดสอบและ benchmark
การ deploy ง่ายเพราะเป็นไฟล์ executable เดียว และเอกสารก็ดีมาก
แต่การ ไม่มีฟีเจอร์ object tags เป็นเรื่องน่าเสียดายมาก
ในโลกของ cloud API นั้น tag ถือเป็นฟีเจอร์พื้นฐาน จึงหวังว่าส่วนนี้จะได้รับการปรับปรุง
ชอบ Garage มากจริง ๆ
มันไม่ได้เป็นแค่ทางเลือกแทน S3 แบบเรียบง่าย แต่ยังมีประโยชน์ใน สถาปัตยกรรมแบบ hyper-converged ด้วย
โครงสร้างที่อ่านข้อมูลจากเครื่องโลคัลก่อน และใช้เครือข่ายเฉพาะเมื่อจำเป็นนั้นยอดเยี่ยมมาก
การไม่มี Erasure coding ทำให้เสียทั้งความทนทานต่อความเสียหายและประสิทธิภาพ
ความกังวลหลักคือเวลาฮาร์ดแวร์เสียแล้วจะกู้คืนอย่างไร
Garage มีประโยชน์มากในสคริปต์งาน data engineering
เพราะเครื่องมือส่วนใหญ่รองรับการเชื่อมต่อกับ S3 อยู่แล้ว จึง dump ข้อมูลลง Garage แล้วค่อยขยายไปคลาวด์ภายหลังได้ง่าย
ไม่นานมานี้ได้ลองทดสอบ Garage
อัปโหลดเอกสารราว 300 ชิ้น (1GB) แล้วพยายามลบ แต่บริการ S3 crash ภายในคอนเทนเนอร์ จนต้องรีสตาร์ต
เป็นโปรเจ็กต์ที่เจ๋ง แต่จากประสบการณ์ของผมมันยังขาด ความเชื่อถือได้