ownCloud Infinite Scale และ Nextcloud 28 ต่างก็สามารถให้บริการการซิงค์และแชร์ไฟล์แบบโฮสต์เองได้ แต่ทั้งสองระบบใช้สถาปัตยกรรมเซิร์ฟเวอร์ที่แตกต่างกันอย่างมาก ความแตกต่างนี้มีความสำคัญเมื่อคุณพยายามคาดการณ์แรงดันหน่วยความจำ ความหน่วงของคำขอ พฤติกรรมการปรับขนาด และปริมาณงานปรับแต่งที่การใช้งานจะต้องใช้
ข้อควรระวังที่สำคัญที่สุดคือ ไม่มีตัวเลขสากลที่เชื่อถือได้ เช่น “Infinite Scale ใช้ X MB ในขณะที่ Nextcloud 28 ใช้ Y MB” การใช้ RAM จะเปลี่ยนแปลงไปตามบริการที่เปิดใช้งาน จำนวนผู้ใช้พร้อมกัน งานเบื้องหลัง ระบบจัดเก็บข้อมูล จำนวนเวิร์กเกอร์ PHP การแคช การแสดงตัวอย่าง การผสานรวมกับ Office และแอปพลิเคชันต่างๆ เอกสารอย่างเป็นทางการยังให้คำแนะนำเกี่ยวกับหน่วยความจำที่แตกต่างกันสำหรับทั้งสองผลิตภัณฑ์ ดังนั้นการนำตัวเลขเหล่านั้นมาใช้เป็นเกณฑ์มาตรฐานโดยตรงจึงอาจทำให้เข้าใจผิดได้
นอกจากนี้ยังมีประเด็นเรื่องวงจรชีวิตผลิตภัณฑ์ด้วย Nextcloud 28 หรือที่รู้จักกันในชื่อ Hub 7 เปิดตัวในเดือนธันวาคม 2023 และสิ้นสุดการสนับสนุนในเดือนธันวาคม 2024 โดยเวอร์ชัน 28.x สุดท้ายคือ 28.0.14 และตั้งแต่เดือนตุลาคม 2026 เป็นต้นไป จะไม่ได้รับการแก้ไขข้อบกพร่องหรือการอัปเดตความปลอดภัยตามปกติอีกต่อไป ดังนั้น การเปรียบเทียบนี้จึงมีประโยชน์มากที่สุดสำหรับการทำความเข้าใจการติดตั้ง Nextcloud 28 ที่มีอยู่ หรือการวางแผนการย้ายข้อมูล ไม่ใช่สำหรับการแนะนำการติดตั้ง Nextcloud 28 ใหม่ โปรดดูตารางการบำรุงรักษาและการเผยแพร่เวอร์ชันอย่างเป็นทางการ ของ Nextcloud
เป็นการเปรียบเทียบสถาปัตยกรรมแบบง่ายๆ เพื่อแสดงให้เห็นว่าเหตุใดพฤติกรรมของ RAM จึงแตกต่างกันระหว่างสองแพลตฟอร์มนี้ ไม่ใช่การวัดประสิทธิภาพหรือการพิสูจน์ปริมาณงานที่แท้จริง
ความแตกต่างทางด้านสถาปัตยกรรมเป็นสาเหตุหลักที่ทำให้เกิดการประนีประนอมด้านประสิทธิภาพ
ownCloud Infinite Scale ซึ่งมักย่อว่า oCIS ในการกำหนดค่าและเอกสารประกอบ ถูกสร้างขึ้นเป็นชุดบริการ Go รันไทม์เริ่มต้นสามารถเริ่มบริการในตัวภายในกระบวนการเดียวและควบคุมดูแลด้วยตัวควบคุมแบบฝังตัว ownCloud กล่าวว่าการออกแบบนี้ช่วยลดการใช้หน่วยความจำ ในขณะที่บริการแต่ละรายการสามารถย้ายไปยังโหนดอื่นได้เมื่อจำเป็นต้องขยายขนาดการใช้งาน แพลตฟอร์มนี้ไม่ต้องการ PHP หรือฐานข้อมูลแอปพลิเคชันแบบดั้งเดิมสำหรับการทำงานหลัก ดูเอกสารสถาปัตยกรรม Infinite Scale อย่างเป็นทางการและภาพรวมการดูแลระบบ Infinite Scale ได้ที่นี่
Nextcloud 28 ใช้โมเดลเว็บแอปพลิเคชัน PHP ที่คุ้นเคย โดยทั่วไปแล้ว สแต็กสำหรับการใช้งานจริงจะประกอบด้วยเว็บเซิร์ฟเวอร์ เช่น Apache หรือ Nginx, ตัวประมวลผล PHP หรือ PHP-FPM, ฐานข้อมูลเชิงสัมพันธ์ที่รองรับ และโดยปกติแล้วจะมีระบบแคชหน่วยความจำ เอกสารของ Nextcloud เองแนะนำให้ใช้ APCu สำหรับการแคชในเครื่อง และ Redis สำหรับการแคชแบบกระจายและการล็อกไฟล์แบบธุรกรรมในการใช้งานระดับองค์กร ซึ่งทำให้ Nextcloud มีความยืดหยุ่นสูง แต่ก็หมายความว่างบประมาณหน่วยความจำทั้งหมดจะถูกกระจายไปยังกระบวนการและบริการอิสระหลายอย่าง แทนที่จะอยู่ในกระบวนการเซิร์ฟเวอร์เดียว
การใช้งาน RAM: ตัวเลขอย่างเป็นทางการหมายถึงอะไรกันแน่
| พื้นที่ | ownCloud ปรับขนาดได้ไม่จำกัด | Nextcloud 28 |
| คำแนะนำด้านหน่วยความจำที่เผยแพร่แล้ว | ตัวอย่างการใช้งาน Compose ของ ownCloud แนะนำให้ใช้พื้นที่อย่างน้อย 4-6 GB สำหรับการใช้งานตัวอย่างทั้งหมด | เอกสาร Nextcloud 28 ระบุว่าแต่ละกระบวนการต้องการ RAM ขั้นต่ำ 128 MB และแนะนำให้ใช้อย่างน้อย 512 MB ต่อกระบวนการ |
| ตัวเลขเหล่านั้นสามารถนำมาเปรียบเทียบกันได้โดยตรงหรือไม่? | ไม่ครับ ตัวเลขของ Infinite Scale นั้นแสดงถึงตัวอย่างการใช้งานที่รวมซอฟต์แวร์เพิ่มเติม เช่น ส่วนประกอบสำนักงานออนไลน์ ในขณะที่ตัวเลขของ Nextcloud นั้นคิดต่อกระบวนการทำงาน ไม่ใช่ต่อ RAM ทั้งหมดของเซิร์ฟเวอร์ |
| ตัวแปรหลัก | บริการที่เปิดใช้งาน, การผสานรวมสำนักงาน, โปรแกรมป้องกันไวรัส, ประเภทพื้นที่จัดเก็บข้อมูล, โครงสร้างบริการ, การทำงานพร้อมกัน | จำนวนเวิร์กเกอร์ PHP-FPM, แอปพลิเคชัน, การแสดงตัวอย่าง, บัฟเฟอร์ฐานข้อมูล, Redis/APCu, งาน Cron/งานเบื้องหลัง, การทำงานพร้อมกัน |
ตัวอย่างการใช้งานจริงของ ownCloud ในปัจจุบันแนะนำอย่างชัดเจนว่าควรใช้หน่วยความจำอย่างน้อย 4-6 GBและระบุถึงความต้องการหน่วยความจำเพิ่มเติมเมื่อเปิดใช้งานการสแกนไวรัส ตัวเลขดังกล่าวไม่ควรตีความว่า “oCIS เองใช้หน่วยความจำ 4-6 GB เสมอ” การตั้งค่าที่ระบุไว้ในเอกสารยังรวมถึงชุดโปรแกรม Office และส่วนประกอบอื่นๆ ที่จำเป็นด้วย โปรดดูตัวอย่างการใช้งานจริงของ Infinite Scale อย่างเป็นทางการ
Nextcloud 28 ใช้แนวทางที่แตกต่างออกไปในเอกสารข้อกำหนด โดยระบุว่าความต้องการ RAM จะแตกต่างกันอย่างมากตามผู้ใช้ แอปพลิเคชัน ไฟล์ และกิจกรรมต่างๆ จากนั้นจึงระบุขั้นต่ำที่ 128 MB และแนะนำที่ 512 MB ต่อกระบวนการซึ่งมีความสำคัญอย่างยิ่งสำหรับ PHP-FPM ที่อาจมีกระบวนการทำงานหลายกระบวนการทำงานพร้อมกัน เซิร์ฟเวอร์ที่กำหนดค่าไว้สำหรับการทำงานพร้อมกันสูงจึงสามารถสำรองหน่วยความจำได้มากกว่าค่าต่อกระบวนการที่ระบุไว้มาก ดูข้อกำหนดของระบบ Nextcloud 28ได้ที่นี่
แบบไหนมีแนวโน้มที่จะให้ความรู้สึกเบากว่าเมื่อต้องรับมือกับภาระงานที่เน้นไฟล์เป็นหลัก?
หากภาระงานหลักคือการตรวจสอบสิทธิ์ การเรียกดู การซิงค์ การอัปโหลด การดาวน์โหลด และการแชร์ รันไทม์ Go และการออกแบบบริการของ Infinite Scale สามารถลดภาระงานส่วนเกินที่เกี่ยวข้องกับสแต็กคำขอ PHP ได้ ownCloud ยังใช้โปรโตคอลไบนารี เช่น gRPC ภายในสำหรับส่วนต่างๆ ของการสื่อสารบริการ ในเชิงสถาปัตยกรรมแล้ว สิ่งนี้ทำให้ Infinite Scale มีแนวทางที่น่าเชื่อถือในการรองรับการทำงานพร้อมกันในระดับสูงโดยไม่ต้องเพิ่มกระบวนการทำงานของ PHP
นั่นไม่ได้หมายความว่าจะได้เปรียบเรื่องปริมาณงานโดยรวมเสมอไป ความหน่วงในการจัดเก็บข้อมูลอาจส่งผลต่อการทำงานของไฟล์ TLS และพร็อกซีแบบย้อนกลับเพิ่มภาระงาน พฤติกรรมของเมตาเดต้าขึ้นอยู่กับไดรเวอร์จัดเก็บข้อมูลที่เลือก และบริการเสริมต่างๆ ก็เปลี่ยนแปลงลักษณะการทำงาน เอกสารเกี่ยวกับการจัดเก็บข้อมูลของ ownCloud เองได้กล่าวถึงการเพิ่มประสิทธิภาพหน่วยความจำและประสิทธิภาพการทำงานที่แตกต่างกันสำหรับการจัดเก็บข้อมูลในเครื่อง NFS และการใช้งานที่ใช้ S3 ไว้อย่างชัดเจน โปรดดูที่ ข้อควรพิจารณาเกี่ยวกับการจัดเก็บข้อมูล ของInfinite Scale
Nextcloud 28 ยังสามารถทำงานได้ดีเมื่อปรับแต่งอย่างถูกต้อง เอกสารระบุว่าการแคชหน่วยความจำสามารถปรับปรุงประสิทธิภาพของเซิร์ฟเวอร์ได้อย่างมาก APCu ช่วยหลีกเลี่ยงการสร้างอ็อบเจ็กต์ PHP ที่ใช้งานบ่อยซ้ำๆ ในเครื่อง ในขณะที่ Redis สามารถจัดการข้อมูลแคชแบบกระจายและการล็อกไฟล์แบบธุรกรรมได้ สำหรับเซิร์ฟเวอร์ขององค์กรเพียงเครื่องเดียว Nextcloud 28 แนะนำให้ใช้ APCu สำหรับแคชในเครื่อง และ Redis สำหรับแคชแบบกระจายและการล็อก ดูเอกสารเกี่ยวกับการแคชหน่วยความจำของ Nextcloud 28เพิ่มเติม
หน่วยความจำ RAM ของ Nextcloud ถูกใช้ไปที่ไหนบ้าง
สำหรับ Nextcloud 28 นั้น “การใช้งาน RAM ของ Nextcloud” คือผลรวมของงบประมาณหลายส่วน ตัวประมวลผล PHP-FPM จะใช้หน่วยความจำตามโมดูล PHP ที่เปิดใช้งานและโค้ดแอปพลิเคชัน ฐานข้อมูลต้องการบัฟเฟอร์และหน่วยความจำสำหรับการเชื่อมต่อ Redis ใช้หน่วยความจำสำหรับวัตถุที่แคชไว้และการล็อก APCu จะเก็บแคชภายในในแต่ละสภาพแวดล้อม PHP การสร้างตัวอย่าง การรวมระบบป้องกันไวรัส การสนทนา การค้นหาข้อความแบบเต็ม และแอปพลิเคชันของบุคคลที่สามสามารถเพิ่มกระบวนการหรือกิจกรรมเบื้องหลังของตนเองได้
โมเดลนี้ช่วยให้ผู้ดูแลระบบมีกลไกการปรับแต่งมากมาย การลดขีดจำกัดของเวิร์กเกอร์ PHP-FPM สามารถช่วยให้เซิร์ฟเวอร์ขนาดเล็กทำงานต่อไปได้ภายใต้ข้อจำกัดของ RAM แต่คำขออาจติดคิวภายใต้ภาระงาน การเพิ่มเวิร์กเกอร์จะช่วยเพิ่มประสิทธิภาพการทำงานพร้อมกันจนกว่า CPU, RAM, การเชื่อมต่อฐานข้อมูล หรือ I/O จะกลายเป็นคอขวด การใช้ Redis สำหรับแคชภายในเครื่องสามารถประหยัดหน่วยความจำได้บ้างในสภาพแวดล้อมที่มีหน่วยความจำต่ำ แต่เอกสารของ Nextcloud เองระบุว่า APCu เร็วกว่าสำหรับการแคชภายในเครื่องเมื่อมี RAM เพียงพอ นั่นคือการแลกเปลี่ยนระหว่างประสิทธิภาพกับหน่วยความจำอย่างแท้จริง มากกว่าจะเป็นเพียงการตั้งค่าที่แนะนำเพียงอย่างเดียวสำหรับทุกโฮสต์
RAM ของ Infinite Scale อยู่ที่ไหน
Infinite Scale ประกอบด้วยบริการเชิงตรรกะจำนวนมาก แต่รันไทม์แบบฝังตัวสามารถจัดการบริการในตัวภายในกระบวนการเดียวและเรียกใช้แต่ละบริการในรูทีน Go ได้ ownCloud อธิบายว่านี่เป็นวิธีที่เป็นมิตรกับผู้ดูแลระบบในการจัดแพ็กเกจแพลตฟอร์ม ในขณะที่ยังคงอนุญาตให้แยกบริการแต่ละรายการสำหรับการใช้งานแบบกระจาย ตัวควบคุมแบบฝังตัวยังรีสตาร์ทบริการที่ล้มเหลว และมีการระบุไว้อย่างชัดเจนว่าช่วยลดการใช้หน่วยความจำเมื่อเทียบกับการเรียกใช้ทุกบริการภายใต้ตัวควบคุมภายนอก
การรวมทรัพยากรเข้าด้วยกันอาจทำให้เข้าใจพฤติกรรมการใช้ทรัพยากรบนโฮสต์เดียวได้ง่ายขึ้น แต่ไม่ได้ทำให้การใช้ RAM คงที่ การเพิ่ม Collabora หรือ OnlyOffice การสแกนไวรัส บริการยืนยันตัวตนภายนอก ส่วนประกอบที่ใช้ Redis หรือ NATS การประมวลผลภาพขนาดย่อ หรือแคชขนาดใหญ่ขึ้น จะทำให้การใช้ทรัพยากรเปลี่ยนแปลงไป การย้ายบริการไปยังคอนเทนเนอร์หรือพอด Kubernetes ที่แยกต่างหากยังสามารถเพิ่มค่าใช้จ่ายพื้นฐานในขณะที่ปรับปรุงการแยกส่วนและความสามารถในการขยายขนาดในแนวนอนได้
การเปรียบเทียบประสิทธิภาพตามปริมาณงาน
| ภาระงาน | ข้อได้เปรียบที่น่าจะเป็นไปได้ | ทำไม |
| อุปกรณ์ซิงค์ไฟล์ขนาดเล็กที่มีการเชื่อมต่อกับระบบอื่นๆ น้อย | มาตราส่วนอนันต์ | การลดจำนวนส่วนประกอบของเว็บสแต็กแบบดั้งเดิม และการไม่จำเป็นต้องมี PHP/ฐานข้อมูลสำหรับแพลตฟอร์มหลัก สามารถทำให้การทำงานง่ายขึ้นได้ |
| ระบบนิเวศของแอปพลิเคชันขนาดใหญ่และการใช้งานซอฟต์แวร์กลุ่มจำนวนมาก | เน็กซ์คลาวด์ | ระบบนิเวศของแอปพลิเคชัน PHP โดยรวมอาจมีความสำคัญมากกว่าประสิทธิภาพของเซิร์ฟเวอร์โดยตรง แม้ว่าการวางแผน RAM จะมีความสำคัญมากขึ้นก็ตาม |
| รองรับการทำงานพร้อมกันสูง พร้อมการดำเนินการไฟล์ที่คาดการณ์ได้ | Infinite Scale มีสถาปัตยกรรมที่น่าดึงดูด | บริการ Go และโมเดลบริการแบบขยายขนาดช่วยหลีกเลี่ยงการผูกการทำงานพร้อมกันโดยตรงกับกลุ่มตัวประมวลผล PHP ขนาดใหญ่ |
| โครงสร้างพื้นฐาน LAMP/LEMP ที่ได้รับการปรับให้เหมาะสมแล้ว | Nextcloud สามารถใช้งานได้ง่ายกว่า | ทีมที่มีทักษะอยู่แล้วในด้าน PHP-FPM, MariaDB/PostgreSQL, Redis และการปรับแต่งเว็บเซิร์ฟเวอร์ อาจเลือกใช้เทคโนโลยีที่คุ้นเคยนี้ |
| งบประมาณ RAM น้อยมาก | ขึ้นอยู่กับขอบเขตของฟีเจอร์ | ตัวเลขอย่างเป็นทางการจากทั้งสองผู้ผลิตไม่ได้บ่งชี้ว่าผู้ผลิตรายใดมี RAM รวมที่ดีที่สุด ควรตัดบริการเสริมที่ไม่จำเป็นออกและวัดปริมาณงานที่ใช้งานจริง |
วิธีการเปรียบเทียบอย่างยุติธรรม
หากประสิทธิภาพเป็นปัจจัยสำคัญ ควรทำการทดสอบประสิทธิภาพของทั้งสองผลิตภัณฑ์บนฮาร์ดแวร์เดียวกัน แทนที่จะอาศัยภาพหน้าจอจากชุมชนหรือตัวเลขหน่วยความจำเพียงอย่างเดียว ใช้ที่เก็บข้อมูลหรือแบ็กเอนด์เดียวกัน เส้นทางเครือข่าย วิธีการยุติ TLS ชุดไฟล์ทดสอบ จำนวนผู้ใช้ และพฤติกรรมของไคลเอ็นต์เดียวกัน วอร์มแคชก่อนบันทึกผลลัพธ์ในสภาวะคงที่ แต่ควรวัดพฤติกรรมการเริ่มต้นแบบเย็นแยกต่างหากด้วย
ตัวชี้วัดที่มีประโยชน์ ได้แก่ ค่ามัธยฐานและค่าเปอร์เซ็นไทล์ที่ 95 ของเวลาแฝงสำหรับการแสดงรายการไดเร็กทอรี การดำเนินการกับเมตาเดตา การอัปโหลดไฟล์ขนาดเล็ก การอัปโหลดไฟล์ขนาดใหญ่ การดาวน์โหลด และการสร้างการแชร์ จำนวนคำขอที่เสร็จสมบูรณ์ต่อวินาที หน่วยความจำที่ใช้งานอยู่ทั้งหมดในทุกกระบวนการที่เกี่ยวข้อง การใช้งาน CPU จำนวน IOPS ของพื้นที่จัดเก็บข้อมูล เวลาแฝงของฐานข้อมูลสำหรับ Nextcloud และผลกระทบของงานเบื้องหลัง ควรวัด RAM ที่ไม่ได้ใช้งานแยกต่างหากจาก RAM ที่ใช้งาน เนื่องจากระบบที่ดูเหมือนมีขนาดเล็กกว่าในขณะที่ไม่ได้ใช้งาน อาจจัดสรรหน่วยความจำมากขึ้นเมื่อมีการใช้งานพร้อมกัน
สำหรับ Nextcloud ให้รวมเว็บเซิร์ฟเวอร์, PHP-FPM, ฐานข้อมูล, Redis และบริการแอปพลิเคชันเพิ่มเติมใดๆ สำหรับ Infinite Scale ให้รวมบริการ oCIS รวมถึงพร็อกซีแบบย้อนกลับ, ส่วนประกอบการยืนยันตัวตน, การผสานรวมกับ Office, แคช และบริการที่เกี่ยวข้องกับการจัดเก็บข้อมูล มิเช่นนั้น ผลลัพธ์จะกลายเป็นการเปรียบเทียบสถาปัตยกรรมที่ปลอมตัวเป็นเกณฑ์มาตรฐาน
คุณควรเลือกอันไหน?
เลือก ownCloud Infinite Scaleเมื่อคุณให้ความสำคัญกับแพลตฟอร์มที่ทันสมัยและเน้นการจัดการไฟล์ คุณชื่นชอบสถาปัตยกรรมบริการที่ใช้ภาษา Go และต้องการหลีกเลี่ยงรูปแบบการทำงานแบบใช้ PHP worker บวกกับฐานข้อมูลเชิงสัมพันธ์ที่จำเป็นสำหรับเซิร์ฟเวอร์หลัก เหมาะอย่างยิ่งสำหรับองค์กรที่วางแผนการขยายขนาดบริการในแนวนอน หรือสภาพแวดล้อมการแชร์ไฟล์ขนาดใหญ่
เลือกเวอร์ชัน Nextcloud ที่ได้รับการสนับสนุนเมื่อระบบนิเวศของแอป Nextcloud การผสานรวมกับกลุ่มงาน ความรู้ด้านการบริหารจัดการที่มีอยู่ หรือความเข้ากันได้ของแอปพลิเคชันมีความสำคัญมากกว่าการลดเลเยอร์การทำงานให้เหลือน้อยที่สุด หากคุณกำลังใช้งาน Nextcloud 28 อยู่ การปรับแต่งประสิทธิภาพอาจช่วยได้ในระยะสั้น แต่ระยะเวลาการใช้งานด้านความปลอดภัยเป็นเหตุผลที่สำคัญกว่าในการวางแผนอัปเกรด เนื่องจากเวอร์ชัน 28 ไม่ได้รับการสนับสนุนอีกต่อไปตั้งแต่เดือนธันวาคม 2024
หากการตัดสินใจนั้นเกี่ยวข้องกับ RAM โดยเฉพาะ ข้อกำหนดที่ผู้จำหน่ายทั้งสองรายเผยแพร่ออกมานั้นไม่สามารถระบุผู้ชนะได้อย่างชัดเจน สถาปัตยกรรมของ Infinite Scale ตัด PHP และฐานข้อมูลแอปพลิเคชันแบบดั้งเดิมออกจากสแต็กหลัก และได้รับการออกแบบมาโดยเจตนาเพื่อการทำงานของบริการที่มีประสิทธิภาพ ในขณะที่ Nextcloud มีการควบคุมการแคชที่ครบครันและสามารถกำหนดค่าการทำงานพร้อมกันของ PHP ได้อย่างละเอียด ทางเลือกที่เหมาะสมกว่าคือการเปรียบเทียบสแต็กการผลิตทั้งหมดที่คุณตั้งใจจะใช้งานจริง โดยใช้ปริมาณงานเดียวกัน และวัด RAM ของระบบทั้งหมดแทนที่จะวัดเพียงกระบวนการเดียว