วิศวกรรม และ ความ ค้ําจุน ด้าน สิ่ง แวด ล้อม
วิธีทําให้การลดความอ้วนของสีน้ําเงิน-เขียว กับสายยาง Cy/cd
Table of Contents
กลยุทธ์ของการจัดการสีเขียวคือ การลดเวลาการใช้งานลงและมีความเสี่ยง โดยการทํางานสภาพแวดล้อมการผลิตที่เหมือนกัน 2 แบบ -- คนหนึ่งให้บริการการจราจร (สีฟ้า) และหนึ่งแบบว่าง (สีเขียว) เมื่อโปรแกรมรุ่นใหม่พร้อม มันจะถูกนําไปใช้กับสภาพแวดล้อมที่ไม่ได้ทํางานแล้วได้ดําเนินการแล้ว การจราจรจะถูกปรับเปลี่ยนอย่างทั่วถึง เปลี่ยนแปลงไป แนวทางนี้จะกําจัดความต้องการในการบํารุงรักษาหน้าต่างให้ทํางานอย่างรวดเร็ว เปิดใช้งานและจัดแยกระหว่างเก่ากับใหม่ได้โดย มาร์ติน ฟาวเลอร์และเจซบลู- สีเขียว ได้ใช้เป็นรากฐานของกิจกรรมสมัยใหม่ เมื่อมีระบบย่อยของระบบ CIFCFC
เหตุ ใด การ ลด ความ เสี่ยง ที่ จะ เกิด ขึ้น กับ คน ที่ มี ความ ผิด ปกติ ทาง อารมณ์ จึง สําคัญ มาก?
วิธีการใช้พื้นฐาน เช่น การเพิ่มข้อมูล หรือ ปล่อยตัวแบบม้วนกระดาษ หรือ ปล่อยข้อมูลแบบ Canary ชั่วคราว ซึ่งจะทําให้ผู้ใช้สามารถทํางานได้ตามเวลาบางส่วน หรือลดความเร็วลงระหว่างการเปลี่ยนแปลง โดยทําการค้นหาด้วยรูปแบบนี้ โดยรักษาการดําเนินงานของสภาพแวดล้อมเดิมให้เต็มที่ จนกว่าตัวใหม่จะถูกตรวจสอบ ซึ่งจะทําให้ทีมมั่นใจในการใช้งานบ่อยขึ้น ถึงกับใช้ระบบปฏิบัติการเฉพาะกิจด้วย
- [FLT: 0]. Zero-downtime apporations:[[FLT: 1) ไม่มีหน้าต่างของเวลาเมื่อไม่มีโปรแกรม
- [FLT: 0]. สืบค้นเมื่อ: ประมวลผลการจราจรไปยังสภาพแวดล้อมเดิมในวินาทีถ้าเกิดปัญหาขึ้น
- [FLT: 0] ทดสอบการดําเนินงาน : ตรวจสอบความถูกต้องของรุ่นใหม่ภายใต้เงื่อนไขโลกแห่งความเป็นจริง โดยไม่มีผลกระทบกับผู้ใช้
- [FLT: 0] การย้ายฐานข้อมูลแบบขยาย: สามารถจัดการได้โดยระมัดระวังการแปลแบบ Shema และประกอบแบบย้อนกลับ.
- [FLT: 0] ความเร็วทีมที่เพิ่มขึ้น: ผู้พัฒนาสามารถปล่อยความกลัวได้มากขึ้น
การถอดแผ่นสีฟ้า-เขียวกับท่อ CI/CD
CI/CD อัตโนมัติการสร้าง, ทดสอบ และใช้เฟสต่างๆ เมื่อรวมกับสีฟ้า-เขียว ท่อส่งน้ําจะกลายเป็นตัวปรับของสิ่งแวดล้อม การไหลปกติเป็นแบบนี้
- [FLT: 0] สร้างและทดสอบ: รหัส Code Karter กระตุ้นการก่อสร้าง. การทดสอบ ยูนิต, การรวมกําลัง, และการตรวจสอบความปลอดภัย ทํางานในท่อส่ง
- [FLT: 0] ส่งต่อไปยังสภาพแวดล้อมที่ไม่สมบูรณ์: [[FLT: 1) ทางท่อส่งวัตถุไปยังสภาพแวดล้อมที่ในปัจจุบันยังไม่ได้ให้บริการการจราจร (เช่น สีเขียวหากน้ําเงินยังทํางานอยู่).
- [FLT: 0]. สโตกและรับการทดสอบ : การทดสอบอัตโนมัติดําเนินการกับสิ่งแวดล้อมใหม่เพื่อตรวจสอบการทํางาน, ประสิทธิภาพ และข้อมูลความสอดคล้อง
- [FLT: 0] การจราจรของแม่มด: สถิติการโหลดเครื่องบันทึกการโหลด หรือ DNS การปรับปรุงเส้นทางการติดต่อกับผู้ใช้ทั้งหมดไปยังสิ่งแวดล้อมใหม่
- [FLT: 0]. โพสต์สเตท-การแบ่งเขต: เช็คสุขภาพและติดตามยังคงสําหรับระยะเวลาเย็นลง.
- [FLT: 0] Cleanup (Opanion) สภาพแวดล้อมเดิมจะถูกเก็บไว้เป็นเป้ากลับ หรือถูกทําลายหลังจากยุคเย็นลง
การ จัด สิ่ง แวด ล้อม แบบ ไม่ รู้ จัก พอ
สภาพแวดล้อมที่สัมพันธ์กันนั้นสําคัญมาก สภาพแวดล้อมแบบบลูและสีเขียวต้องเหมือนกันทั้งในฮาร์ดแวร์, การปรับแต่ง, เว็บไซด์, และข้อมูล -- ยกเว้นรุ่นของโปรแกรม โปรดใช้เครื่องมือพื้นฐาน เช่น Terorormorm, Cload Formummi เพื่อจัดทําการปรับปรุงสภาพแวดล้อมทั้งสองจากต้นแบบเดียวกัน ฐานข้อมูลควรจะตั้งค่าให้ทั้งระบบมีการใช้ข้อมูลเดียวกัน (หรือใช้กลยุทธ์การย้ายถิ่นฐานซึ่งปลอดภัยในการเปลี่ยน Schama)
การปรับแต่งฐานข้อมูล
บริการของรัฐ -- โดยเฉพาะอย่างยิ่งฐานข้อมูล -- การใช้งานแบบพื้นฐานบลู-เขียว วิธีการทั่วไป:
- [FLT: 0] การอพยพแบบแบ็คเวิร์ดที่เข้ากันได้: ปรับใช้การเปลี่ยนแปลงที่ทํางานร่วมกับรหัสเก่าและใหม่ (เช่น เพิ่มคอลัมน์แต่อย่าปล่อยลง).
- [FLT: 0]. สืบค้นและอ่านแบบจําลอง: ชี้พื้นที่พื้นที่ทั้งคู่ไปยังฐานข้อมูลเดียวกัน แต่ให้แน่ใจว่าการเขียนเกิดขึ้นเฉพาะจากสภาพแวดล้อมที่ใช้งานอยู่เท่านั้น
- [FLT: 0]. สืบค้นเมื่อ Schema-per-environment: ฐานข้อมูลแยกสําหรับสิ่งแวดล้อมแต่ละแห่ง และจัดการปรับเทียบข้อมูลด้วยเครื่องมือการอพยพ (FLT:1).
เครื่องมือเช่น เวย์เวย์ หรือ ลิควิเบส สามารถจัดการการอพยพที่เพิ่มขึ้น ซึ่งปลอดภัยต่อการไหลของน้ําเงินสีเขียว
ปรับค่าอัตโนมัติของการสลับการการจราจร
การเปลี่ยนการจราจรสามารถนําไปใช้ได้ที่เครื่องโหลด (Layer 7), DNS (AYE 4/7), หรือ sporter, สําหรับการใช้งานแบบเมฆ, บริการเช่น AWS ALB, เครื่องมือปรับดุลไฟ, กูเกิ้ล คลายครอวด์, หรือ Kubernnets Aservice + Incusic ทําให้นี้ตรงไปตรงมา ท่อน้ํา CI/CD ควรจุดชนวนผ่าน API หรือการปรับปรุงเพิ่มเติม: continutions se (CI).
- [FLT: 0]. สืบค้นเมื่อ: เครื่องปรับภาระหน้าที่ต้องตรวจสอบสภาพแวดล้อมใหม่ที่แข็งแรง ก่อนที่จะยอมรับการจราจร.
- [FLT: 0] การดูดน้ําอย่างชุ่มชื่น : สภาพแวดล้อมเก่าควรเสร็จสิ้นการร้องขอภายใน-fight ก่อนจะถูกเอาออกจากการหมุน
- [FLT: 0] การต่อเนื่อง: ถ้าแอพของคุณใช้วาระที่เหนียว เพื่อให้แน่ใจว่าปุ่มไม่ทําลายบริบทของผู้ใช้ โปรดพิจารณาร้านค้าวาระภายนอก (Redis, Memcade).
เครื่องมือที่ปรับลดจุดสีน้ําเงิน- เขียว ให้เป็น CI/CD
แผงวงจร CI/CD หลายแบบ มีอุปกรณ์ที่ใช้ใช้งานที่รองรับกลยุทธ์แบบบลู-กรีนแบบพื้นเมือง ด้านล่างนี้เป็นอุปกรณ์ที่ได้รับความนิยมมากที่สุด:
เจนกินส์กับแอนเซปต์ หรือสปินเนเกอร์
Jenkins ยืดหยุ่นได้มาก คุณสามารถกําหนดขั้นตอนท่อส่งท่อ ที่เรียกข้อมูลการเล่นแบบ Annsable ได้ เพื่อปรับปรุงการตั้งค่าการโหลดที่ปรับให้พอดี หรือใช้กลยุทธ์ของสปินเนเกอร์ที่สร้างขึ้นในสีแดง/สีดํา สไปเนอร์ยังให้ยูไอดูได้ เพื่ออนุมัติด้วยตนเองก่อนการสลับ
กิตลัต CI กับ Auto Devopps
GitLab Auto Devoss รวมอยู่ในขั้นตอน "เครื่องมือสีเขียว" เมื่อนําไปใช้กับ Kurnetes มันสร้างสองสิ่งใช้ (สีและสีเขียว) และบริการที่พลิกป้าย "ตัวแบ่งประเภท" [FLT: 0] เอกสารของ Gitleb (FTL: 1) ให้คําแนะนําขั้นตอน
การกระทํา GitHub ด้วยรหัส AWSDOL
AWS Delopy สนับสนุนการใช้งานแบบบลู-กรีนแบบท้องถิ่น เอกสารการปฏิบัติการของ GitHub สามารถดันรหัสไปที่ถัง S3 จากนั้นให้เรียกใช้โปรแกรมที่ปรับปรุงโค้ดและใช้งานโดยอัตโนมัติ กลุ่มผู้จัดโปรแกรมให้ทํางานอัตโนมัติ ตรวจสอบสุขภาพ และเปลี่ยนเส้นทางรถ (FT: 0) เอกสารภาษาเอวาเรสอธิบายการตั้งค่า [FLT: 1].
โรลอล์ก ของ อาร์โก บน คูเบอร์เนส์
Argo Rollouts ให้กลยุทธ์การใช้อุปกรณ์ที่ก้าวหน้า รวมถึงการใช้แรงงานสีฟ้าสีเขียว มันผนวกเข้ากับตัวควบคุมที่ก้าวร้าว และให้บริการระบบย่อยการเคลื่อนรถอัตโนมัติ โรลแบ็คส์จะลดความเร็วลง และสามารถจุดชนวนได้โดยอัตโนมัติจากเมทริกส์ (FLT: 0) สืบค้นเพิ่มเติมเกี่ยวกับอาร์โกเอออกท์ (FLT: 1).
การปฏิบัติที่ดีที่สุดสําหรับการผลิต
การเพิ่มสีเขียวเป็นมากกว่าการเปลี่ยนเซิร์ฟเวอร์ การหลีกเลี่ยงข้อผิดพลาดทั่วไปนั้น จงปฏิบัติตามการปฏิบัติที่ดีที่สุดเหล่านี้:
ทุกรายการอัตโนมัติ
ขั้นตอนด้วยตนเอง มีข้อผิดพลาดขึ้น โดยท่อส่งน้ํามันทั้งหมด -- จากอาคารเพื่อเปลี่ยนการจราจร -- ควรจะถูกอัตโนมัติ ใช้การกําหนดท่อส่งน้ํามันแบบควบคุมรุ่น (เช่น `Jenkinfile', as kiddle-ci.yl', ทํางานได้โดยเพิ่มข้อมูลการทํางานเป็น yAMLs และตรวจสอบการทดสอบจะทํางานโดยอัตโนมัติบนแต่ละระบบ
ใช้แฟล็กปรับความเข้มสี
การปรับลดสีสีน้ําเงินเขียวด้วยธงคุณลักษณะการลดการใช้โปรแกรมจากปล่อย คุณสามารถใช้งานโค้ดที่มีคุณลักษณะใหม่ที่ซ่อนอยู่ และทําให้มันค่อยๆถูกใช้งานผ่านทางเครื่องมือจัดการธง (Lunch Darkly Post Horg, Uneash) ซึ่งนี้หลีกเลี่ยงการเรียกกลับสภาพแวดล้อมทั้งหมด หากคุณสมบัติใด ๆ ล้มเหลว
การทดสอบความสมบูรณ์
การทดสอบการสูบบุหรี่ ควรตรวจสอบการตอบสนองพื้นฐาน HTTP, การเชื่อมต่อกับฐานข้อมูล, และการเดินทางที่สําคัญของผู้ใช้ โปรดใช้เครื่องมือตรวจสอบการสังเคราะห์ (เช่น Check, Check, Datdogd identics) เพื่อเรียกทดสอบการเรียกดูสภาพแวดล้อมที่ไม่ได้ทํางาน รวมไปถึงการทดสอบการโหลด เพื่อจับความถดถอยของการทํางานด้วย
จอภาพต่อเนื่อง
หลังจากสวิตช์, หน้าจอคอมพิวเตอร์ที่ใช้ตรวจสอบ, อัตราความผิดพลาด, ความเสี่ยง, และค่าธุรกิจ KPIIs ใช้การแจ้งเตือน (ProderDity, Offsgenie) เพื่อกระตุ้นให้การกลิ้งอัตโนมัติหาก ประตูมิติถูกทําลาย ตัวอย่างเช่น ถ้ามีข้อผิดพลาด 5xxx เพิ่มขึ้น 50% ให้กลับสภาพการจราจรเดิม
วางแผนส่วนประกอบต่าง ๆ
อัปโหลดแฟ้ม, วาระการใช้งานของผู้ใช้, และคิวงานจําเป็นต้องจัดการอย่างระมัดระวัง ใช้คลังจดหมายร่วมกันภายนอก (S3, EFS) และแจกจ่ายแคช (Redis, MEMcadeted) เพื่อตรวจสอบสภาพแวดล้อมต่าง ๆ ที่สามารถเข้าใช้ได้ สําหรับคิวการพิมพ์ เพื่อให้แน่ใจว่าจดหมายจะยังไม่สูญหายในระหว่างการสลับ
จง กําหนด ระยะ การ หด ตัว
หลัง จาก เปลี่ยน การ จราจร แล้ว ให้ สภาพ แวด ล้อม เก่า ๆ วิ่ง ไป เป็น เวลา นาน (เช่น 30 นาที) เพื่อ จะ สามารถ กลับ ไป ได้ เร็ว ๆ หาก มี การ ค้น พบ แมลง ที่ มี เล่ห์ เหลี่ยม.
ปัญหา และ วิธี เอา ชนะ
การปรับรูปแบบฐานข้อมูล
ปัญหา ใหญ่ ที่ สุด คือ การ จัด การ กับ การ เปลี่ยน แปลง ใน ฐาน ข้อมูล ซึ่ง ทํา ให้ ความ สามารถ ใน การ ปรับ ปรุง นั้น ไม่ ถูก ต้อง.
- ใช้การย้ายที่เพิ่มเข้าไปเท่านั้น (เพิ่มคอลัมน์ที่ไม่ต้องปล่อยทิ้ง)
- เอาคอลัมน์เก่าออกไป เป็นการย้ายถิ่นฐานหลังการย้ายถิ่นฐาน
- การถอดฐานข้อมูลข้อมูลเปลี่ยนแปลงก่อนที่โปรแกรมรุ่นใหม่จะใช้งาน การตรวจสอบว่ารหัสเดิมยังคงทํางานได้อยู่
ตั้งค่า
การรันสองสภาพแวดล้อมการผลิตที่เหมือนกัน จะเพิ่มต้นทุนพื้นฐานเป็นสองเท่า การอพยพ: ใช้ตัวพิมพ์เล็กสําหรับสภาพแวดล้อมที่ไม่ได้ทํางานระหว่างการทดสอบ หรือใช้การบรรจุบรรจุส่วนประกอบเพื่อแบ่งปันทรัพยากรหลักได้
วาระงานและแคชที่อบอุ่น
เมื่อเปลี่ยนการจราจร แคชจะเย็น ล่วงหน้าเข้าสู่สภาพแวดล้อมใหม่ โดยการจําลองการร้องขอผู้ใช้ทั่วไปก่อนเปลี่ยนเปลี่ยนรูปแบบ เครื่องมือเช่น Gatling หรือ k6 สามารถสร้างการใช้งานที่สมจริงได้
การปรับแต่งเครือข่าย
กฎไฟร์วอลล์, บันทึก DNS และใบรับรอง SSL จะต้องคล้ายกันทั่วสภาพแวดล้อม ใช้ IAC เพื่อตรวจสอบความสอดคล้องกัน หากใช้ DNS แบบมีหน่วยเป็นระบบ ให้บัญชีผู้ใช้สําหรับเวลาการออกเสียง (TTL)
ตัวอย่างโลกจริง: E-commerce Plats form
ร้านค้าออนไลน์ที่มีนักท่องเที่ยว 10 ล้านคนต่อวัน จําเป็นต้องดําเนินการคุณสมบัติใหม่ทุกสัปดาห์โดยไม่ต้องพัก
- 2 กลุ่มสเกตส์ออโตโตเมติก (สีฟ้า, เขียว) หลัง ALB.
- เทอร์ราฟอร์มเพื่อจัดเตรียมโครงสร้างพื้นฐานที่เหมือนกัน
- GitLab CI Telection: การสร้างการทดสอบ, การนําไปใช้กับสีเขียว, ดําเนินการการทดสอบควันเพลย์ไรท์ จากนั้นจุดชนวนกลุ่มเป้าหมายของ ALB
- Recis สําหรับวาระการใช้งานที่แบ่งปันกันผ่านสภาพแวดล้อม
- การย้ายฐานข้อมูล: การใช้อุปกรณ์ย้อนกลับ เข้ากันได้กับการบิน
- การกลิ้งกลับอัตโนมัติหากอัตราการผิดพลาด > 1% ใน 5 นาทีแรก
ผล ก็ คือ ความ ถี่ ใน การ ใช้ งาน เพิ่ม ขึ้น จาก เดือน หนึ่ง ไป เป็น สัปดาห์ โดย ไม่ มี เหตุ การณ์ ที่ ทํา ให้ เสีย เวลา ไป มาก กว่า หก เดือน.
รูปแบบการวน
การใช้แรงงานแบบบลู-เขียว เมื่อผนวกเข้ากับระบบขนส่งแบบ CI/CD ที่ทันสมัยแล้ว จะเสนอวิธีที่มีประสิทธิภาพในการปล่อยซอฟต์แวร์อย่างปลอดภัยและบ่อยครั้ง มันสามารถกําจัดเวลาลงได้โดยทันที และช่วยให้ความมั่นใจของวิศวกรสามารถผลักดันการเปลี่ยนแปลงได้อย่างรวดเร็ว ในขณะที่มีความท้าทายเช่นการอพยพฐานข้อมูลและค่าใช้จ่ายพื้นฐานอยู่ สามารถจัดการวางแผนและแก้ไขให้เหมาะสมเกินไปได้ โดยให้อัตโนมัติกับกระบวนการการปรับเปลี่ยนทั้งระบบ -- จากสภาพแวดล้อมที่ให้บริการเพื่อเปลี่ยนเส้นทางการคมนาคมสามารถประสบความสําเร็จได้อย่างต่อเนื่อง โดยเริ่มใช้หลักการเล็กๆ เพื่อใช้ในการพัฒนา และในการลงทุนที่มีประสิทธิภาพมากขึ้น