รองรับการใช้งานหลายจุด


10

อะไรคือความท้าทายโดยทั่วไปที่เกิดขึ้นเมื่อแปลงแอพผู้เช่ารายเดียวเป็นแอพหลายคน? ความปลอดภัยและการแยกข้อมูลทำให้ฉันเป็นสิ่งที่สำคัญที่สุด บางคนมีอะไรบ้าง

ฉันเป็นหนึ่งในสถาปนิกสำหรับความพยายามอัตโนมัติที่สำคัญพอสมควรและในอดีตเป็นเพียง บริษัท ของเราที่ใช้มัน เราต้องการทำให้ผู้อื่นสามารถใช้งานได้เช่นกัน ทุกครั้งที่เราพูดถึง "ทำให้เป็น multitenant" การสนทนาจะหมุนรอบการรักษาผู้ใช้ด้วยหนึ่งผู้เช่าห่างจากข้อมูลที่ผู้เช่ารายอื่นเป็นเจ้าของและทำให้แน่ใจว่าผู้ใช้ที่มีผู้เช่ารายหนึ่งไม่สามารถ (ไม่ว่าจะโดยเจตนาหรือไม่ตั้งใจ) สภาพแวดล้อมของผู้เช่า สิ่งที่ฉันสงสัยคือการแยกความปลอดภัย / ข้อมูลเป็นเพียงข้อกังวลสำคัญที่นี่หรือว่ามีข้อกังวลหลักอื่น ๆ ที่เราไม่ได้คิด


ทางออกที่ง่ายที่สุด? อินสแตนซ์ใหม่ของทั้งระบบรวมถึงฮาร์ดแวร์ว่างจากศูนย์หนึ่งระบบใหม่ต่อผู้เช่า หากระบบและข้อมูลมีค่ามากนี่อาจเป็นตัวเลือกที่ดีทีเดียว หากคุณไม่ชอบฮาร์ดแวร์ใหม่สำหรับแต่ละอินสแตนซ์ - ใช้การจำลองเสมือน มันอาจจะไม่ได้ผลที่สุด แต่แน่นอนว่าจะช่วยลดอาการปวดหัวได้
เอสเอฟ

อาจมาจากมุมมองการออกแบบซึ่งเป็นวิธีที่ง่ายที่สุด แต่จากมุมมองของผู้ดูแลระบบดูเหมือนจะไม่เป็นเช่นนั้น อย่างน้อยผู้ดูแลระบบของเราไม่ได้ตื่นเต้นกับข้อเสนอนี้มากนัก (และใช่เราใช้ VMs) อีกวิธีหนึ่งในการจัดการ (การตรวจสอบการปรับใช้ ฯลฯ ) เรากำลังมองหาวิธีที่จะทำให้สิ่งนี้จัดการได้ง่ายขึ้นเพื่อแยกทางกายภาพออกจากที่นี่ วิธีการดูเหมือนจะแลกเปลี่ยนความเรียบง่าย dev สำหรับความเรียบง่ายของผู้ดูแลระบบ ... ?

คำตอบ:


11

นอกจากไซโลข้อมูลคุณอาจพบปัญหากับ

  1. ความพร้อมใช้งาน - ด้วยผู้เช่ารายเดียวพวกเขาสามารถทำ DoS เองได้ แต่แม้ว่าข้อมูลจะถูกปิดกั้นอย่างเหมาะสมผู้เช่าก็ยังสามารถใช้ทรัพยากรได้หมด
  2. การบันทึก - ข้อความบันทึกทั้งหมดถือว่าผู้เช่ารายเดียว เว้นแต่ว่าคุณเก็บบันทึกไซโลต่อผู้เช่าข้อความบันทึกของคุณอาจมีประโยชน์น้อยลง
  3. การทำงานพร้อมกัน - แอพผู้เช่ารายเดียวอาจทำงานภายใต้การโหลดปานกลางหรือการช่วงชิงระดับสูงสำหรับการล็อคน้อยอาจทำให้การดำเนินงานบางอย่างเป็นไปอย่างต่อเนื่อง หากล็อคถูกคูณกับผู้เช่าคุณอาจเริ่มเห็น interleaving ของการดำเนินการที่ไม่เคยเกิดขึ้นมาก่อน สภาพการแข่งขันที่ไม่น่าจะเป็นไปได้มากในตอนนี้อาจจะปรากฏขึ้น
  4. แหล่งที่มาใหม่ของการช่วงชิงทรัพยากร - ซึ่งก่อนหน้านี้คุณอาจมีซ็อกเก็ต n และซ็อกเก็ต m ไฟล์ตอนนี้คูณต่อผู้เช่า
  5. ความเข้ากันได้ของการกำหนดค่า / ความเข้ากันได้ย้อนหลัง - ซึ่งก่อนที่คุณจะสามารถล้าสมัยส่วนประกอบในขณะที่คุณทำการแทนที่คุณอาจมีผู้เช่ารายหนึ่งที่ต้องการส่วนประกอบและผู้เช่ารายหนึ่งเรียกร้องให้ส่วนประกอบเก่าที่เข้ามาแทนที่
  6. เป้าหมายหมายศาล - ขณะนี้คุณเป็นเป้าหมายหมายศาลสำหรับปัญหาที่เกี่ยวข้องกับ บริษัท ของคุณ ด้วยผู้เช่าหลายรายคุณอาจต้องตอบคำขอตามหมายศาลถึงแม้ว่าคุณจะไม่ใช่คู่กรณีในการดำเนินคดี

บางส่วนของสิ่งเหล่านี้สมมติว่าคุณกำลังเรียกใช้ผู้เช่าทั้งหมดในพื้นที่ที่อยู่เดียวกัน (เครื่องหรือคลัสเตอร์) หากผู้เช่าแต่ละรายกำลังใช้งานซอฟต์แวร์ของคุณบนฮาร์ดแวร์ของพวกเขาคุณสามารถทำตามขั้นตอนข้างต้นและเพิ่ม:

  1. ความยากลำบากในการเข้าถึงเครื่องเพื่อตรวจแก้จุดบกพร่อง
  2. ขอการสนับสนุนสำหรับรุ่นที่เก่ากว่า
  3. ร้องขอให้กำหนดค่าผู้รับเหมาบุคคลที่สาม
  4. ควบคุมฮาร์ดแวร์ที่ใช้น้อยกว่า
  5. ควบคุมวงจรการแพตช์ / อัปเดตของระบบปฏิบัติการน้อยลง

1

ปัญหาที่ใหญ่ที่สุดในความเห็นของฉันคือการปรับแต่ง สิ่งนี้จะเกิดขึ้นเป็นประจำหากคุณขายแอปพลิเคชันธุรกิจให้กับองค์กร มันอาจแตกต่างจากสิ่งที่ง่ายเหมือนที่ลูกค้าทุกคนต้องการสกินของตัวเองเพื่อความสามารถในการกำหนดค่าฟิลด์กฎระเบียบแบบฟอร์มและรายงานเพิ่มเติม ระดับของการปรับแต่งที่คุณต้องสนับสนุนมีส่วนสำคัญในสถาปัตยกรรม


1

คำตอบของไมค์นั้นดีมากและมีหลายประเด็นที่เกือบจะแสดงถึงความซับซ้อนของพวกเขาเนื่องจากพวกมันสั้นแค่ไหน

สิ่งหนึ่งที่ฉันจะเพิ่มคือคุณควรมีเครื่องมือการจัดการที่ดีสำหรับการสร้าง (และในภายหลังการจัดการ) ผู้เช่ารายใหม่ ขึ้นอยู่กับสถาปัตยกรรมทางกายภาพที่คุณไปด้วยซึ่งอาจอยู่ห่างจากเรื่องเล็กน้อยและเป็นสิ่งที่มักถูกมองข้าม ประโยชน์ของซอฟต์แวร์ในฐานะผลิตภัณฑ์บริการจะเกิดขึ้นจริงเมื่อมีผู้เช่าจำนวนมากเท่านั้นดังนั้นความพยายามจำนวนหนึ่งควรเข้ามามีส่วนร่วมในสิ่งนี้

เพื่อขยายคำตอบของศรีราม; การปรับแต่งต่อผู้เช่านั้นค่อนข้างห้ามทุกสิ่งที่ผู้เช่าอาจต้องการเปลี่ยนควรกำหนดค่าได้ เช่นหากโซลูชันของคุณไม่รองรับการเพิ่มฟิลด์ข้อมูลในพื้นที่สำคัญอย่างน้อยสองสามอย่างคุณอาจถูกน้ำท่วมด้วยคำขอปรับแต่ง มันเป็นหนึ่งในไม่กี่กรณีที่เล็ก ๆ น้อย ๆ ตรงไปตรงมาไม่ซับซ้อนเพิ่มเติมจ่ายจริงปิด (ขอบอกว่ามันไปกับ YAGNI หรืออย่างน้อยระดับของการกำหนดค่านี้เกือบจะเป็นความต้องการที่สำคัญเพื่อให้คุณมีจะต้องการมัน)


ทำไมการปรับแต่ง "ต้องห้าม"? มันสามารถทำได้อย่างแน่นอนในทางเทคนิค มีรูปแบบที่แตกต่างกันมากมายที่จะอนุญาตให้นำระบบหลักกลับมาใช้ใหม่สำหรับผู้เช่าหลายคนในขณะที่ยังคงให้ชิ้นส่วนที่กำหนดเองสำหรับผู้เช่ารายบุคคล หากลูกค้ายินดีจ่ายให้คุณสำหรับการปรับแต่งมันดูเหมือนจะสมเหตุสมผลในการพิจารณา มีผลิตภัณฑ์หลายรายการหลายรายการที่มีการปรับแต่งต่อลูกค้าด้วยเหตุผลนี้ เป็นจิตวิญญาณของ YAGNI IMO ที่จะอนุญาตให้มีการขยายและไม่ใช่ค่าเริ่มต้นที่ทำให้ทุกอย่างสามารถกำหนดค่าได้
RationalGeek

1
ฉันหมายถึงซอฟต์แวร์เป็นการใช้งานบริการโดยทั่วไป (จาก "หลายผู้เช่า") แน่นอนว่าสามารถทำได้ในทางเทคนิค แต่ขัดกับพื้นฐานของ SaaS ในด้านการเงินคุณจะประสบความสำเร็จในต้นทุนที่ต่ำลงด้วยการแบ่งปันการใช้งานและโครงสร้างพื้นฐานสำหรับผู้เช่าหลายราย สิ่งนี้ช่วยให้คุณสามารถนำเสนอผลิตภัณฑ์ของคุณในราคาที่ต่ำกว่าจึงดึงดูด "หางยาว" ของตลาด (ผู้คนจำนวนมากเต็มใจจ่ายเพียงเล็กน้อยเท่านั้น) คุณสามารถบำรุงรักษาระบบได้ 5 สาขา แต่ไม่ใช่ 15,000 และนั่นคือสิ่งที่ SaaS ตั้งเป้าไว้
Daniel B

ในระดับองค์กรฉันเห็นผู้ขาย SaaS บ่อยครั้งซึ่งยินดีที่จะทำการปรับแต่งที่สำคัญให้กับรหัสของพวกเขาเพื่อที่จะได้ลูกค้า เมื่อลูกค้าจ่ายตัวเลข 6 หรือ 7 ตัวสำหรับบริการนี่อาจเป็นรูปแบบธุรกิจที่สมเหตุสมผล
RationalGeek

ใช่ในกรณีเหล่านั้นฉันเดาอย่างนั้น การเปลี่ยนแปลงส่วนใหญ่ที่ฉันเคยเห็นถูกนำไปใช้เป็นคุณสมบัติที่กำหนดค่าได้ใหม่ซึ่งถูกปิดใช้งานสำหรับลูกค้าที่มีอยู่แล้ว ฉันคิดว่าปัญหาคือเมื่อลูกค้า 3 หรือ 4 คนแรกได้รับการดูแลเป็นพิเศษเพราะการแก้ปัญหายังไม่เสร็จ การแก้ปัญหานั้นจบลงที่เฉพาะเจาะจงมากเกินไปและสร้างวัฒนธรรมของ "ตกลงเราจะทำการแฮ็กมันใน" แต่ใช่ฉันเห็นด้วยกับความคิดเห็นของคุณเกี่ยวกับลูกค้ารายใหญ่
Daniel B

นี่คือความแตกต่างที่เป็นประโยชน์ที่พวกคุณกำลังทำกัน ฉันคิดว่าแนวคิดเดียวกันอาจนำไปใช้กับการจัดการได้เช่นกัน multitenancy ของเราอาจตั้งเป้าหมายที่ลูกค้าที่มีขนาดค่อนข้างใหญ่น้อยกว่าลูกค้าที่อยู่ไกล หากจุดประสงค์หลักของการใช้งานหลายจุดก็คือการจับหางยาวมันอาจไม่ใช่วิธีที่เหมาะสมสำหรับเรา ขอบคุณสำหรับภาพสะท้อนเหล่านี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.