เราเคยเรียกใช้เว็บไซต์โซเชียลบนการกำหนดค่า LAMP มาตรฐาน เรามีเซิร์ฟเวอร์สดเซิร์ฟเวอร์ทดสอบและเซิร์ฟเวอร์เพื่อการพัฒนารวมถึงเครื่องจักรสำหรับนักพัฒนาท้องถิ่น ทั้งหมดได้รับการจัดการโดยใช้ GIT
ในแต่ละเครื่องเรามีไฟล์ PHP แต่ยังรวมถึงบริการ MySQL และโฟลเดอร์ที่มีรูปภาพที่ผู้ใช้จะอัปโหลด เซิร์ฟเวอร์ Live มีผู้ใช้ซ้ำอีก 100K (!) การถ่ายโอนข้อมูลอยู่ที่ 2GB (!) โฟลเดอร์ Image มีขนาด 50GB (!) ตามเวลาที่ฉันออกเซิร์ฟเวอร์ของเราถึงขีด จำกัด ของ CPU, Ram และที่สำคัญที่สุดคือข้อ จำกัด การเชื่อมต่อเน็ตที่เกิดขึ้นพร้อมกัน (เรายังรวบรวมไดรเวอร์การ์ดเครือข่ายเวอร์ชั่นของเราเองเพื่อขยายเซิร์ฟเวอร์ 'lol') เราไม่สามารถ ( หรือคุณไม่ควรถือว่าเว็บไซต์ของคุณ ) ใส่ข้อมูล 2GB และรูปภาพ 50GB ใน GIT
ในการจัดการทั้งหมดภายใต้ GIT อย่างง่ายดายเราจะเพิกเฉยต่อโฟลเดอร์ไบนารี (โฟลเดอร์ที่มีรูปภาพ) โดยการแทรกเส้นทางโฟลเดอร์เหล่านี้ลงใน. gitignore นอกจากนี้เรายังมีโฟลเดอร์ชื่อ SQL นอกเส้นทางเอกสาร Apache ในโฟลเดอร์ SQL นั้นเราจะใส่ไฟล์ SQL ของเราจากนักพัฒนาด้วยการเพิ่มตัวเลข (001.florianm.sql, 001.johns.sql, 002.florianm.sql และอื่น ๆ ) ไฟล์ SQL เหล่านี้ได้รับการจัดการโดย GIT เช่นกัน ไฟล์ sql แรกจะมี DB schema ชุดใหญ่แน่นอน เราไม่เพิ่มข้อมูลผู้ใช้ใน GIT (เช่นบันทึกของตารางผู้ใช้หรือตารางความคิดเห็น) แต่ข้อมูลเช่น configs หรือโทโพโลยีหรือข้อมูลเฉพาะไซต์อื่น ๆ นั้นได้รับการปรับปรุงในไฟล์ sql (และด้วย GIT) นักพัฒนาส่วนใหญ่ (ซึ่งรู้จักรหัสดีที่สุด) ซึ่งกำหนดว่าอะไรและสิ่งใดที่ GIT ไม่ได้รับการดูแลเกี่ยวกับ SQL schema และข้อมูล
ผู้ดูแลระบบล็อกอินเข้าสู่เซิร์ฟเวอร์ dev รวมสาขาสดกับนักพัฒนาทั้งหมดและต้องการสาขาบนเครื่อง dev ไปยังสาขาปรับปรุงและผลักไปยังเซิร์ฟเวอร์ทดสอบ บนเซิร์ฟเวอร์ทดสอบเขาตรวจสอบว่ากระบวนการอัปเดตสำหรับเซิร์ฟเวอร์สดยังคงใช้ได้หรือไม่และต่อเนื่องอย่างรวดเร็วชี้ปริมาณการใช้งานทั้งหมดใน Apache ไปยังไซต์ตัวยึดสร้างฐานข้อมูล DB ชี้ไดเรกทอรีการทำงานจาก 'สด' เป็น 'ปรับปรุง ', เรียกใช้งานไฟล์ sql ใหม่ทั้งหมดใน mysql, และทำการรับส่งข้อมูลกลับไปยังเว็บไซต์ที่ถูกต้อง เมื่อผู้มีส่วนได้ส่วนเสียทั้งหมดเห็นด้วยหลังจากตรวจสอบเซิร์ฟเวอร์ทดสอบผู้ดูแลระบบก็ทำสิ่งเดียวกันจากเซิร์ฟเวอร์ทดสอบไปยังเซิร์ฟเวอร์สด หลังจากนั้นเขาจะรวมสาขาสดบนเซิร์ฟเวอร์ที่ใช้งานจริงไปยังสาขาหลักที่อยู่ในเซิร์ฟเวอร์ทั้งหมดและรีบาวน์สดสาขาทั้งหมด
หากมีปัญหาในเซิร์ฟเวอร์ทดสอบเช่น การรวมมีความขัดแย้งมากเกินไปจากนั้นรหัสก็ถูกเปลี่ยนกลับ (ชี้ไปที่สาขาที่ทำงานกลับไปที่ 'สด') และไฟล์ sql ไม่เคยถูกดำเนินการ ขณะที่ไฟล์ sql ถูกดำเนินการนี่ถือเป็นการกระทำที่ไม่สามารถย้อนกลับได้ในเวลานั้น หากไฟล์ SQL ทำงานไม่ถูกต้องฐานข้อมูลจะถูกกู้คืนโดยใช้ Dump (และนักพัฒนาซอฟต์แวร์บอกว่าปิดการใช้งานสำหรับการให้ไฟล์ SQL ที่ทดสอบไม่ได้)
วันนี้เรารักษาทั้งโฟลเดอร์ sql-up และ sql-down ที่มีชื่อไฟล์เทียบเท่าซึ่งผู้พัฒนาต้องทดสอบว่าทั้งไฟล์ sql ที่อัพเกรดสามารถอัพเกรดได้เท่า ๆ กัน สิ่งนี้สามารถถูกประหารชีวิตด้วยสคริปต์ทุบตีในที่สุด แต่เป็นความคิดที่ดีถ้าหากสายตาของผู้คนเฝ้าดูกระบวนการอัพเกรด
มันไม่ดี แต่จัดการได้ หวังว่าสิ่งนี้จะให้ข้อมูลเชิงลึกเกี่ยวกับเว็บไซต์จริงที่ใช้งานได้จริงและมีความพร้อมใช้งานค่อนข้างสูง ไม่ว่าจะล้าสมัยนิดหน่อย แต่ก็ยังตามมา