แนะนำบน HN: GitHub Runner แบบโอเพนซอร์สสำหรับ x64 และ Arm
(ubicloud.com)- Ubicloud นำเสนอ managed runner สำหรับ GitHub Actions โดยระบุว่าเพียงเปลี่ยน 1 บรรทัดใน workflow ก็สามารถใช้งานแบบเดิมต่อไปได้ พร้อมเพิ่มความเร็วในการ build และลดต้นทุน
- ราคาเริ่มต้นที่ Standard $0.0010 ต่อนาที, Premium $0.0016 ต่อนาที โดยเสนอค่าใช้จ่ายที่ต่ำกว่า GitHub-hosted runners 85% และ 70% ตามลำดับ
- Standard ใช้ AMD EPYC Genoa พร้อมพื้นที่เก็บ cache ฟรี 30GB ส่วน Premium ใช้ AMD Ryzen 9 พร้อมพื้นที่เก็บ cache ฟรี 100GB
- ด้านความปลอดภัยประกอบด้วย VM ที่แยกขาดจากกันอย่างสมบูรณ์ บน Linux KVM, VM แบบใช้ครั้งเดียวต่อแต่ละงาน, การตั้งค่า GitHub Just-In-Time runner, การเข้ารหัส และการหมุนเวียนคีย์
- Ubicloud มุ่งเป็น คลาวด์โอเพนซอร์ส โดยสามารถดูซอร์สโค้ดบน GitHub หรือจัดการ runner ของตนเองได้หากต้องการ
วิธีผสานกับ GitHub Actions
- Ubicloud ให้บริการ managed runner สำหรับ GitHub Actions และผสานการใช้งานด้วยการเปลี่ยนการตั้งค่า runner เพียง 1 บรรทัดใน GitHub workflow
- ให้โควตาใช้งานฟรี 1,250 นาทีต่อเดือน
- ชูจุดเด่นหลักคือ “เริ่มได้ภายใน 5 นาที”, “เร็วขึ้น 2 เท่า”, และ “ประหยัด 4–7 เท่า”
- สามารถเริ่มผสานการใช้งานได้ผ่าน เอกสารเริ่มต้นอย่างรวดเร็ว
ราคาและสเปกของ runner
-
Standard runner
- ราคาเริ่มต้นคือ $0.0010 ต่อนาที
- ชูว่ามีค่าใช้จ่าย ต่ำกว่า 85% เมื่อเทียบกับ GitHub-hosted runners
- ใช้ CPU บนพื้นฐาน AMD EPYC Genoa
- ให้พื้นที่เก็บ cache ฟรี 30GB
-
Premium runner
- ราคาเริ่มต้นคือ $0.0016 ต่อนาที
- ชูว่ามีค่าใช้จ่าย ต่ำกว่า 70% เมื่อเทียบกับ GitHub-hosted runners
- ใช้ CPU บนพื้นฐาน AMD Ryzen 9
- ให้พื้นที่เก็บ cache ฟรี 100GB
-
ราคาตามฮาร์ดแวร์
- 2 vCPU, RAM 8GB: Standard $0.0010/min, Premium $0.0016/min
- 4 vCPU, RAM 16GB: Standard $0.0020/min, Premium $0.0032/min
- 8 vCPU, RAM 32GB: Standard $0.0040/min, Premium $0.0064/min
- 16 vCPU, RAM 64GB: Standard $0.0080/min, Premium $0.0128/min
การแยกสภาพแวดล้อมและความปลอดภัย
- โมเดลความปลอดภัยเน้น VM ที่แยกขาดจากกันบน Linux KVM และ VM แบบใช้ครั้งเดียวต่อแต่ละงาน
- จัดการ secret แบบใช้ครั้งเดียว ด้วยการตั้งค่า GitHub Just-In-Time runner
- รวมถึงการเข้ารหัสทั้งขณะจัดเก็บและระหว่างส่งข้อมูล, การหมุนเวียนคีย์ในตัว, การตั้งค่า firewall อัตโนมัติ และการแจ้งเตือนช่องโหว่อัตโนมัติ
แนวทางคลาวด์โอเพนซอร์ส
- Ubicloud เป็น คลาวด์โอเพนซอร์ส ที่มุ่งเป็นทางเลือกผู้ให้บริการคลาวด์แบบเดียวกับที่ Linux เป็นทางเลือกให้กับระบบปฏิบัติการแบบปิด
- สามารถดูซอร์สโค้ดได้ที่ GitHub
- ผู้ใช้สามารถจัดการ runner ของตนเองได้โดยตรงหากต้องการ
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
ยินดีด้วยกับการเปิดตัว ดูน่าสนใจ และราคาบนหน้าแลนดิ้งเพจก็ดูดีมาก
ตอนนี้ผมยังไม่ใช่ลูกค้าเป้าหมาย เพราะงานที่ทำทั้งหมดเป็นโอเพนซอร์สและใช้ GitHub Actions ฟรีอยู่แล้ว แต่ก็ทำให้อยากรู้ว่าทำไมถึงถูกกว่าและเร็วกว่า / มีข้อควรระวังอะไรบ้าง
ยังเห็นปัญหาด้านภาพเล็กน้อยตรงช่วงความกว้างหน้าต่าง 990px~ประมาณ 1200px ซึ่งเป็นขนาดหน้าต่างที่พบบ่อยบน MBP 14" โดยมี padding แนวนอนไม่พอ
ข้อความที่ว่า “Ubicloud คือโอเพนซอร์สคลาวด์ คิดซะว่าเป็นทางเลือกแบบเปิดของผู้ให้บริการคลาวด์ เหมือนที่ Linux เป็นทางเลือกแทนระบบปฏิบัติการแบบปิด” เข้าใจยาก และตอนอ่านครั้งแรก ๆ ผมนึกว่าเขากำลังบอกว่าเป็นทางเลือกของ Linux
น่าจะชัดเจนกว่าถ้าพูดก่อนเลยว่า มันคืออะไร แบบในส่วน “What is Ubicloud?” ของเอกสาร เช่น “ให้ความสามารถแบบ IaaS บนผู้ให้บริการเช่า bare metal อย่าง Hetzner, OVH, AWS Bare Metal และให้บริการแบบ managed service ด้วย”
เหมือนจะมีคติการตลาดเก่า ๆ สำหรับกลุ่มวิศวกรว่า การบอกให้ชัดว่ามันคืออะไรได้ผลดีกว่าการพูดถึงประโยชน์ลอย ๆ และกรณีนี้ก็น่าจะต้องมีทั้งสองอย่าง ควรบอกทั้งตัวตนที่แท้จริงและเหตุผลว่าทำไมถึงถูกกว่าและดีกว่า
ในย่อหน้านั้นยังมีคำผิดที่เว้นวรรคหายไปอย่าง
systems.Ubicloudด้วยใน “Fast runs even at this price point” ควรเอา
pointออก “Price point” ไม่ได้เป็นคำพ้องกับ “price” และในเมื่อบอกอยู่แล้วว่าถูกกว่า ก็น่าจะเปลี่ยนหัวข้อส่วนนั้นเป็น “Faster than GitHub Actions” ไปเลยโดยไม่ต้องมี taglineย่อหน้า “Ubicloud is an open, free, and portable cloud...” ก็ยังคลุมเครืออยู่ น่าจะชัดกว่าถ้าเขียนว่า “Ubicloud คือคลาวด์ที่เปิดเผย ฟรี และพกพาได้ คุณรันมันบนผู้ให้บริการโฮสติ้งที่คุณต้องการได้ หรือจะใช้ฮาร์ดแวร์ของตัวเองก็ได้ ดูซอร์สโค้ดได้บน GitHub!”
เท่าที่ดูคร่าว ๆ ราคาพื้นฐานอยู่แถว ๆ $0.008 ต่อนาที ซึ่งพอเทียบกับราคา EC2 ต่อชั่วโมงแล้วก็ไม่ได้ดูผิดธรรมชาติมาก
ผมเคยทำโปรเจ็กต์ที่แค่รัน EC2 instance เดี่ยวแล้วต่อเข้ากับ Actions ก็ลดต้นทุนได้มากและยังทำให้เวลา build ดีขึ้นด้วย
เราใช้ builder ของ Ubicloud มาหลายเดือนแล้วกับโปรเจ็กต์ Rust [0] และมันทำงานได้ค่อนข้างดี เวลา CI ลดจาก 10~15 นาทีเหลือ 6~7 นาที และค่าใช้จ่ายลดจาก $300 ต่อเดือนเหลือ $30
เรื่องที่น่าแปลกคือการบันทึก/กู้คืนแคชช้ามาก CPU ของเครื่องดีพอจนสำหรับเรา การปิดแคชไปเลยแล้ว build ใหม่ทั้งหมดทุกครั้งกลับเร็วกว่า
[0] https://github.com/ArroyoSystems/arroyo
เวิร์กโฟลว์นี้รันบนเครื่องชั่วคราวของ AWS ได้ภายใน 5 นาที ที่ราคาเท่ากับ Ubicloud: https://github.com/runs-on/arroyo/actions/runs/7723361513/jo...
ผมใช้ไฟล์ซิสเต็มกับแอปพลิเคชันประสิทธิภาพสูง และหลายครั้ง ZFS กลายเป็นคอขวดเมื่อเทียบกับชุดที่เรียบง่ายกว่าอย่าง XFS ± mdadm ± encryption
เป็นประเด็นที่ถกเถียงได้ แต่ก็มีผลลัพธ์คล้ายกันอยู่: https://klarasystems.com/articles/virtualization-showdown-fr... : “อาจทำให้ผู้อ่านหลายคนแปลกใจ แต่สำหรับผมไม่แปลกใจเลย ผมทดสอบประสิทธิภาพ guest storage ของ OpenZFS และ Linux KVM มานานกว่าสิบปีแล้ว และ zvol ก็ให้ประสิทธิภาพค่อนข้างแย่ทุกครั้ง”
ดูเหมือน OpenZFS เองก็เริ่มพิจารณาการปรับแต่งให้เหมาะกับไดรฟ์ยุคใหม่ (SSD, NVMe) ซึ่งมีลักษณะด้านประสิทธิภาพต่างจากดิสก์จานหมุนที่ ZFS ถูกออกแบบมาสำหรับมันมาก
ในสรุป SPDK มีข้อความว่า “เราเปลี่ยน host OS จาก ext4 เป็น btrfs เพื่อลดเวลา provisioning VM” และ “หลังเปลี่ยน host filesystem เป็น btrfs ประสิทธิภาพดิสก์ลดลงอย่างเห็นได้ชัด และ throughput เหลือประมาณ 1/3 ของ ext4”
ปัญหาของ Ubicloud ดูเหมือนจะเกี่ยวกับไฟล์ซิสเต็มแบบ copy-on-writeโดยรวม และแม้การเลือกใช้รูปแบบที่ต่างออกไปเล็กน้อยอย่าง CoA จะน่าสนใจ แต่ก็สงสัยว่าเคยพิจารณาทางเลือกที่ง่ายกว่านี้หรือไม่ เช่น การวาง overlay บนไฟล์ซิสเต็มแบบ journaling อย่าง XFS หรือ Ext4
หรือจะใช้ UFS2 + snapshot เพื่อกู้คืนสภาพพร้อมทดสอบตั้งต้น แล้ว revert กลับไปที่สถานะนั้นระหว่างแต่ละรอบทดสอบก็น่าจะเป็นไปได้
ถ้าลูกค้ารู้สึกว่าปิดแคชไปเลยดีกว่า ก็เหมือนบอกเป็นนัยว่า CoA อาจมีปัญหาคล้ายกับ CoW
ส่วนตัวผมคงลองใช้SR-IOVพร้อม namespace แยกตามลูกค้าแล้วจบไปมากกว่าแทนที่จะเพิ่มความซับซ้อน แต่ก็น่าจะมีเหตุผลที่ดีแน่ ๆ เลยอยากรู้ว่าเหตุผลนั้นคืออะไร
หนึ่งในผู้ก่อตั้ง Ubicloud ชื่อ Ozgun
ตอนนี้มีลูกค้าหลายสิบรายใช้ Ubicloud runner ในระบบโปรดักชันอยู่ และกำลังออกแบบ ชั้นแคช อยู่ในตอนนี้ จึงเปิดเผยออกมาเพื่ออยากฟังความเห็นเกี่ยวกับส่วนต่าง ๆ อย่าง Docker instance registry, Docker layer cache และ package cache
ในภาพกว้างกว่านั้น ถ้าใครมีข้อคิดเห็นเกี่ยวกับประเด็นเรื่องคลาวด์ที่เปิดเผยและพกพาได้ ก็ยินดีรับฟังเช่นกัน
วิธีเพิ่ม network call ราคาแพงเพื่อแคชเลเยอร์ด้วยตัวเองใน GitHub Actions runner, CircleCI ฯลฯ มักกินเวลามากเสมอ และดูเหมือนจะทำให้หลายคนลบแคชออกไปเลย
น่าจะมีประโยชน์มากสำหรับผู้ใช้ GitHub Actions clone ตัวอื่นอย่าง act [0]
[0]: https://github.com/nektos/act
ใช้ BuildJet [0] มานานกว่าหนึ่งปีแล้วและพอใจมาก
ประหยัด ค่าใช้จ่าย CI ไปได้มากกว่า $25k เมื่อเทียบกับ GH Actions และเพราะ BuildJet ก็ใช้ bare metal server ที่แรงของ Hetzner เหมือนกัน เวลา build จึงลดลงราว 94%
พอใจมากจริง ๆ และยินดีที่มีบริษัทในตลาดนี้เพิ่มขึ้นอีก
[0] https://buildjet.com
ส่วนที่ใหญ่ที่สุดของค่าใช้จ่าย GHA ของเราคือ การรัน MacOS มีให้บริการ MacOS แบบ managed service ไหม หรือมีแผนจะให้บริการหรือเปล่า? แล้วราคาถูกกว่า GitHub แค่ไหน?
Ubicloud ทำงานอยู่บนผู้ให้บริการ bare metal ซึ่งผู้ให้บริการเหล่านั้นไม่ได้ปล่อยเช่า Mac hardware
ในทางเทคนิคสามารถรัน MacOS VM บน arm64 ได้ แต่จากการอ่าน Apple End User License Agreement (EULA) ของเรา เราตีความว่าไม่ควรทำแบบนั้น
มีการรวบรวมข้อมูลอ้างอิงที่เกี่ยวข้องไว้ดีใน repository นี้: https://github.com/kholia/OSX-KVM?tab=readme-ov-file#is-this...
ในข้อกำหนดของ OS X เขียนไว้แบบนี้:
3. การให้เช่าสำหรับบริการนักพัฒนาที่ได้รับอนุญาต A. การให้เช่า คุณสามารถให้เช่าหรือให้เช่าช่วง Apple Software ที่มีไลเซนส์ถูกต้องครบถ้วนแก่บุคคลหรือองค์กรแต่ละราย (“Lessee”) ได้ โดยต้องเป็นไปตามเงื่อนไขทั้งหมดต่อไปนี้: (i) Apple Software ที่ให้เช่าต้องใช้เพื่อวัตถุประสงค์ในการให้บริการนักพัฒนาที่ได้รับอนุญาตเท่านั้น และ Lessee แต่ละรายต้องตรวจสอบและยอมรับว่าตนผูกพันตามข้อกำหนดไลเซนส์นี้; (ii) ระยะเวลาการเช่าแต่ละครั้งต้องต่อเนื่องอย่างน้อย 24 ชั่วโมง
เร็วกว่ารันเนอร์โฮสต์โดย GitHub ระดับเดียวกันราว 25% และราคาต่อนาทีถูกกว่า 50%
[1] https://docs.warpbuild.com/runners#macos-m2-pro-on-arm64
ที่ Resmo เราใช้ Ubicloud มาสักพักแล้ว และมันถูกกว่าจริง 10 เท่า แม้จะเพิ่มขนาดอินสแตนซ์เป็น 2 เท่าเพื่อเอาประสิทธิภาพเพิ่มอีกหน่อย ก็ยังถูกกว่า 5 เท่าอยู่ดี
เหตุผลหลักคือแพลตฟอร์มนี้โฮสต์อยู่บน dedicated instance ของ Hetzner
ที่ PeerDB[1] เราใช้ Ubicloud runner มาสักพักแล้ว คุ้มค่ามาก และโดยเฉพาะ ARM runner ก็ช่วยลดค่าใช้จ่าย CI ได้
ทีมตอบสนองเร็วมาก และก็เพิ่มการรองรับ ARM runner ภายในไม่กี่สัปดาห์หลังจากที่เราขอ
[1] https://github.com/PeerDB-io/peerdb
สิ่งที่น่าหงุดหงิดในราคาของ GitHub Actions runner คือการ คิดเงินเป็นนาที จะคิดเงินเป็นวินาทีไม่ได้หรือ? ต่อให้มีขั้นต่ำ 1 นาทีก็ยังดี ถ้าหลังจากนั้นคิดเป็นวินาทีก็น่าจะดีกว่า
เดาว่าคงทำแบบนี้เพื่อชดเชยเวลาที่ VM รีบูตระหว่างงาน
เวลารีบูต VM สะสมขึ้นได้เร็วมาก เลยน่าจะเป็นเหตุผลนั้น
แต่ก็มีผู้ใช้ที่รันงาน lint ใช้เวลาแค่ประมาณ 2 วินาทีบนอินสแตนซ์ 16 vCPU อยู่เหมือนกัน จึงยังคง การคิดเงินขั้นต่ำ 1 นาที ไว้
อยากให้เลิกเรียก Elastic license ว่าเป็น โอเพนซอร์ส มันเปิดให้ดูซอร์สก็จริง แต่ไม่ใช่ไลเซนส์โอเพนซอร์ส
ดูจากคำตอบต่าง ๆ แล้วข้อมูลนี้น่าจะเก่าไปแล้ว และตอนนี้โครงการน่าจะใช้ AGPL แล้ว
ขอแสดงความยินดีกับการเปิดตัว ขอให้ Ubicloud ประสบความสำเร็จยิ่งกว่าโปรเจกต์ก่อนหน้าของพวกเขาอย่าง Citus