ความลับของบริษัท SaaS: ทำไม Multitenancy จึงสำคัญ
(shomik.substack.com)"Multitenancy คือรากฐานที่ซ่อนอยู่ซึ่งทำให้ SaaS ขยายตัวได้อย่างยอดเยี่ยม"
- มาร์จินที่สูงและความสามารถในการขยายตัวที่ดูเหมือนไร้ขีดจำกัดของโมเดล SaaS คือเหตุผลที่ตลาดหุ้น / นักลงทุน / ผู้ก่อตั้งจำนวนมากกระโจนเข้าสู่พื้นที่นี้
- สิ่งที่ทำให้เกิดขึ้นได้ก็คือโครงสร้างพื้นฐาน โดยเฉพาะแนวคิดเรื่อง "Multitenancy"
- ปัจจุบันแทบทุกบริษัทใช้คลาวด์และ SaaS และหัวใจสำคัญของการสร้างโซลูชันคลาวด์ก็คือ Multitenancy
- Marc Benioff ผู้ก่อตั้ง Salesforce เคยกล่าวว่า "Multitenancy เป็นสิ่งจำเป็นสำหรับผู้ขาย SaaS ที่ต้องการประสบความสำเร็จ"
- แล้ว Multitenancy คืออะไรกันแน่ และทำไมมันจึงสำคัญ?
Multitenancy: การสร้างระบบรถไฟใต้ดิน
- มาทำความเข้าใจ Single Tenancy ก่อน
- ลูกค้าแต่ละรายใช้แอปพลิเคชันและฐานข้อมูลที่เป็นของตนเองโดยเฉพาะ
- กล่าวคือ ถ้ามีลูกค้า 100 ราย ก็จะมีเซิร์ฟเวอร์ 100 เครื่อง แอปพลิเคชัน 100 ชุด และฐานข้อมูล 100 ชุด
- Single Tenancy ต้องใช้เวลา เงิน และความพยายามอย่างมากในการดูแลรักษาเมื่อขยายในระดับใหญ่
- ถ้ามองในมุมการเดินทาง คุณอาจขับรถไปทำงานหรือนั่งรถไฟใต้ดินก็ได้
- การขับรถสะดวกก็จริง แต่ต้องจ่ายค่ารถ ค่าน้ำมัน ค่าที่จอดรถ รวมถึงต้นทุนจากการจราจรติดขัดและมลพิษเพิ่มเติมด้วย
- การนั่งรถไฟใต้ดินมีต้นทุนถูกกว่าเมื่อเทียบกัน ช่วยให้ถนนโล่งขึ้น และทำลายชั้นโอโซนน้อยลง
- หากพนักงานทั้ง 50,000 คนใน World Trade Center (WTC) ต่างขับรถไปทำงานทั้งหมด ระบบก็จะซับซ้อนวุ่นวายมาก
- เพราะเหตุนี้ Multitenancy แบบรถไฟใต้ดินจึงเกิดขึ้น เพื่อลดต้นทุน ลดค่าใช้จ่ายแฝง และลด "ความโกลาหล" ของสภาพแวดล้อมได้อย่างมาก
ทำไมต้องเป็นตอนนี้?
- เหตุผลของการเปลี่ยนไปใช้รถไฟใต้ดินคืออะไร? ถ้ามันดีขนาดนั้น แล้วทำไมก่อนหน้านี้ถึงไม่เลือกใช้?
- คำตอบอยู่ที่ "คลาวด์" ความนิยมของ Cloud Computing และธุรกิจ SaaS กำลังเติบโตแบบก้าวกระโดด
- หากดูตลาดสาธารณะ จะเห็นว่าบริษัทที่เคยขายผลิตภัณฑ์แบบ Self-hosted กำลังหันไปสู่คลาวด์อย่างรวดเร็ว
- บริษัทอย่าง Atlassian, Autodesk, Elastic และ Microsoft ต่างนำเสนอโซลูชันแบบ Cloud-hosted และทำรายได้เติบโตแบบก้าวกระโดด
- Atlassian เพิ่มลูกค้าใหม่มากกว่า 10,000 รายในไตรมาสที่ผ่านมาเพียงไตรมาสเดียว หากต้องดูแลลูกค้า 10,000 รายด้วย Single Tenancy บริษัทจะเผชิญความยากลำบากจากงานวิศวกรรมเฉพาะราย การจัดการทรัพยากร ความซับซ้อน และการขาดแคลนบุคลากรที่จะมาแก้ปัญหาธุรกิจหลัก
- ดังนั้นสตาร์ตอัประยะเริ่มต้นอาจเลือกเริ่มจากสภาพแวดล้อม Single Tenancy แบบ 'Quick-and-Dirty' (ทำเร็ว แบบง่าย ๆ) ได้ แต่เมื่อมีขนาดใหญ่ขึ้นและเริ่มเติบโต ก็จะต้องเผชิญกับหนี้ทางเทคนิคที่หลีกเลี่ยงไม่ได้ ซึ่งแก้ได้ด้วยสภาพแวดล้อม Multitenant เท่านั้น
- เมื่อ Cloud Computing และธุรกิจ SaaS เติบโตขึ้น ค่าใช้จ่ายแฝงของโซลูชัน Single Tenant ก็เพิ่มขึ้น และความต้องการ Multitenancy ก็เพิ่มขึ้นเช่นกัน
ข้อดีของ Multitenancy
- Multitenancy มอบเวทมนตร์หลายอย่างให้กับผู้ขาย SaaS
- ความสามารถในการแชร์โครงสร้างพื้นฐานร่วมกันตลอดฐานลูกค้านั้นถือเป็นตัวเปลี่ยนเกม
- และข้อดีของ Multitenancy ไม่ได้มีแค่เรื่องสเกลเท่านั้น แต่ยังมีข้อได้เปรียบสำคัญอื่น ๆ อีก
กำไรจากการขาย (Margins)
- การใช้โครงสร้างพื้นฐานร่วมกันส่งผลโดยตรงต่อกำไรของผู้ให้บริการ ยิ่งใช้โครงสร้างพื้นฐานมากเท่าไร ผลตอบแทนก็ยิ่งดีขึ้น
- Multitenant ต้องใช้ทรัพยากรน้อยกว่า ทั้งในด้านบุคลากรและต้นทุนซอฟต์แวร์/ฮาร์ดแวร์ ทั้งทางตรง (ในมุมต้นทุนสินค้าที่ขาย) และทางอ้อม (ในแง่ที่บุคลากรหลักสามารถนำพลังงานไปโฟกัสเรื่องอื่นได้)
- ส่งผลให้กำไรรวมสูงขึ้น และท้ายที่สุดก็สร้างกระแสเงินสดอิสระ (Free Cash Flow) ซึ่งนำไปสู่การได้มูลค่าประเมินในตลาดที่สูงขึ้น
การมองเห็น (Visibility)
- การใช้ Multitenancy มีข้อได้เปรียบมากในการทำความเข้าใจประสิทธิภาพของโครงสร้างพื้นฐาน หรือดูว่าต้นทุนถูกสะท้อนไปยังกลุ่มลูกค้าเฉพาะหรือไม่
- ข้อมูลควรถูก query ได้ทั้งในภาพรวมและแยกตามลูกค้า
- ในโครงสร้างพื้นฐานแบบ Single Tenant ข้อมูลของลูกค้ากระจัดกระจายอยู่หลายแห่ง ทำให้การวิเคราะห์ตัวชี้วัดแบบ Cross-Customer ทำได้ยากมาก
- แต่ในโครงสร้างพื้นฐานแบบ Multitenant คุณสามารถมองเห็นฐานลูกค้าทั้งหมดและตรวจสอบแนวโน้มมหภาคได้
- สิ่งนี้ตรวจสอบได้ในระดับ logging, ระดับ DB หรือระดับ Application Performance Monitoring และเป็นประโยชน์อย่างมากต่อ Cross-Functional Team
ความซับซ้อนของ Multitenancy
- ทุก "เวทมนตร์" ย่อมมีปัญหา และ Multitenancy ก็ไม่ใช่ข้อยกเว้น
ปัญหาที่ 1: ความพร้อมใช้งานและเพื่อนบ้านเสียงดัง
- สมมติว่าอีคอมเมิร์ซรายหนึ่งเก็บข้อมูลลูกค้าทั้งหมดไว้ในฐานข้อมูลเดียว โดยผู้ใช้ส่วนใหญ่ซื้อของเดือนละหนึ่งหรือสองชิ้น แต่มีผู้ใช้คนหนึ่งซื้อวันละ 5,000 ชิ้น
- หากฐานข้อมูลไม่แข็งแรงพอจะรับโหลดที่พุ่งขึ้นจากลูกค้ารายนี้ได้ ฐานข้อมูลทั้งหมดอาจล่มและทำให้ลูกค้ารายอื่นซื้อสินค้าไม่ได้
- นี่เป็นความท้าทายใหญ่ และนำไปสู่การตัดสินใจเรื่อง Data Partitioning
- Silo Partitioning (แยก DB ต่อ tenant) vs. Pooled Partitioning (แชร์ DB ระหว่าง tenant)
- Silo Partitioning อาจแก้ปัญหาของลูกค้าบางรายได้ แต่ก็จะย้อนกลับไปเจอปัญหาเดิมคือต้องจัดการอินสแตนซ์จำนวนมาก
- Pooled Partitioning ทำงานได้ดี แต่ถ้าลูกค้าคนหนึ่งสร้างโหลดจนเกิดปัญหา ก็อาจทำให้ระบบช้าหรือถึงขั้นล่มได้
ปัญหาที่ 2: ทรัพยากรที่ใช้ร่วมกันและความปลอดภัยของข้อมูล
- ลูกค้าทุกคนใช้ทรัพยากรร่วมกัน และเนื่องจากไม่มีมาตรฐานการติดตั้งใช้งาน Multitenant แบบเดียวตายตัว จึงอาจเกิดบั๊กทางเทคนิคที่ทำให้ข้อมูลข้ามกันระหว่าง tenant ต่าง ๆ ได้
- หากคุณให้บริการลูกค้าที่แข่งขันกันอยู่พร้อมกัน นี่อาจเป็นปัญหาที่อันตรายมาก
- ทีมเทคนิคต้องประเมินกฎหมาย Data Sovereignty และข้อกำหนดต่าง ๆ ที่มีผลต่อการแยก tenant
การแก้ความซับซ้อน
- Multitenant ได้กลายเป็นหนึ่งในเสาหลักสำคัญของแอปพลิเคชัน SaaS แต่ในการนำไปใช้งานจริงก็ยังมีความซับซ้อนอีกมากที่ต้องพิจารณา
- CEO ของ Cloudinary เน้นว่า "Multitenancy เป็นกุญแจสู่การบรรลุ Operational Excellence แต่การทำให้ถูกต้องต้องอาศัยความรู้และการลงทุนจำนวนมาก"
- Boldstart และ F2 (ผู้เขียนบทความนี้) ได้ลงทุนในสตาร์ตอัปแห่งหนึ่งที่กำลังแก้ปัญหา Multitenancy เหล่านี้อยู่ (ปัจจุบันยังอยู่ใน stealth mode)
- แม้ระบบ Multitenant จะมีเรื่องซับซ้อนมากมาย แต่เมื่อคิดถึงหนี้ทางเทคนิคที่เกิดขึ้นตอนขยายระบบ Single Tenant ก็แทบไม่ต้องลังเลอีกต่อไป
- เพราะการแก้หนี้ทางเทคนิคนี้ต้องใช้ทีมวิศวกรระดับแนวหน้า และทำให้ต้องใช้ทรัพยากรไปกับส่วนที่ไม่ใช่ธุรกิจหลัก
- สตาร์ตอัปที่ฉลาดจึงเลือกวางแผน สร้าง และดูแลสภาพแวดล้อมแบบ Multitenant ตั้งแต่แรกเริ่ม
ยังไม่มีความคิดเห็น