ฉันไม่เคยทำแบบนี้เป็นการส่วนตัว ฉันไม่เข้าใจว่าเพราะเหตุใดเว็บไซต์จำนวนมากถึงทำหากคุณทำการพัฒนาบนเซิร์ฟเวอร์การพัฒนาเหตุใดคุณจึงต้องปิดเว็บไซต์ที่ใช้งานจริงของคุณ?
ฉันสงสัยเกี่ยวกับเรื่องนี้เสมอ
พวกเขากำลังทำอะไรในช่วงเวลานี้สิ่งที่ต้องทำคืออะไร
ฉันไม่เคยทำแบบนี้เป็นการส่วนตัว ฉันไม่เข้าใจว่าเพราะเหตุใดเว็บไซต์จำนวนมากถึงทำหากคุณทำการพัฒนาบนเซิร์ฟเวอร์การพัฒนาเหตุใดคุณจึงต้องปิดเว็บไซต์ที่ใช้งานจริงของคุณ?
ฉันสงสัยเกี่ยวกับเรื่องนี้เสมอ
พวกเขากำลังทำอะไรในช่วงเวลานี้สิ่งที่ต้องทำคืออะไร
คำตอบ:
Big kicker สำหรับทุกสิ่งที่มีขนาดใหญ่ก็คือหากมีใครเปลี่ยนสกีมาฐานข้อมูลในทางใดทางหนึ่งมักจะมีสคริปต์บำรุงรักษาที่ใหญ่และน่ารังเกียจ
ทีนี้สิ่งเหล่านี้อาจใช้เวลาสักครู่เพื่อทำงานกับชุดข้อมูลการพัฒนาของคุณ แต่เมื่อคุณเริ่มการวัดข้อมูลในเทราไบต์และเพตาไบต์แม้กระทั่งการเพิ่มคอลัมน์เดียวในตารางอาจใช้เวลาหลายชั่วโมง
ดังนั้นไม่ว่าการปรับใช้จะรวดเร็วและอัตโนมัติเพียงใดคุณยังคงมีปัญหาการบำรุงรักษาข้อมูลเพื่อให้ผ่านไปได้ หากคุณวางแผนได้ดีจริงๆคุณสามารถวางมิเรอร์แบบอ่านอย่างเดียวของไซต์ในขณะที่คุณกำลังดำเนินการอยู่ แต่สำหรับไซต์จำนวนมากที่อ่านอย่างเดียวนั้นไม่มีจุดหมายและไม่คุ้มค่ากับความพยายาม
มีสาเหตุหลายประการที่ทำให้คุณอาจต้องการดูแลเว็บไซต์ หากต้องการตั้งชื่อไม่กี่:
โดยทั่วไปหากไซต์ของคุณไม่คงที่เมื่อทำการอัปเดตแบบลอจิกคุณต้องการลบมันมิฉะนั้นผู้ที่กดปุ่มไซต์ของคุณอาจได้รับข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิด
นอกจากนี้หากคุณจะแตะ web.config (ใน ASP.NET) สำหรับเว็บไซต์ของคุณคุณควรจะทำการบำรุงรักษาเสียก่อนเพราะจะทำให้เซสชันของผู้ใช้หมดไป ดังนั้นหากพวกเขาอยู่ตรงกลางของบางสิ่งมันจะหายไป
นี่เป็นคำถามที่เป็นนามธรรม - ฉันเคยเห็นไซต์ที่ใช้ "Down for Maintenance" แทน HTTP 500
สำหรับเว็บไซต์บางครั้งคุณจำเป็นต้องทำการอัพเกรดบางอย่าง ตัวอย่างเช่นหากคุณเปลี่ยนฐานข้อมูลคุณไม่ต้องการให้ผู้ใช้รายอื่นแตะฐานข้อมูลในช่วงเวลานั้น ถ้าฐานข้อมูลออฟไลน์ไซต์ต้องปิดอย่างสง่างามเช่นกันเนื่องจากการแสดง SqlException นั้นไม่ดีมาก อีกเหตุผลหนึ่งคือความล้มเหลวของ HW หรือความล้มเหลวของระบบ (เช่นทรัพยากรรั่วไหล) ซึ่งต้องการแอปพลิเคชันหรือแม้กระทั่งระบบรีบูต
เมื่อฉันเข้าร่วมในการอัพเกรดระบบธนาคารทางอินเทอร์เน็ตในหนึ่งในธนาคารที่ใหญ่ที่สุดในประเทศของฉัน กระบวนการทั้งหมดในการอัพเกรดเว็บไซต์ชั้นกลางและฐานข้อมูลใช้เวลาสามวันในการที่ระบบออฟไลน์สำหรับลูกค้า มันยังรวมการสำรองข้อมูลเต็มรูปแบบของทุกอย่างดังนั้นในกรณีที่ระบบล้มเหลวสามารถเปลี่ยนกลับเป็นเวอร์ชันเก่าได้
เซิร์ฟเวอร์จำเป็นต้องมีการเรียกใช้โปรแกรมแก้ไขและในระบบปฏิบัติการหลายระบบโปรแกรมแก้ไขเหล่านี้จำเป็นต้องมีการรีบูต นั่นคือช่วงเวลาหนึ่งของหมวดลง หลาย บริษัท กำหนดเวลาให้เริ่มต้นใหม่จากโปรแกรมแก้ไขสำหรับเวลาที่ใช้น้อยเช่นตอนเช้าวันอาทิตย์ หากไม่มีแพทช์พวกเขาจะรีบูตเซิร์ฟเวอร์ตามเวลาการบำรุงรักษาตามกำหนดเวลาปกติ (นี่คืออาการเมาค้างจาก NT4 วันเมื่อตัวนับจำนวนหนึ่งล้นในทุกสัปดาห์ครึ่งดังนั้นการรีบูตทุกสัปดาห์จะป้องกันข้อผิดพลาดอื่น ๆ )
บริษัท หนึ่งที่ฉันทำงานให้มีไซต์อีคอมเมิร์ซกลับมาในช่วงปลายยุค 90 ซึ่งสร้างยอดขายมากกว่า $ 1,000,000 ต่อเดือน มีคนเลื่อนตารางภาษีผิดไปยังเซิร์ฟเวอร์ฐานข้อมูลการผลิต การรักษาคือการคืนค่าเซิร์ฟเวอร์ db จากการสำรองข้อมูลและใช้การทำธุรกรรมตั้งแต่การสำรองข้อมูลครั้งล่าสุด การดำเนินการนี้ใช้เวลาหลายชั่วโมงในระหว่างที่เว็บไซต์ไม่สามารถรับคำสั่งซื้อได้ เนื่องจากส่วนคำสั่งซื้อและโบรชัวร์การขายแบบคงที่ทำงานบนเว็บไซต์เดียวกันและแยกออกไม่ได้ทั้งคู่จึงต้องลงมา
บริษัท หนึ่งที่ฉันทำงานให้มีการใส่ข้อความผิดในที่ผิดและซีอีโอพลิกออกและมีเว็บไซต์นำออกจากสาย "เพื่อการบำรุงรักษา" ในขณะที่เค้าโครงและข้อความถูก "แก้ไข" และเหยื่อที่เหมาะสมตำหนิและไล่ออก
ในขณะที่คำตอบอื่น ๆ นั้นถูกต้องคุณสามารถหลีกเลี่ยงการหยุดทำงานโดยใช้สถาปัตยกรรมที่เหมาะสม แต่นี่มีค่าใช้จ่ายและค่าใช้จ่ายนี้อาจไม่คุ้มค่า: หนึ่งชั่วโมงของค่าใช้จ่ายในการหยุดทำงานของ Amazon หรือโครงสร้างพื้นฐานที่อยู่เบื้องหลัง NASDAQ เป็นจำนวนมาก Stackoverflow ส่วนใหญ่มีแนวโน้มไม่มาก
วิธีหลีกเลี่ยงการหยุดทำงาน:
โดยทั่วไปแล้วในสถาปัตยกรรมแบบเลเยอร์ยิ่งใกล้กับ "อันดับสูงสุด" ของคุณมากเท่าไหร่มันก็ยากที่สุดที่จะหลีกเลี่ยงการหยุดทำงานเช่นเดียวกับสถานะที่ไม่แน่นอน (ฐานข้อมูลเว็บเซิร์ฟเวอร์และฐานข้อมูล)
ไซต์อาจกำหนดเวลาหยุดทำงานปกติแม้ว่าจะไม่มีอะไรทำทุกครั้งที่มีการหยุดทำงานตามกำหนด โดยการทำเช่นนั้นพวกเขาได้รับผู้ใช้ที่ใช้ความคิดที่ว่าเว็บไซต์จะลงสำหรับจำนวนหนึ่งของเวลาทุกบ่อยเพื่อที่ว่าเมื่อทำงานไม่จำเป็นที่จะต้องทำผู้ใช้จะบ่นไม่ได้มาก
นอกจากนี้ยังมีด้านจิตวิทยาและการตลาดสำหรับสิ่งนี้ ในบางกรณี (ฉันกล้าพูดเรื่องส่วนใหญ่ แต่ฉันไม่ใช่ตัวหนา * g *) ที่อ่าน "Down for maintenance" อาจหมายถึง "เซิร์ฟเวอร์ขัดข้องหรือเลิกให้บริการด้วยเหตุผลอื่นใด"
ฉันเคยเห็นมันค่อนข้างบ่อย โดยปกติแล้วในฐานะนักพัฒนาซอฟต์แวร์คุณจะต้องการข้อความแสดงข้อผิดพลาด "ของจริง" ที่พูดว่า "อ๊ะเรากำลังประสบปัญหาโหลดสูงในขณะนี้และไม่สามารถจัดการคำขอทั้งหมดได้" แต่บางคนจากตลาดจะบอกคุณว่า "เพื่อนคุณไม่สามารถ บอกลูกค้าว่าเรากำลังมีปัญหาบอกพวกเขาว่าเรากำลังบำรุงรักษาตามกำหนดเวลา - สิ่งนี้จะดูดีขึ้นมาก "
ดังนั้น "ลงเพื่อการบำรุงรักษา" มักจะเป็นเพียงคำอื่นสำหรับ "เลิกใช้งาน"
ไม่ต้องใช้เซิร์ฟเวอร์เพื่อทำการบำรุงรักษา คุณสามารถหลีกเลี่ยงการทำสิ่งใด ๆ ไม่ว่าในระดับใดการเปลี่ยนแปลงฐานข้อมูลการอัพเดทเซิร์ฟเวอร์ ฯลฯ
ปัญหาคือระบบ 0-downtime ในระดับหนึ่งนั้นมีค่าใช้จ่ายสูงในการสร้างและบำรุงรักษา คุณต้องการความซ้ำซ้อนทุกหนทุกแห่งโหลดบาลานซ์ทุกแห่งการจำลองข้อมูลการซิงโครไนซ์ นั่นเป็นปัญหาที่ยาก
โดยทั่วไปคุณต้องมาถึงระดับของความสามารถในการปล่อย Netflix Chaos Monkey ในผลิตภัณฑ์เพื่อให้แน่ใจว่าทำงานได้แม้ว่าส่วนหนึ่งของระบบของคุณไม่ว่างกับการอัพเดทหรือเพิ่งซิงค์ เป็นไปได้อย่างแน่นอน นอกจากนี้ยังมีราคาแพงมากต้องใช้เวลาและผู้เชี่ยวชาญจำนวนมากในการแก้ปัญหา
การวางเว็บไซต์ไว้ในโหมดการบำรุงรักษาอาจเป็นจุดกึ่งกลางที่คุณเลือกเพราะคุณไม่ต้องการลงทุนมากเพียงเพื่อหลีกเลี่ยงการลงเว็บไซต์ของคุณเป็นระยะเวลานาน ๆ
เศรษฐศาสตร์.
แน่นอนถ้าคุณเลือกเส้นทางเวลา 0 ดาวน์ไซต์ของคุณจะได้รับมากกว่าความพร้อมใช้งาน แต่จะได้รับความน่าเชื่อถือเช่นกันเนื่องจากแนวทางปฏิบัติที่ดีที่สุดเหล่านั้นมีไว้เพื่อวัตถุประสงค์ทั้งสองประการ
ฉันไม่เข้าใจว่าเพราะเหตุใดเว็บไซต์จำนวนมากถึงทำหากคุณทำการพัฒนาบนเซิร์ฟเวอร์การพัฒนาเหตุใดคุณจึงต้องปิดเว็บไซต์ที่ใช้งานจริงของคุณ?
อึเกิดขึ้น นอกจากว่าคุณกำลังทำการตรวจสอบทางคณิตศาสตร์ของสิ่งที่ส่งมอบของคุณ ( และรายละเอียดของคุณนั้นถูกต้อง ) ไม่ว่าคุณจะระมัดระวังเพียงใดอึเกิดขึ้นได้
นอกจากนี้ยังมีบางครั้งที่คุณอาจต้องทำการเปลี่ยนแปลงกับชิ้นส่วนสำคัญของโครงสร้างพื้นฐานของคุณ (เช่นการเปลี่ยนแปลงโครงสร้างฐานข้อมูลของคุณ) ที่ต้องใช้เวลาหยุดทำงาน
เว้นแต่ว่าคุณกำลังพัฒนาระบบที่สำคัญ (พูดว่าระบบห้าหรือเก้า - เก้า ) สิ่งที่รับผิดชอบและคุ้มค่าที่จะทำคือการสร้างระบบที่ยอมรับเวลาที่ลดลงซึ่งเป็นส่วนหนึ่งของความเป็นจริง
นอกจากนี้คุณยังนำหลักการดังกล่าวไปใช้ด้วยการลดเวลาจัดการและคล้อยตามกำหนดเวลา (หรือตรวจจับได้อย่างน้อยที่สุด) ด้วยความเข้าใจที่ชัดเจนและขั้นตอนสำหรับการกู้คืนที่มีประสิทธิภาพ
เมื่อเว็บไซต์ของเราถูกแฮ็ก (เซิร์ฟเวอร์ IIS6 และ Windows 2003 เก่าเมื่อไม่กี่ปีที่ผ่านมา) ในขณะที่เรากำลังทำการฟื้นฟูเราใส่หน้า "อยู่ระหว่างการบำรุงรักษา" สองสามชั่วโมง ....