Blue Green Deployment & Drupal - คุณรู้มากแค่ไหน?
เผยแพร่แล้ว: 2019-07-23Blue Green Deployment เป็นหนึ่งในแกนนำของกลยุทธ์การปรับใช้ที่เอาชนะข้อจำกัดของแนวทางดั้งเดิมในการปรับใช้แอปพลิเคชัน คุณรู้จัก Blue Green Deployment มากแค่ไหน? การปรับใช้ Blue Green ใน Drupal ดำเนินการอย่างไร
ใช่คุณอ่านถูกต้อง การทำให้แอปพลิเคชันของคุณออฟไลน์สำหรับการอัปเดตหรือในขณะที่เปิดตัวเวอร์ชันใหม่กว่านั้นเป็นงานที่น่ากลัวและเป็นความเจ็บปวดอย่างแท้จริง จริงอยู่ว่าคุณสามารถบรรเทาปัญหานี้ได้ด้วยการหยุดทำงานตามกำหนดเวลา แต่นั่นไม่ใช่สิ่งที่ทำให้ลูกค้ามีความสุข บางไซต์เสียเงินหลายพันดอลลาร์ทุกนาทีที่ลดลง! การปรับใช้หรืออัปเกรดแอปพลิเคชันของคุณควรเป็นสาเหตุที่แท้จริงที่อยู่เบื้องหลังการสูญเสียของคุณหรือไม่?
เรียนรู้ว่าทำไมการปรับใช้สีน้ำเงินสีเขียวจึงเป็นกลยุทธ์ที่ดีที่สุดในการลดเวลาหยุดทำงานและลดความเสี่ยงอื่นๆ ที่เกี่ยวข้องกับการปรับใช้แอปพลิเคชัน ค้นพบเพิ่มเติมเกี่ยวกับการปรับใช้สีน้ำเงินสีเขียว & Drupal
การปรับใช้สีน้ำเงิน-เขียวคืออะไร
Blue-Green Deployment เป็นเทคนิคสำหรับการปล่อยแอปพลิเคชันโดยการย้ายหรือย้ายการรับส่งข้อมูลระหว่างสองสภาพแวดล้อมที่เหมือนกันซึ่งใช้งานแอปพลิเคชันสองเวอร์ชันที่แตกต่างกัน
โดยสังเขป มีเวอร์ชันของแอปพลิเคชัน เรียกว่า "เวอร์ชันสีน้ำเงิน" ในการผลิต จากนั้นมีเราเตอร์ที่ใช้กำหนดเส้นทางการรับส่งข้อมูลไปยังแอป ตอนนี้คุณต้องการเวอร์ชันอื่น "เวอร์ชันสีเขียว" ที่เพิ่มสารพัดเพิ่มเติมเพื่อนำไปใช้งาน อย่างไรก็ตาม คุณยังต้องการให้แน่ใจว่าในขณะที่การปรับใช้นี้กำลังเกิดขึ้น ผู้ใช้ยังสามารถดูแอปพลิเคชันของคุณ กดปุ่ม หรือทำอะไรก็ได้ที่เขาต้องการ โดยที่แอปพลิเคชันของคุณไม่ทำงาน! คล้ายกับการปรับใช้ "เวอร์ชันสีเขียว" อย่างลับๆ ในขณะที่ "เวอร์ชันสีน้ำเงิน" จัดการกับการรับส่งข้อมูลทั้งหมดในระหว่างนี้ ก่อนที่จะสลับการเชื่อมต่อออกไปในที่สุด

ด้วยความสามารถในการปล่อยดาวน์ไทม์และการย้อนกลับที่เกือบเป็นศูนย์ แนวคิดพื้นฐานของการปรับใช้ Blue-Green คือการเปลี่ยนการรับส่งข้อมูลระหว่างสองสภาพแวดล้อมที่เหมือนกันซึ่งใช้งานแอปพลิเคชันสองเวอร์ชันที่แตกต่างกัน แม้ว่าเวอร์ชันปัจจุบันของแอปพลิเคชันจะแสดงโดยสภาพแวดล้อมสีน้ำเงิน แอปพลิเคชันสีเขียวจะแสดงเป็นเวอร์ชันอื่น
ทำไมต้องปรับใช้สีน้ำเงิน-เขียว
ความท้าทายหลักประการหนึ่งที่ทำให้กระบวนการปรับใช้เป็นอัตโนมัติคือการตัดส่วนตัวเอง กล่าวคือ การย้ายแอปพลิเคชันจากขั้นตอนสุดท้ายของการทดสอบไปยังขั้นตอนการใช้งานจริง และสิ่งนี้จะต้องได้รับการดูแลอย่างรวดเร็วเพื่อลดเวลาหยุดทำงาน นี่คือสิ่งที่การปรับใช้สีน้ำเงิน - เขียวทำ ด้วยสภาพแวดล้อมการผลิตสองแบบ (ในลักษณะที่เหมือนกันมากที่สุด) ณ จุดใดเวลาหนึ่ง หนึ่งในนั้นจะทำงาน และเมื่อคุณเตรียมตัวสำหรับการเปิดตัวใหม่ คุณต้องทำการทดสอบทั้งหมดในสภาพแวดล้อมอื่นที่ไม่ได้ใช้งานจริง เมื่อคุณพร้อมที่จะเริ่มใช้งาน สิ่งที่คุณต้องทำคือเปลี่ยนเราเตอร์เพื่อให้การรับส่งข้อมูลทั้งหมดของคุณมุ่งตรงไปยังรุ่นล่าสุดของคุณ และสภาพแวดล้อมอื่น ๆ จะไม่ทำงาน
นอกจากนี้ การปรับใช้สีน้ำเงิน-เขียวยังให้หนึ่งในคุณสมบัติที่สำคัญที่สุด เป็นการย้อนกลับอย่างรวดเร็ว สมมติว่าหากมีสิ่งใดผิดพลาดกับรีลีสล่าสุดของคุณ คุณเพียงแค่เปลี่ยนเราเตอร์กลับ แม้ว่าจะยังคงมีปัญหากับธุรกรรมที่สูญหายเมื่อสภาพแวดล้อมที่ผิดพลาดอยู่ คุณยังสามารถออกแบบในลักษณะที่ทั้งสองสภาพแวดล้อมของคุณได้รับการทำธุรกรรมและหนึ่งทำหน้าที่เป็นตัวสำรองสำหรับอีกสภาพแวดล้อมหนึ่ง
บลู-กรีนปรับใช้อย่างไร?
ตอนนี้เราทราบเกี่ยวกับสภาพแวดล้อมทั้งสองของ Blue-Green Deployment แล้ว ให้เรามาดูแนวทางปฏิบัติที่ดีที่สุดบางประการในการปรับใช้สิ่งเดียวกันนี้
โหลดบาลานซ์ผ่าน DNS Switching
พึงระลึกไว้เสมอว่าในขณะที่เปลี่ยนสภาพแวดล้อม ให้โดเมนของคุณชี้ไปที่เซิร์ฟเวอร์อื่นในที่สุด แทนที่จะไปที่ระเบียน DNS และทำการเปลี่ยนแปลงในอินเทอร์เฟซการจัดการ DNS ให้ใช้การจัดสรรภาระงาน
ปัญหาเกี่ยวกับการเปลี่ยนแปลงระเบียน DNS จะส่งผลให้มีเส้นทางการรับส่งข้อมูลที่ยาวนาน ซึ่งหมายความว่าในขณะที่ผู้ใช้บางคนของคุณยังคงให้บริการโดยสภาพแวดล้อมแบบเก่า คุณจะไม่สามารถควบคุมได้อย่างเต็มที่ว่ากำหนดเส้นทางการรับส่งข้อมูลของคุณไปที่ใด
อย่างไรก็ตาม ตัวจัดสรรภาระงานจะช่วยให้คุณสามารถตั้งค่าเซิร์ฟเวอร์ใหม่ได้ทันที และคุณไม่จำเป็นต้องพึ่งพากลไก DNS ด้วยวิธีนี้ คุณจะสามารถควบคุมการจราจรได้อย่างสมบูรณ์ และคุณสามารถมั่นใจได้ว่าการรับส่งข้อมูลทั้งหมดถูกกำหนดเส้นทางไปยังสภาพแวดล้อมใหม่
Rolling Update
อย่าเปลี่ยนเซิร์ฟเวอร์ทั้งหมดของคุณในครั้งเดียว ดำเนินการอัปเดตแบบต่อเนื่องแทน นั่นคือ แทนที่จะเปลี่ยนไปใช้เซิร์ฟเวอร์ Green จากเซิร์ฟเวอร์สีน้ำเงินทั้งหมดในคราวเดียว ให้ทำงานกับสภาพแวดล้อมแบบบูรณาการ เพิ่มเซิร์ฟเวอร์ใหม่ เลิกใช้เซิร์ฟเวอร์เก่า ทำซ้ำจนกว่าทุกเซิร์ฟเวอร์ใหม่จะเข้าที่ ซึ่งจะช่วยลดการหยุดทำงานของคุณได้อย่างมาก!
การตรวจสอบสภาพแวดล้อม
ในขณะที่การตรวจสอบสภาพแวดล้อมแบบสดนั้นชัดเจน คุณไม่ต้องการที่จะจบลงด้วยการไม่ตรวจสอบสภาพแวดล้อมอื่น ใช่ การตรวจสอบสภาพแวดล้อมอื่นมีความสำคัญน้อยกว่า อย่างไรก็ตาม เนื่องจากสภาพแวดล้อมเดียวกันสามารถทำหน้าที่เป็นทั้งสองสถานะ คุณจะต้องมีวิธีที่ง่ายกว่าในการสลับการแจ้งเตือนระหว่างทั้งสอง ตั้งค่าโทเค็น API ที่แตกต่างกันสำหรับสองสภาพแวดล้อมที่รายงานกลับมา หรือเปลี่ยนนโยบายการแจ้งเตือนในสภาพแวดล้อมโดยทางโปรแกรมเมื่อมีการเปลี่ยนแปลง/เปลี่ยนบทบาทของสภาพแวดล้อม

ระบบอัตโนมัติ
ชุดการดำเนินการด้วยตนเองจะเพิ่มงานของคุณ ให้เขียนสคริปต์ทุกการกระทำในกระบวนการเปลี่ยนแทน กระบวนการเปลี่ยนอัตโนมัติจะทำให้การใช้งาน Blue-Green Deployment รวดเร็ว ง่ายขึ้น และปลอดภัยยิ่งขึ้น
การปรับใช้สีน้ำเงินสีเขียวสำหรับเว็บไซต์ Drupal
ปัญหา
- ในระหว่างการปรับใช้โค้ด Drupal จำเป็นต้องเรียกใช้การอัปเดตฐานข้อมูลเพื่อดำเนินการ และนี่เป็นปัญหาสำคัญเนื่องจากการอัปเดตของ Drupal จะตั้งค่าเว็บไซต์ให้อยู่ในโหมดการบำรุงรักษา และผู้ใช้ของคุณจะได้รับการต้อนรับด้วยหน้าจอสีขาวที่สวยงาม

หากการปรับใช้ล้มเหลว การย้อนกลับทำได้โดยการกู้คืนฐานข้อมูลจากการถ่ายโอนข้อมูลเท่านั้น โดยพิจารณาว่าสกีมาฐานข้อมูลอาจมีการแก้ไข นี่หมายถึงการหยุดทำงาน!
วิธีแก้ไข: การปรับใช้บลูกรีน!
ให้เราดูภาพรวมโครงสร้างพื้นฐานบางส่วนเพื่อใช้ Blue Green Deployment กับ Drupal ops ใด ๆ ใน Drupal ต้องใช้ Nginx และเซิร์ฟเวอร์ php (เพื่อเรียกใช้ Drupal เป็นหลัก) เราจำเป็นต้องมีฐานข้อมูล ที่เก็บไฟล์ แคชบางส่วน และสแต็กได้รับการออกแบบมาให้มีความพร้อมใช้งานสูง
ด้วย Blue Green Deployment คุณต้องปรับใช้สแต็กใหม่ด้วย codebase ใหม่และคัดลอกฐานข้อมูลทั้งหมดของคุณและสถานะที่แตกต่างจาก codebase ก่อนหน้า ควรใช้ Drush

เมื่อตั้งค่าสแต็กที่แตกต่างกันสองสแต็กแล้ว สแต็กการจัดเตรียมจะต้องได้รับการทดสอบอย่างอิสระจากสแต็กที่ใช้งานจริง โดยพื้นฐานแล้ว คุณต้องให้ผู้ใช้ของคุณไปที่สแต็ก (กองการผลิต) และทดสอบเวอร์ชันของเว็บไซต์ที่ปรับใช้ และเมื่อเวอร์ชันอื่น (staging stack) พร้อม คุณเพียงแค่ต้องพลิกเวอร์ชัน ขณะนี้ผู้ใช้กำลังถูกนำไปยังสแต็กใหม่และเวอร์ชันเก่าพร้อมสำหรับการทดสอบแล้ว
การปรับใช้สีน้ำเงินสีเขียวกับ Docker
การปรับใช้ใน Drupal ไม่ใช่เรื่องง่าย แม้ว่าคุณจะต้องตรวจสอบให้แน่ใจว่าได้ปรับใช้โค้ดแล้ว จะมีการจัดการกับการขึ้นต่อกันของผู้แต่ง การอัปเดตสคีมานั้นเป็นข้อมูลล่าสุดและแคชทั้งหมดได้รับการล้างแล้ว คุณยังต้องแน่ใจว่า "เว็บไซต์ที่ตอบสนอง" นั้นเปิดใช้งานและทำงานอยู่ และจะเกิดอะไรขึ้นหากมีปัญหาและการปรับใช้ล้มเหลว คุณย้อนกลับ? หรือหยุดการใช้งาน?
วลีที่คุณกำลังมองหาคือ Blue Green Deployment
ในระหว่างการปรับใช้ Drupal Docker ช่วยให้เกิดการเปลี่ยนแปลงระหว่างแอปพลิเคชันได้ง่าย และทำให้ง่ายต่อการสร้างและเรียกใช้เวอร์ชันต่างๆ ของเวอร์ชันเดียวกัน ในอินสแตนซ์ EC2 จะมีชุดคอนเทนเนอร์นักเทียบท่าที่ยกขึ้นเป็นสีน้ำเงินและสีเขียวเสมอ และ nginx ทำงานเป็นพร็อกซีเซิร์ฟเวอร์ย้อนกลับ การปรับใช้สีน้ำเงินสีเขียวกับ Docker อนุญาตให้ผู้ใช้สร้างเว็บไซต์ Drupal ซึ่งทำงานแบบคู่ขนานในสภาพแวดล้อมที่แตกต่างกันสองแบบ
การปรับใช้สีน้ำเงินสีเขียวกับ AWS
แม้ว่าในอดีต การปรับใช้สีน้ำเงินสีเขียวไม่ใช่ตัวเลือกแรกในการปรับใช้ซอฟต์แวร์ในองค์กร เนื่องจากมีค่าใช้จ่ายสูงและความซับซ้อนที่เกี่ยวข้อง คอนเทนเนอร์ได้เปลี่ยนการรับรู้นี้ไปในทางที่ดี
คอนเทนเนอร์ช่วยลดการใช้การปรับใช้สีน้ำเงินสีเขียวเนื่องจากแพคเกจที่ง่ายและพฤติกรรมที่สอดคล้องกันเมื่อสลับไปมาระหว่างสภาพแวดล้อม และเพื่อเปลี่ยนการกำหนดค่าของคอนเทนเนอร์ คุณเพียงแค่ต้องอัปเดต Dockerfile และสร้างใหม่และปรับใช้คอนเทนเนอร์แทนการอัปเดตซอฟต์แวร์
Amazon ECS ดำเนินการอัปเดตต่อเนื่องเหล่านี้เมื่อคุณอัปเดตบริการ Amazon ECS ที่มีอยู่ การอัปเดตแบบต่อเนื่องสำหรับการปรับใช้ ecs สีน้ำเงินสีเขียวเกี่ยวข้องกับการแทนที่เวอร์ชันที่มีอยู่ของคอนเทนเนอร์ด้วยเวอร์ชันล่าสุด จำนวนคอนเทนเนอร์นี้ที่ Amazon ECS เพิ่มหรือลบระหว่างการอัปเดตจะถูกควบคุมโดยการปรับจำนวนงานสูงสุดและต่ำสุดที่อนุญาตในระหว่างการปรับใช้บริการ เมื่ออัปเดตข้อกำหนดงานของบริการได้รับการอัปเดตด้วยเวอร์ชันล่าสุดของอิมเมจคอนเทนเนอร์ Amazon ECS จะเริ่มแทนที่คอนเทนเนอร์เวอร์ชันเก่าด้วยคอนเทนเนอร์เวอร์ชันล่าสุดโดยอัตโนมัติ

การปรับใช้สีเขียวสีน้ำเงินกับ AWS ECS จะให้ประโยชน์ในการเพิ่มประสิทธิภาพด้วย เนื่องจากคุณไม่ได้เชื่อมโยงกับทรัพยากรชุดเดียวกัน นั่นคือเมื่อขอบเขตประสิทธิภาพของแอปพลิเคชันเปลี่ยนจากเวอร์ชันหนึ่งเป็นอีกเวอร์ชันหนึ่ง คุณเพียงแค่เปิดใช้สภาพแวดล้อมใหม่ด้วยทรัพยากรที่ปรับให้เหมาะสม (อาจมีจำนวนน้อยลงหรือชุดทรัพยากรต่างกันโดยสิ้นเชิง)
การปรับใช้สีเขียวสีน้ำเงินใน AWS ยังเข้ากันได้ดีกับเวิร์กโฟลว์การผสานรวมและการปรับใช้อย่างต่อเนื่อง โดยคอยตรวจสอบความซับซ้อนโดยอนุญาตให้การปรับใช้อัตโนมัติพิจารณาการพึ่งพาสภาพแวดล้อมที่มีอยู่น้อยลง
โซลูชันนี้ช่วยให้ผู้ใช้จัดการการปรับใช้และความสามารถในการปรับขนาดของแพลตฟอร์มเว็บได้อย่างง่ายดายโดยไม่ต้องเสียเวลา การปรับใช้นี้ช่วยในการกำหนดค่าสภาพแวดล้อมที่มีความพร้อมใช้งานสูงที่จะเรียกใช้เว็บไซต์ Drupal โดยไม่มีปัญหาใดๆ
