โชคดีที่วิศวกรรมความน่าเชื่อถือของไซต์พัฒนาขึ้นภายใน Google และเมื่อไม่นานมานี้ได้เริ่มเข้าสู่ชุมชนที่กว้างขึ้นจึงมีการกำหนดไว้ค่อนข้างดี อะไรไม่ได้แต่เป็นการดำเนินงานเว็บ (หรือ "ระบบการบริหาร" - เป็นตัวอย่างของการขาดความชัดเจนที่คุณใช้ทั้งในคำถามของคุณ) เป็นการยากที่จะหารือเกี่ยวกับความแตกต่างระหว่างสองสิ่งเมื่อคุณไม่แน่ใจว่าสิ่งใดสิ่งหนึ่ง
แต่ฉันเป็นคนชอบผจญภัยดังนั้นฉันจะให้มันยิง
ในร้านค้าแบบดั้งเดิมผู้พัฒนาและผู้ดูแลระบบจะถูกปิดกั้นจากกันและกัน devs สร้างแอปแล้วพิจารณางานให้เสร็จสมบูรณ์ทันทีที่รหัสของพวกเขาถูกส่งไปแล้ว sysadmins ใช้ส่วนการสร้าง (ซึ่งอาจเป็นเพียงรหัสถ้าเป็นภาษาที่ตีความ) และนำไปใช้กับเซิร์ฟเวอร์ที่ใช้งานจริง เป็นหน้าที่ของ sysadmins ที่จะทำให้แอปพลิเคชันทำงานได้อย่างราบรื่นและโดยทั่วไปจะจัดการกับสภาพแวดล้อมการผลิต อย่างไรก็ตามปัญหาด้านประสิทธิภาพมักเกิดจากปัญหาสถาปัตยกรรมในแอป sysadmins ไม่มีความรู้ด้านการเขียนโปรแกรมที่จะรู้ว่าแอปกำลังทำอะไรอยู่และผู้พัฒนาไม่ทราบว่าแอพทำหน้าที่อย่างไรในโทโพโลยีการผลิตที่มีปริมาณการใช้งานการผลิตดังนั้นจึงไม่มีใครติดตั้งเอง
นอกจากนี้นักพัฒนามักจะตัดสินว่าพวกเขาสามารถสร้างคุณลักษณะใหม่ได้อย่างรวดเร็วเพียงใดในขณะที่ sysadmins จะถูกตัดสินว่าแอพแตกต่างกันเพียงใดในการผลิต เนื่องจากการเปลี่ยนแปลงเป็นหนึ่งในสาเหตุสำคัญของการแตกซึ่งทำให้ทั้งสองฝ่ายขัดแย้งกัน - เป็นการแข่งขันเก่าที่ทำร้ายธุรกิจและผู้คนที่เกี่ยวข้อง
เมื่อถึงจุดหนึ่ง บริษัท ที่มีศูนย์กลางการพัฒนาบางแห่งก็รู้สึกรำคาญอย่างมากเมื่อพวกเขาเริ่มฝึก "NoOps" พวกเขากำจัดแผนกปฏิบัติการของตนและสิ่งกีดขวางบนถนนที่รับรู้มาพร้อมกับพวกเขา ในความเป็นจริงสิ่งนี้หมายความว่านักพัฒนาซอฟต์แวร์รับบทบาทการดำเนินการ แต่ยังคงชื่อเดิมไว้
ในการอภิปรายรอบ NoOps , John Allspaw จากนั้นรองประธานฝ่ายปฏิบัติการทางเทคนิคที่ Etsy และบรรณาธิการของหนังสือ Web Operations ที่ได้รับการเคารพนับถือซึ่งกำหนดบทบาทที่ Etsy ด้วยวิธีนี้:
Etsy Operations รับผิดชอบ:
- ตอบสนองต่อการขัดข้องรับสาย
- แจ้งเตือนระบบการออกแบบใหม่
- การออกแบบและทบทวนสถาปัตยกรรม
- การสร้างการรวบรวมตัวชี้วัด
- การกำหนดค่าแอปพลิเคชัน
- การสร้าง / จัดการโครงสร้างพื้นฐาน
การพัฒนา Etsy เป็นผู้รับผิดชอบ:
- ตอบสนองต่อการขัดข้องรับสาย
- แจ้งเตือนระบบการออกแบบใหม่
- การออกแบบและทบทวนสถาปัตยกรรม
- การสร้างการรวบรวมตัวชี้วัด
- การกำหนดค่าแอปพลิเคชัน
- จัดส่งรหัสสาธารณะ
ฉันไม่แน่ใจว่าจะมีรายการใดหายไป ในขณะที่ Etsy Ops ทำการเปลี่ยนแปลงแอปพลิเคชั่นที่ต้องใช้งานจริงพวกมันมีน้อย แต่จริง (และบางครั้งก็ค่อนข้างลึก) ในขณะที่ Etsy Dev เปลี่ยนแปลงเชฟ หากมีความรับผิดชอบซ้อนทับกันมากทำไมความแตกต่างคุณอาจถาม? ความเชี่ยวชาญและพื้นหลังโดเมน มี Devs ไม่มากที่มีความรู้อย่างลึกซึ้งเกี่ยวกับวิธีการเริ่มทำงานช้าของ TCP แต่ Ops ทำได้ Ops ไม่มากมีความรู้ที่ครอบคลุมของการเรียงลำดับหรืออัลกอริทึมที่เกี่ยวข้อง แต่ Dev ทำ Ops มีประสบการณ์หลายปีในการพยากรณ์การใช้ทรัพยากรอย่างรวดเร็วด้วยความแม่นยำที่ยอมรับได้ Dev ไม่ได้ ผู้พัฒนาอาจไม่ทราบถึงข้อดีและข้อเสียของการกระจายตัวเลือกเวิร์กโหลดในทุกเลเยอร์ 1-1 อาจจะแค่ที่ 7 เท่านั้น Ops การสร้างแบบจำลองความสัมพันธ์เอนทิตีอาจเป็นเรื่องธรรมดาสำหรับนักพัฒนา ในท้ายที่สุดพวกเขาทั้งคู่ค้นพบวิธีแก้ปัญหาสำหรับสถานการณ์ความล้มเหลวของไบแซนไทน์และรูปแบบความยืดหยุ่นที่หลากหลายในทุกระดับและชั้น
ในโลกของเขานักพัฒนาและวิศวกรมืออาชีพมีทักษะและความรับผิดชอบระดับสูงคล้ายกันมาก ที่พวกเขาแตกต่างอยู่ในความเชี่ยวชาญของพวกเขา ความเชี่ยวชาญที่แตกต่างกันของพวกเขากระตุ้นให้พวกเขาทำงานร่วมกันเพื่อแก้ปัญหาและทักษะพื้นฐานระดับพื้นฐานของพวกเขาทำให้พวกเขามีภาษาที่ต้องทำ
นี่เป็นคำจำกัดความของการทำงานบนเว็บที่ฉันใช้เป็นส่วนใหญ่ ดังนั้นมันคือสิ่งที่เราจะดำเนินการต่อไปด้วย
ดังนั้นวิศวกรรมความน่าเชื่อถือของไซต์คืออะไร
หนังสือ Google SRE เปิดขึ้นพร้อมด้วยคำจำกัดความของ SRE ... และอีกเล่มหนึ่ง ... จากนั้นใช้บทต่อไปเพื่อกำหนดบทบาทและหนังสือทั้งเล่มครอบคลุมเฉพาะ แม้เมื่อพัฒนาในองค์กรหนึ่งดูเหมือนว่าเป็นการยากที่จะรวมงานลงไปเป็นคำจำกัดความที่ตกลงร่วมกันเพียงข้อเดียว
ในการเริ่มต้นเราต้องเดินกลับไปที่ปี 2003 เมื่อ Ben Traynor เข้าร่วมกับ Google และก่อตั้งสิ่งที่เป็นทีมวิศวกรรมความน่าเชื่อถือของไซต์คนแรก จำได้ว่าสองสามย่อหน้าที่ผ่านมาเราอยู่ในช่วงต้นปี 2010; แต่ในปีพ. ศ. 2546 อุตสาหกรรมก็ยังคงตั้งอยู่บนส่วนแบ่งของผู้ดูแลระบบ / ผู้พัฒนาเป็นวิธีธรรมชาติของสิ่งต่าง ๆ ดังนั้นเมื่อเบ็นกล่าวว่า SRE เป็นสิ่งที่จะเกิดขึ้นหากวิศวกรซอฟต์แวร์สร้างทีมปฏิบัติการนี่เป็นจุดเชื่อมโยงที่ลึกซึ้งยิ่งขึ้นของสองโลกมากกว่าที่ปรากฏ
คำจำกัดความที่ให้ไว้ในคำนำเน้นคำแต่ละคำสามคำเป็นรายบุคคล:
- วิศวกรรม - การใช้วิทยาศาสตร์คอมพิวเตอร์และแนวคิดวิศวกรรมในการแก้ปัญหา
- ความน่าเชื่อถือ - มุ่งเน้นที่การทำให้ระบบมีความยืดหยุ่นมากขึ้นน่าเชื่อถือมากขึ้นและมีประสิทธิภาพมากขึ้น
- บริการ - วิวัฒนาการในภายหลังของ "ไซต์" โดยเน้นว่า SREs มีหน้าที่รับผิดชอบต่อบริการเครือข่าย
บทแนะนำจะแสดงรายการหลักของวิศวกรรมความน่าเชื่อถือของไซต์เป็น:
- สร้างความมั่นใจว่ามุ่งเน้นไปที่ความทนทานในด้านวิศวกรรม - ดำเนินการจองล่วงหน้าเพื่อหลีกเลี่ยงหน้าบ่อยและ "งานหนัก" อื่น ๆ
- การคงความเร็วการเปลี่ยนแปลงสูงสุดโดยไม่ละเมิด SLO ของบริการ - หัวเรื่องที่สามารถมีคำตอบได้หลายร้อยคำ แต่สรุปโดยสังเขปว่าช่วยให้ผู้พัฒนาทำการเปลี่ยนแปลงตราบใดที่ไม่ทำให้เกิดปัญหามากเกินไป
- การตรวจสอบ - เตือนอัตโนมัติเมื่อสิ่งผิดปกติ
- การตอบสนองฉุกเฉิน - แก้ไขสิ่งต่าง ๆ เมื่อมันพัง
- การบริหารการเปลี่ยนแปลง
- วางแผนกำลังการผลิต
- การจัดเตรียม
- ประสิทธิภาพและประสิทธิภาพ - มั่นใจได้ว่าบริการจะดำเนินการในระดับที่คาดหวัง - คอขวดทำให้ผู้ใช้เจ็บ แต่ความจุส่วนเกินต้องเสียเงิน
ฉันจัดหมวดหมู่วิศวกรรมความน่าเชื่อถือของไซต์เป็นส่วนย่อยเฉพาะของการปฏิบัติการทางเว็บที่ทันสมัย องค์กร SRE มุ่งเน้นไปที่การทำให้ทุกอย่างเป็นอัตโนมัติเป็นระดับที่คุ้มค่าใน บริษัท ขนาดใหญ่พอสมควร แนวคิดเช่นงบประมาณข้อผิดพลาดสามารถทำงานได้เมื่อบริการของคุณมีคำขอจำนวนมากหลายคำขอไม่เช่นนั้นคุณจะสูญเสียรายละเอียด (สำหรับบริการที่เล็กกว่าข้อผิดพลาดเฉพาะอาจส่งผลต่อการร้องขอของคุณ 0-20% ขึ้นอยู่กับนาที) พื้นที่ที่เกี่ยวข้องเช่นการรักษาความปลอดภัยไม่ได้อยู่ในคำจำกัดความ SRE เพราะ บริษัท ที่มีขนาดใหญ่พอที่จะมีทีม SRE จริงได้ทุ่มเททีมเพื่อความปลอดภัย
โปรแกรม SRE ที่กำหนดโดย Google นั้นเป็น web ops ที่พัฒนาขึ้นสำหรับความต้องการเฉพาะของ Google และไม่จำเป็นต้องมีที่อื่น
อย่างไรก็ตามวิศวกรรมความน่าเชื่อถือของไซต์ได้รับการขยายในการใช้งานในอุตสาหกรรมที่กว้างขึ้นเมื่อเร็ว ๆ นี้ ตำแหน่งงานปัจจุบันของฉันคือ SRE แม้ว่าฉันจะทำงานที่ บริษัท ขนาดเล็กกว่ามากและรายละเอียดงานของฉันค่อนข้างเข้ากันได้ดีกับคำนิยาม 2012 Etsy web ops ของ John Allspaw ทฤษฎีของฉันคือเราได้รับความคืบหน้าผ่านชื่อเรื่องเป็นชวเลขสำหรับการกระตุ้นการวิวัฒนาการของสาขาเดียว:
- เราเริ่มเป็นsysadmins
- จากนั้นเมื่อเว็บไซต์กลายเป็น "สิ่งของ" มากขึ้นการโพสต์งานเริ่มอ้างถึงวิศวกรการดำเนินการทางเว็บเพื่อแยกแยะความแตกต่างของ sysadmins ที่มีความเชี่ยวชาญในเว็บจากผู้ที่จัดการกับสำนักงานไอทีทั่วไป
- จากนั้นDevOpsก็ควรแยกผู้ที่มีความสะดวกสบายในการใช้โปรแกรมเพื่อลดภาระงานบนเว็บ
- แต่เมื่อ DevOps สับสนเนื่องจากไม่มีคำจำกัดความที่ชัดเจนเราจึงนำSite Reliability Engineeringมาใช้เพื่อระบุว่าเรากำลังมองหาผู้ที่คอยให้บริการสนับสนุนการผลิต
ดังนั้นความแตกต่างระหว่างดูแลระบบและ SRE คืออะไร? ปีที่พวกเขาได้รับตำแหน่ง ความแตกต่างระหว่างการดำเนินงานแบบดั้งเดิมและวิศวกรรมความน่าเชื่อถือเว็บไซต์คืออะไร? SRE เป็นเพียงชาติปัจจุบันของปฏิบัติการโดยใช้เครื่องมือใหม่ (สวัสดี, ตู้คอนเทนเนอร์!) และเป็นโปรแกรมเครือข่ายยังคงกลายเป็นมากขึ้นขนาดใหญ่และมีความสำคัญมากขึ้นมุ่งเน้นมากขึ้นเกี่ยวกับการปฏิบัติที่ช่วยให้วิศวกรคนหนึ่งที่จะทำมากขึ้น