คำถามติดแท็ก architecture

การออกแบบระดับสูงและคำอธิบายของระบบซอฟต์แวร์ การออกแบบสถาปัตยกรรมกลั่นรายละเอียดของการใช้งานอัลกอริทึมและการแสดงข้อมูลเพื่อมุ่งเน้นการโต้ตอบของส่วนประกอบ "กล่องดำ"

1
Futures / Monads vs Events
ในกรอบแอปพลิเคชันเมื่อผลกระทบต่อประสิทธิภาพการทำงานสามารถถูกเพิกเฉยได้ (10-20 เหตุการณ์ต่อวินาทีสูงสุด) อะไรคือการบำรุงรักษาและความยืดหยุ่นในการใช้เป็นสื่อที่ต้องการสำหรับการสื่อสารระหว่างโมดูล - เหตุการณ์หรืออนาคต / สัญญา / Monads ? บ่อยครั้งที่มีการกล่าวกันว่ากิจกรรม (pub / sub, ผู้ไกล่เกลี่ย) อนุญาตให้มีเพศสัมพันธ์แบบหลวม ๆ - แอปที่บำรุงรักษาได้ดีกว่า ... ประสบการณ์ของฉันปฏิเสธสิ่งนี้: เมื่อคุณมีเหตุการณ์มากกว่า 20 เหตุการณ์ - การแก้ไขข้อบกพร่องกลายเป็นเรื่องยาก เพราะมันยากมากที่จะเห็น: ใครเมื่อไหร่และทำไมใช้อะไร สัญญา (ฉันกำลังเข้ารหัสใน Javascript) มีความน่าเกลียดและโง่กว่าเหตุการณ์มาก แต่: คุณสามารถเห็นการเชื่อมต่อระหว่างการเรียกใช้ฟังก์ชั่นได้อย่างชัดเจนดังนั้นตรรกะของแอปพลิเคชันจะกลายเป็นสิ่งที่ตรงไปตรงมามากขึ้น สิ่งที่ฉันกลัว แม้ว่าจะเป็นสัญญาที่จะนำการแต่งงานที่ยากขึ้นกับพวกเขา ... ป.ล. : คำตอบไม่จำเป็นต้องอิงจาก JS ประสบการณ์จากภาษาอื่น ๆ ที่ใช้งานได้ดี

3
สถาปัตยกรรมที่ดีที่สุดสำหรับแอปพลิเคชัน ASP.NET WebForms
ฉันเขียนพอร์ทัล ASP.NET WebForms สำหรับลูกค้า โครงการมีการพัฒนามากกว่าการวางแผนและโครงสร้างอย่างเหมาะสมตั้งแต่ต้น ดังนั้นรหัสทั้งหมดจะถูกบดเข้าด้วยกันภายในโครงการเดียวกันและไม่มีเลเยอร์ใด ๆ ตอนนี้ไคลเอนต์มีความสุขกับการใช้งานดังนั้นฉันต้องการ refactor รหัสเพื่อที่ฉันจะมั่นใจในการเปิดตัวโครงการ เนื่องจากมีหลายวิธีที่แตกต่างกันในการออกแบบสถาปัตยกรรมฉันต้องการความคิดเห็นเกี่ยวกับวิธีการที่ดีที่สุด หน้าที่การทำงาน พอร์ทัลอนุญาตให้ผู้ดูแลระบบกำหนดค่าเทมเพลต HTML "พันธมิตร" อื่น ๆ ที่เกี่ยวข้องจะสามารถแสดงเทมเพลตเหล่านี้ได้โดยการเพิ่มรหัส IFrame ไปยังเว็บไซต์ของพวกเขา ภายในเทมเพลตเหล่านี้ลูกค้าสามารถลงทะเบียนและซื้อผลิตภัณฑ์ API ได้รับการดำเนินการโดยใช้ WCF เพื่อให้ บริษัท ภายนอกสามารถเชื่อมต่อกับระบบได้ ส่วนผู้ดูแลระบบช่วยให้ผู้ดูแลระบบสามารถกำหนดค่าฟังก์ชันการทำงานต่างๆและดูรายงานสำหรับพันธมิตรแต่ละราย ระบบจะส่งใบแจ้งหนี้และอีเมลแจ้งเตือนไปยังลูกค้า สถาปัตยกรรมปัจจุบัน ขณะนี้ใช้ EF4 เพื่ออ่าน / เขียนไปยังฐานข้อมูล วัตถุ EF ถูกใช้โดยตรงภายในไฟล์ aspx สิ่งนี้อำนวยความสะดวกในการพัฒนาอย่างรวดเร็วในขณะที่ฉันเขียนไซต์ แต่ก็อาจยอมรับไม่ได้ที่จะทำให้มันเป็นแบบนั้นเพราะมันเชื่อมต่อฐานข้อมูลกับ UI อย่างแน่นหนา ตรรกะทางธุรกิจที่เฉพาะเจาะจงได้รับการเพิ่มลงในคลาสบางส่วนของวัตถุ EF คำถาม เป้าหมายของการปรับโครงสร้างใหม่จะทำให้ไซต์สามารถปรับขนาดได้บำรุงรักษาได้ง่ายและปลอดภัย สถาปัตยกรรมแบบไหนที่ดีที่สุดสำหรับสิ่งนี้? โปรดอธิบายสิ่งที่ควรอยู่ในแต่ละเลเยอร์ไม่ว่าฉันจะใช้รูปแบบของ DTO …

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

4
เป็นความคิดที่ดีกว่าหรือไม่ที่จะเรียกแอปพลิเคชันบรรทัดคำสั่งภายนอกหรือเพื่อปรับตรรกะภายในของแอปพลิเคชัน
ฉันมีกระบวนการ "ขั้นตอน" ที่เชื่อมโยงเครื่องมือต่างๆที่มีอยู่เข้าด้วยกันเพื่อทำให้เวิร์กโฟลว์เป็นแบบอัตโนมัติ สำหรับขั้นตอนใดขั้นตอนหนึ่งมีเครื่องมือบรรทัดคำสั่งที่มีอยู่แล้วซึ่งทำหน้าที่เป็นเนื้อสัตว์ของขั้นตอนที่ต้องทำ เครื่องมือ CLI ภายนอกเป็นแบบ java และไปป์ไลน์ของฉันดังนั้นจึงเป็นไปได้ที่จะรวมเครื่องมือเข้ากับขั้นตอนไปป์ไลน์โดยตรง แต่เครื่องมือมีความซับซ้อนมาก 37 ตัวเลือกการตั้งค่าสถานะ) คำถามคือมันเป็นความคิดที่ดีกว่าที่จะเพียงแค่โทรออกและเรียกใช้กระบวนการภายนอกหรือจะเป็นการดีกว่าที่จะรวมรหัสภายนอกภายในแอปพลิเคชันของฉัน อะไรคือข้อดี / ข้อเสียของการบูรณาการกับการเรียกกระบวนการภายนอก?

7
มีแนวปฏิบัติที่ดีที่สุดเกี่ยวกับการส่งมอบจากสถาปัตยกรรมเพื่อการพัฒนาหรือไม่?
เรากำลังมองหาการปรับปรุงกระบวนการในการส่งมอบงานจากสถาปัตยกรรมเพื่อการพัฒนา ที่ปลายด้านหนึ่งของสเกลนั้นไม่มีคำแนะนำด้านสถาปัตยกรรมที่คุณเสี่ยงต่อความสับสนวุ่นวายโดยนักพัฒนาแต่ละคนทำสิ่งที่เขาต้องการ ในอีกด้านหนึ่งของสเกลที่ทุกอย่างมีการระบุสเปคใช้เวลานานกว่าการพัฒนาและคุณเสี่ยงที่จะมีงานพัฒนาที่น่าเบื่อมาก มีใครพบพื้นกลางที่เหมาะสมระหว่างสุดขั้วเหล่านี้หรือไม่? คุณส่งมอบสิ่งประดิษฐ์ชิ้นใดเพื่อการพัฒนา ตัวอย่างเช่น: โมดูลโครงสร้างคลาสหรือไดอะแกรมลำดับ

4
LINQ กับ Data Access Layer
ฉันสอนตัวเองอยู่เสมอเพื่อจัดการรหัสการเข้าถึงข้อมูลใน 'เลเยอร์' แยกจากกันอย่างสมบูรณ์เพื่อตรรกะทางธุรกิจและรหัส UI ของฉัน นี้ได้เสมอสถาปัตยกรรมที่ดีมากสำหรับผมและใด ๆ 'กฎ' หรือการปฏิบัติที่ดีที่สุดที่ฉันเห็นยังคงจัดการเพื่อให้พอดีกับรูปแบบของการเข้ารหัสนี้โดยเฉพาะอย่างยิ่งSingle รับผิดชอบหลักการ สำหรับโครงการบ้านส่วนใหญ่ของฉันฉันจะใช้ ORM ของฉันเองที่ฉันสร้างขึ้นซึ่งฉันตั้งใจจะทำโอเพ่นซอร์สเสมอ อย่างไรก็ตามตั้งแต่นั้นมา LINQ ก็พร้อมใช้งานซึ่งคล้ายกับวิธีการออมของฉัน (แต่ .. ดีกว่า) ก่อนหน้านี้ฉันไม่สามารถทำอะไรกับ ORM ของฉันที่ฉันไม่สามารถทำได้กับ LINQ (ยกเว้นบิตของการรวม REST) ดังนั้นคำถามของฉันคือ LINQ เป็น Data Access Layer ใหม่ของฉันหรือไม่ ฉันต้องการเลเยอร์นี้อีกเลยหรือไม่ BLL ของฉันควรคุยกับ LINQ โดยตรงหรือไม่ หรือการปฏิบัติที่ไม่ดีนี้ยังคง? แก้ไข: คำถามเดิมหมายถึง LINQ to Entities แต่มีคำตอบที่น่าสนใจมากมายเกี่ยวกับ LINQ กับ SQL ประชาชนคิดอะไรกับทั้งคู่? ฉันรวบรวมกว่า LINQ …

1
การจัดระเบียบรหัสแอปพลิเคชัน Zend หลายรายการ
สำหรับปีที่ผ่านมาฉันได้ทำงานกับชุดของแอปพลิเคชันทั้งหมดตามกรอบ Zend และเน้นที่ตรรกะทางธุรกิจที่ซับซ้อนซึ่งแอปพลิเคชันทั้งหมดต้องเข้าถึงได้แม้ว่าจะไม่ได้ใช้ทั้งหมด (ง่ายกว่าการมีโฟลเดอร์ไลบรารีหลายโฟลเดอร์สำหรับแต่ละโฟลเดอร์ แอปพลิเคชันที่เชื่อมโยงทั้งหมดกับศูนย์ส่วนกลาง) โดยไม่ต้องลงรายละเอียดมากนักเกี่ยวกับโครงการที่เฉพาะเจาะจงฉันกำลังมองหาข้อมูล (ขณะที่ฉันกำลังทำงานในโครงการเพียงอย่างเดียว) ว่าฉันมี "จัดกลุ่ม" รหัสของฉันอย่างไร ฉันได้พยายามแยกมันออกมาในลักษณะที่จะลบการพึ่งพาได้มากที่สุด ฉันพยายามที่จะเก็บมันไว้อย่างอิสระเท่าที่ฉันจะทำได้อย่างมีเหตุมีผลดังนั้นในเวลา 12 เดือนเมื่อเวลาของฉันเพิ่มขึ้นใครก็ตามที่เข้ามาไม่มีปัญหาในการขยายสิ่งที่ฉันสร้างขึ้น โครงสร้างตัวอย่าง: applicationStorage\ (contains all applications and associated data) applicationStorage\Applications\ (contains the applications themselves) applicationStorage\Applications\external\ (application grouping folder) (contains all external customer access applications) applicationStorage\Applications\external\site\ (main external customer access application) applicationStorage\Applications\external\site\Modules\ applicationStorage\Applications\external\site\Config\ applicationStorage\Applications\external\site\Layouts\ applicationStorage\Applications\external\site\ZendExtended\ (contains extended Zend …

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

2
ต้องการคำแนะนำในการออกแบบปฏิสัมพันธ์ระหว่างส่วนต่าง ๆ ของแอปพลิเคชันของฉัน
ฉันกำลังพยายามออกแบบคลาส "หลัก" ของแอปพลิเคชัน Rich Desktop โดยใช้แพลตฟอร์ม NetBeans 7 แอปพลิเคชันนี้จะใช้บริการ HTTP และผ่าน "ระบบพุช" ผ่าน TCP จะได้รับข้อความ เราเป็น 3 ผู้พัฒนาและเราต้องการพัฒนาโมดูลในแบบคู่ขนาน แอปพลิเคชันจะถูกแบ่งเป็นชั้น (ข้อมูลธุรกิจการนำเสนอ) เราจะใช้รูปแบบการนำเสนอเพื่อแยกความรับผิดชอบออกจากกัน ข้อมูลที่ละเอียดบางอย่าง (ตัวอย่างเช่น bean Person) จะถูกแบ่งใช้โดยหลายหน้าจอ (และอาจแสดงบนหลายหน้าจอในเวลาเดียวกัน) ... เราสามารถพัฒนาแต่ละหน้าจอได้ แต่เราไม่รู้วิธีการจัดระเบียบแอปพลิเคชันทั้งหมดและกำหนดเนื้อหาแต่ละโมดูล ดังนั้นคุณมีคำแนะนำ (รูปแบบ / แนวปฏิบัติที่ดีที่สุด / แอพหนังสือ / ตัวอย่าง) เพื่อประสานงาน / จัดการการโต้ตอบภายในแอปพลิเคชันทั้งหมดหรือไม่ คำแนะนำเกี่ยวกับวิธีการกำหนดเนื้อหาของโมดูล? ขอบคุณ! ตัวอย่างเล็ก ๆ เพื่อแสดงสิ่งที่ฉันต้องการสร้าง: แอปพลิเคชัน Foo User Management …

5
คุณตอบคำถาม“ อธิบายสถาปัตยกรรมปัจจุบันของโครงการ” ในการสัมภาษณ์อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว แอปพลิเคชันที่ฉันกำลังทำงานอยู่ในปัจจุบันมีขนาดใหญ่ ไม่สามารถอธิบายได้ภายใน 15 นาที ครั้งสุดท้ายที่ฉันวาดแผนผังของชั้นเรียนและเชื่อมโยงกันอย่างไร แต่ฉันเห็นได้ว่าผู้สัมภาษณ์ไม่มีความสุขกับคำตอบ อะไรคือสิ่งสำคัญที่ควรเน้นเมื่อตอบคำถามนี้ ตัวอย่างเช่นวิธีการจัดการเซสชั่นวิธีการบรรลุความเพียรมีบางสิ่ง มีอะไรอีกบ้างที่ไม่ควรพลาด

6
ฉันจะวางแผนรหัสฐานได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน10 เดือนที่ผ่านมา ขณะนี้ฉันกำลังทำงานในโครงการที่กำลังจะเข้าถึงโค้ดมากกว่า 5,000 บรรทัด แต่ฉันไม่เคยคิดเลยเกี่ยวกับการออกแบบเลย ฉันควรใช้วิธีใดในการจัดโครงสร้างและจัดการรหัสของฉัน กระดาษและปากกา? แผนภาพ UML อื่น ๆ อีก?
10 architecture  uml 

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

4
การสร้างใหม่ในการออกแบบโดเมนขับเคลื่อน [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเพิ่งเริ่มทำงานในโครงการและเรากำลังใช้การออกแบบที่ขับเคลื่อนด้วยโดเมน (ตามที่กำหนดโดย Eric Evans ในการออกแบบที่ขับเคลื่อนด้วยโดเมน: การแก้ปัญหาความซับซ้อนในหัวใจของซอฟต์แวร์ฉันเชื่อว่าโครงการของเราเป็นผู้สมัครสำหรับการออกแบบนี้ แบบที่อีแวนส์อธิบายไว้ในหนังสือของเขา ฉันกำลังดิ้นรนกับความคิดในการปรับโครงสร้างใหม่อย่างต่อเนื่อง ฉันรู้ว่าการปรับโครงสร้างเป็นสิ่งจำเป็นในโครงการใด ๆ และจะเกิดขึ้นอย่างหลีกเลี่ยงไม่ได้เมื่อมีการเปลี่ยนแปลงซอฟต์แวร์ อย่างไรก็ตามจากประสบการณ์ของฉันการเปลี่ยนโครงสร้างเกิดขึ้นเมื่อความต้องการของทีมพัฒนาเปลี่ยนไปไม่ใช่ความเข้าใจในการเปลี่ยนแปลงโดเมน ("การปรับโครงสร้างใหม่เป็นความเข้าใจที่ลึกซึ้งยิ่งขึ้น" ตามที่ Evans เรียกว่า) ฉันกังวลมากที่สุดกับความก้าวหน้าในการทำความเข้าใจโมเดลโดเมน ฉันเข้าใจว่าทำการเปลี่ยนแปลงเล็กน้อย แต่จะเกิดอะไรขึ้นถ้าจำเป็นต้องเปลี่ยนแปลงโมเดลเป็นอย่างมาก เป็นวิธีที่มีประสิทธิภาพในการโน้มน้าวตัวเอง (และอื่น ๆ ) คุณควร refactor หลังจากที่คุณได้รับรูปแบบโดเมนที่ชัดเจนคืออะไร? ท้ายที่สุดการปรับโครงสร้างองค์กรเพื่อปรับปรุงโค้ดหรือประสิทธิภาพอาจแตกต่างอย่างสิ้นเชิงจากวิธีการแสดงออกในแง่ของรหัสภาษาที่แพร่หลาย บางครั้งดูเหมือนว่าไม่มีเวลาพอที่จะสร้างใหม่ โชคดีที่ SCRUM ปล่อยให้ตนเองฟื้นฟู ลักษณะซ้ำของ SCRUM ทำให้ง่ายต่อการสร้างชิ้นเล็ก ๆ และเปลี่ยนแปลงและมัน แต่เมื่อเวลาผ่านไปชิ้นส่วนนั้นจะใหญ่ขึ้นและจะเกิดอะไรขึ้นถ้าคุณมีความก้าวหน้าหลังจากชิ้นส่วนนั้นใหญ่มากจนยากที่จะเปลี่ยน มีใครทำงานในโครงการที่ใช้การออกแบบโดยใช้โดเมนหรือไม่ ถ้าเป็นเช่นนั้นจะเป็นการดีหากได้รับข้อมูลเชิงลึกเกี่ยวกับสิ่งนี้ ฉันต้องการได้ยินเรื่องราวความสำเร็จเป็นพิเศษเนื่องจาก DDD ดูเหมือนจะยากมาก ขอบคุณ!

2
สถาปนิกซอฟต์แวร์มีบทบาทอะไรในกระบวนการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ
ตามที่ฉันเข้าใจแล้วการพัฒนาทดสอบขับเคลื่อนนั้นเกี่ยวกับการเขียนการทดสอบเพื่อกำหนดข้อกำหนดของโปรแกรม (คุณสามารถแก้ไขฉันได้หากฉันทำผิด) หากมีผู้รับผิดชอบในการเขียนข้อมูลจำเพาะ (รวมถึง API สาธารณะ) สำหรับซอฟต์แวร์ (ลองเรียกเขาว่า Software Architect) นั่นหมายความว่าสถาปนิกซอฟต์แวร์ต้องเขียนการทดสอบทั้งหมดหรือไม่ หรือสถาปนิกซอฟต์แวร์เขียนข้อกำหนดแล้วส่งมอบให้กับนักพัฒนาเพื่อเขียนทดสอบหรือไม่ หรือคุณอนุญาตให้ข้อมูลจำเพาะเติบโตอย่างเป็นอินทรีย์โดยอนุญาตให้นักพัฒนาทั้งหมดเขียนการทดสอบของตนเองและลืมที่จะมี Software Architect?
10 architecture  tdd 

3
วิธีการออกแบบแอปพลิเคชันที่มีความพร้อมใช้งานสูง
ขณะนี้เรามีแอปพลิเคชันระดับ n คลาสสิก: DB / บริการเว็บ / ส่วนหน้า มันมีส่วนประกอบอื่น ๆ แต่มันเป็นเค้าโครงพื้นฐาน เราต้องการปรับปรุงความพร้อมใช้งานของแอปพลิเคชันด้วยเหตุผลหลัก 3 ข้อ: โฮสต์ของเราบางครั้งประสบปัญหาขัดข้อง (ตามที่พวกเขาทำทั้งหมด) และเราต้องการลดผลกระทบต่อลูกค้าของเราดังนั้นตัวอย่างเช่นพวกเขาจะเปิดดาต้าเซ็นเตอร์ B หากดาต้าเซ็นเตอร์ A หยุดทำงาน เมื่อเราอัปเกรดเวอร์ชันเราจะปิดเว็บไซต์เพื่อการบำรุงรักษาและโดยปกติจะใช้เวลาสองสามชั่วโมง (สคริปต์การย้ายข้อมูล ฯลฯ ) เราต้องการให้ผู้ใช้มีช่วงการเปลี่ยนภาพที่ราบรื่นยิ่งขึ้นโดยมีเวลาหยุดทำงานน้อยที่สุดเท่าที่จะเป็นไปได้ (พวกเขาใช้เซิร์ฟเวอร์ B ในขณะที่กำลังอัปเกรดเซิร์ฟเวอร์ A) Optionnaly ลูกค้าของเราตั้งอยู่ทั่วโลกและเราต้องการให้พวกเขามีประสบการณ์ที่ดีที่สุดเท่าที่จะเป็นไปได้แม้จะมีการเชื่อมต่อเส็งเคร็ง (ใครก็ตามที่ทำงานกับผู้พัฒนาอินเดียควรรู้ว่าฉันหมายถึงอะไร) ตามหลักการแล้วเราต้องการเชื่อมต่อเซิร์ฟเวอร์ในสำนักงานของพวกเขา (หรือใช้ดาต้าเซ็นเตอร์ใกล้เมือง) และมันจะรวมเข้ากับสถาปัตยกรรมของเราได้อย่างราบรื่น เราไม่ต้องการความพร้อมใช้งานจากระยะไกล 99% หรือแม้แต่ 95% มันเป็นแอพจัดการเอกสาร ไม่มีใครสนใจ. แต่เนื่องจากการย้ายข้อมูลอาจใช้เวลาสักครู่และมีลูกค้าทั่วโลกบางครั้งเราป้องกันไม่ให้ลูกค้าทำงานเกือบตลอดทั้งวัน สำหรับส่วนของ SQL แม้ว่าจะไม่มี DBA ที่ "ถูกต้อง" แต่เรารู้เกี่ยวกับความเป็นไปได้ของ …

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