4 คะแนน โดย GN⁺ 2025-12-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
GN⁺ 2025-12-20
ความคิดเห็นจาก Hacker News
  • ไม่นานมานี้ได้ทดสอบ Garage ภายในอย่างค่อนข้างกว้างขวาง
    การติดตั้งง่ายกว่า MinIO เล็กน้อย แต่ประสิทธิภาพความเร็วสูงยังตามหลัง
    ในสภาพแวดล้อม 25G NIC, MinIO ทำได้ถึง 20~25Gbps แต่ Garage ถูกจำกัดอยู่ราว 5Gbps
    ให้ความรู้สึกว่า Garage ไม่ได้มุ่งเป้าไปที่กรณีใช้งานที่ต้องการประสิทธิภาพสูงแบบนี้
    ครั้งหน้าวางแผนจะลองดู RustFS และ Ceph/Rook ด้วย
    จากทิศทางล่าสุดของ MinIO ดูเหมือนว่าท้ายที่สุดคงต้องหาทางเลือกอื่น

    • Garage ประกาศชัดเจนว่า ไม่ได้มุ่งเป้าประสิทธิภาพสูงสุด
      ปรัชญาคือ “ประสิทธิภาพสูงจะจำกัดทั้งการออกแบบและโครงสร้างพื้นฐาน ดังนั้นเราจึงมุ่งหา ประสิทธิภาพผ่านความมินิมอล
      (เอกสาร Design Goals)
      แต่ก็น่าสนใจว่าคอขวดด้านประสิทธิภาพเกิดขึ้นตรงไหน อาจเป็นไปได้ว่ามีการประมวลผลแบบขนานน้อยกว่า MinIO
    • ถ้าต้องการแค่ S3 ก็ไม่แนะนำ Rook
      เพราะ มีความซับซ้อนสูงมาก และถ้าไม่เข้าใจอย่างถ่องแท้ เวลาคลัสเตอร์พังจะกู้คืนได้ยาก
    • มีข้อเสนอให้เพิ่ม SeaweedFS เข้าไปในรายการทดสอบด้วย
  • ดูเป็นโปรเจ็กต์ที่น่าสนใจสำหรับงานพัฒนาแบบโลคัล
    แต่พออ่าน คู่มือการตั้งค่า production แล้วก็แอบน่ากลัวนิดหน่อย
    Garage แนะนำให้ใช้ไฟล์ซิสเต็มอย่าง BTRFS หรือ ZFS เพราะตอนเก็บเมทาดาทาไม่ได้ทำ checksum และการตรวจสอบความถูกต้อง เอง
    เอนจิน LMDB เริ่มต้นมีความเสี่ยงข้อมูลเสียหายเมื่อปิดตัวผิดปกติ จึงต้องทำ snapshot เป็นประจำ
    แม้จะใช้ SQLite ได้ด้วย แต่ก็น่าแปลกใจที่ DB เริ่มต้นเปราะบางต่อไฟดับ

    • ถ้าใครรู้จัก embedded KV store ที่มีครบทั้ง transaction support, ความเร็วสูง, Rust bindings, checksum ในตัว และการตรวจสอบความถูกต้อง ก็อยากให้บอกมา
      เขาบอกว่าจะรวมเข้ากับ Garage ทันที
    • สำหรับงานพัฒนาแบบโลคัลเคยใช้ MinIO แต่เวอร์ชันนั้นตอนนี้ไม่ได้รับการดูแลแล้ว
      ข้อกำหนดขั้นต่ำของ Garage ที่ RAM 1GB ทำให้รู้สึกหนักไปนิด
    • ปัญหาข้อมูลเสียหายตอนไฟดับเป็นเรื่องที่แก้ด้วยซอฟต์แวร์อย่างเดียวได้ยาก
      แนะนำให้ใช้ไดรฟ์ NVMe ที่มี PLP (power loss protection) หรือใช้ UPS
  • หลังเหตุการณ์ของ MinIO ก็เห็นการ นำ Garage ไปใช้เพิ่มขึ้นอย่างรวดเร็ว
    บทความเปรียบเทียบ benchmark ของ Repoflow มีประโยชน์มาก
    RustFS ก็น่าสนใจ แต่ตัดออกด้วยเหตุผลที่ไม่ใช่ด้านเทคนิค
    ถ้าใครมีคำแนะนำในการแทนที่ MinIO ก็อยากฟัง

    • ยังไม่ได้ลองใช้เอง แต่ Versity S3 Gateway ก็ดูน่าสนใจ
      ดูได้ที่ ลิงก์ GitHub
      และก็อยากรู้เหมือนกันว่าเมื่อเทียบกับ Ceph S3 Gateway เป็นอย่างไร
    • มีคนถามว่าทำไมถึงตัด RustFS ออก
    • จากการคุยกันก่อนหน้านี้และประสบการณ์การทำงาน Garage ดูเป็นตัวทดแทนที่เสถียร
    • ใน benchmark นั้น SeaweedFS ก็ทำผลงานได้ดี
  • เว็บไซต์ทางการของ 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 ทำให้เสียทั้งความทนทานต่อความเสียหายและประสิทธิภาพ

    • เคยคิดจะใช้กับไลบรารีเทป LTO แต่กังวลที่มีเพียง fault tolerance แบบ replication
      ความกังวลหลักคือเวลาฮาร์ดแวร์เสียแล้วจะกู้คืนอย่างไร
  • Garage มีประโยชน์มากในสคริปต์งาน data engineering
    เพราะเครื่องมือส่วนใหญ่รองรับการเชื่อมต่อกับ S3 อยู่แล้ว จึง dump ข้อมูลลง Garage แล้วค่อยขยายไปคลาวด์ภายหลังได้ง่าย

  • ไม่นานมานี้ได้ลองทดสอบ Garage
    อัปโหลดเอกสารราว 300 ชิ้น (1GB) แล้วพยายามลบ แต่บริการ S3 crash ภายในคอนเทนเนอร์ จนต้องรีสตาร์ต
    เป็นโปรเจ็กต์ที่เจ๋ง แต่จากประสบการณ์ของผมมันยังขาด ความเชื่อถือได้