อะไรคือความแตกต่างระหว่างรูปแบบการพัฒนาและการดำเนินงานแบบดั้งเดิมกับวิศวกรรมความน่าเชื่อถือของไซต์


15

"SRE เป็นสิ่งที่เกิดขึ้นเมื่อคุณขอให้วิศวกรซอฟต์แวร์ออกแบบทีมปฏิบัติการ" - วิศวกรรมความน่าเชื่อถือของไซต์

ตั้งแต่หนังสือวิศวกรรมความน่าเชื่อถือของไซต์ของ Googleเปิดตัวมากกว่าหนึ่งครั้งฉันได้รับแจ้งว่า SRE เป็นส่วนขยายของรูปแบบการดำเนินงานหรือการสนับสนุนแอปพลิเคชันที่มีอยู่

เรามีคำถามสองสามข้อที่กำหนดความแตกต่างระหว่าง Sys ผู้ดูแลระบบวิศวกร DevOps และวิศวกรความน่าเชื่อถือของไซต์:

แต่ไม่มีของคำถามเหล่านี้หรือคำตอบของพวกเขาอธิบายความแตกต่างระหว่างผู้ดูแลระบบและวิศวกรความน่าเชื่อถือ

กล่าวอย่างกว้าง ๆ : อะไรคือความแตกต่างที่สำคัญระหว่างการฝึกปฏิบัติงานวิศวกรรมความน่าเชื่อถือของไซต์กับฟังก์ชั่นการพัฒนาและการดำเนินงานที่แยกจากกันแบบดั้งเดิมภายในธุรกิจ

คำตอบ:


7

โชคดีที่วิศวกรรมความน่าเชื่อถือของไซต์พัฒนาขึ้นภายใน 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 เป็นเพียงชาติปัจจุบันของปฏิบัติการโดยใช้เครื่องมือใหม่ (สวัสดี, ตู้คอนเทนเนอร์!) และเป็นโปรแกรมเครือข่ายยังคงกลายเป็นมากขึ้นขนาดใหญ่และมีความสำคัญมากขึ้นมุ่งเน้นมากขึ้นเกี่ยวกับการปฏิบัติที่ช่วยให้วิศวกรคนหนึ่งที่จะทำมากขึ้น


ไม่กี่ชิ้นที่น่าสนใจมากขึ้นของการอ่าน (ที่ฉันไม่จำเป็นต้องเห็นด้วยกับ): charity.wtf/2016/06/30/... , charity.wtf/2016/05/31/wtf-is-operations-serverless , susanjfowler com / บล็อก /
2016/10/13
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.