สภาพแวดล้อมของ PreProd และ Prod นั้นมีความคล้ายคลึงกันอย่างไร


10

ฉันเพิ่งได้รับโครงการและระหว่างการเปิดตัวเราตระหนักว่ามันไม่ได้ทำงานในการผลิต มันใช้งานได้ในสภาพแวดล้อมอื่น ๆ ทั้งหมด แต่เนื่องจากเรามีทีมวางจำหน่ายแยกต่างหากและเราไม่สามารถตั้งค่าเซิร์ฟเวอร์และสภาพแวดล้อมด้วยตนเองได้เราจึงไม่สามารถมองเห็นการกำหนดค่าได้

เราสงสัยว่า Prod มีสิทธิ์ผู้ใช้บางอย่างในการตั้งค่าบัญชีหรือ IIS ที่แตกต่างกันดังนั้นเราจึงใช้งานได้แม้ว่าตอนนี้

ดังนั้นฉันคิดว่าสิ่งทั้งหมดนี้เป็นประสบการณ์การเรียนรู้สำหรับฉันและฉันไม่ต้องการสิ่งเดียวกันซ้ำอีกครั้ง ฉันอยากถามว่าสภาพแวดล้อมเหล่านี้แตกต่างกันอย่างไร ฉันคิดเสมอว่า PreProd ควรเป็นสำเนาที่เหมือนกันกับสภาพแวดล้อม Prod โดยใช้สำเนาของฐานข้อมูลเดียวกันโดยใช้สำเนาของบัญชีผู้ใช้เดียวกันควรติดตั้งบนเซิร์ฟเวอร์เดียวกันเป็นต้น

แต่ฉันควรจะไปไกลแค่ไหน? หากเว็บไซต์หันเข้าหาภายนอกควรให้ PreProd หันเข้าหาภายนอกหรือไม่ ถ้าเว็บไซต์มีส่วนประกอบที่ไม่จำเป็นต้องมีบัญชีผู้ใช้หรือรหัสผ่านเพื่อนำทางไป มันยังโอเคไหมที่จะเปิดเผยกับโลกภายนอก?


ทุกที่ที่ฉันทำงาน Pre-Prod เป็นสำเนาของการผลิตโดยตรงยกเว้นฐานข้อมูลจะมีอายุหนึ่งสัปดาห์
Nickz

@ นิค: ฉันไม่ได้หมายถึงเพียงแค่ฐานรหัสฉันหมายถึงเหมือนการตั้งค่าทั้งหมดของสภาพแวดล้อมทั้งหมด
RoboShop

คำตอบ:


6

คุณควรทำการทดสอบในสภาพแวดล้อมที่เหมือนกับการผลิตของคุณเท่าที่ทำได้ หากคุณไม่ทำเช่นนั้นคุณจะไม่ได้ทดสอบว่าลูกค้าของคุณจะใช้อะไร หากไม่มีสิ่งใดคุณต้องการสภาพแวดล้อมเช่นนี้เพื่อทดสอบรายงานข้อผิดพลาด

เห็นได้ชัดว่าจะมีสิ่งที่คุณจะไม่ต้องการที่เหมือนกัน - เชื่อมโยงไปยังฤดูใบไม้ผลิระบบการชำระเงินที่อยู่ในใจ แต่เหล่านี้ควรจะเยาะเย้ยราวกับว่าพวกเขาสิ่งที่จริง นอกจากนี้ยังมีสิ่งที่คุณไม่สามารถทำซ้ำได้ - ขนาดของระบบ

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

ฉันไม่เห็นปัญหาเกี่ยวกับส่วนประกอบที่ไม่ต้องการบัญชีและรหัสผ่าน หากไม่ต้องการรหัสผ่านก็ไม่จำเป็น / สำคัญถ้ามันละเอียดอ่อนแล้วทำไมมันไม่ได้รับรหัสผ่าน?


ว้าวนั่นเป็นคำตอบที่โง่ ดังนั้นในสภาพแวดล้อมการทดสอบของคุณหากคุณทำการซื้อมันควรเรียกเก็บเงินจากบัตรเครดิตและจัดส่งสิ่งที่คุณซื้อ หากสภาพแวดล้อมการผลิตประกอบด้วยเซิร์ฟเวอร์ 150 เครื่องการทดสอบ env ควรทำเช่นกัน? ฉันจะบอกว่า "ชัดเจน" ต้องมีความแตกต่างระหว่างการทดสอบและการทดสอบ แต่มันไม่ชัดเจนสำหรับ ChrisF
Malvolio

@ Malvolio - ไม่ ฉันไม่ได้หมายความอย่างนั้น ฉันคิดถึงประเด็นต่าง ๆ ที่เกิดขึ้นกับคำถามการอนุญาตการเชื่อมต่อ ฯลฯ
ChrisF

11

ฉันคิดว่าวิธีปฏิบัติที่ดีที่สุดสำหรับวิธีนี้คือแนวทางการปรับใช้ Blue Green ซึ่งประกาศโดยJez Humbleและ David Farley ในหนังสือจัดส่งต่อเนื่องและอธิบายโดย Martin Fowler ในบล็อกโพสต์Blue Green Deployment ของเขา

หลักฐานเป็นเรื่องง่ายมาก จากโพสต์ของ Martin Fowler:

การปรับใช้สีน้ำเงินสีเขียว

แนวทางการปรับใช้สีน้ำเงิน - เขียว ... [มั่นใจ] คุณมีสภาพแวดล้อมการผลิตสองแบบเหมือนกันมากที่สุด เมื่อใดก็ตามที่หนึ่งในนั้นสมมติว่าสีน้ำเงินเป็นตัวอย่างอยู่ เมื่อคุณเตรียมรุ่นใหม่ของซอฟต์แวร์ของคุณคุณจะทำขั้นตอนสุดท้ายของการทดสอบในสภาพแวดล้อมสีเขียว เมื่อซอฟต์แวร์ทำงานในสภาพแวดล้อมสีเขียวคุณจะสลับเราเตอร์เพื่อให้คำขอที่เข้ามาทั้งหมดไปยังสภาพแวดล้อมสีเขียว - ตอนนี้สีฟ้าไม่ได้ทำงาน

การปรับใช้สีน้ำเงิน - เขียวยังช่วยให้คุณสามารถย้อนกลับได้อย่างรวดเร็ว - หากมีสิ่งใดผิดพลาดคุณจะเปลี่ยนเราเตอร์กลับสู่สภาพแวดล้อมสีน้ำเงินของคุณ

วิธีนี้จะช่วยแก้ปัญหาของคุณโดยไม่มีสภาพแวดล้อมก่อนการผลิตและการผลิตที่เหมือนกันรวมถึงการปรับใช้กลยุทธ์การปรับใช้ของคุณให้ดีที่สุด


1+ สำหรับแผนภาพเจ๋ง ๆ
Nickz

mmm ไม่แน่ใจเกี่ยวกับการทำให้ฐานข้อมูลซิงค์อยู่ มันคงเป็นเรื่องยาก เกิดอะไรขึ้นถ้าการทำธุรกรรมมาผ่านเซิร์ฟเวอร์ preprod ของคุณ? นั่นจะสะท้อนให้เห็นในฐานข้อมูลการผลิตหรือไม่?
RoboShop

เขียนว่ามีราคาแพงมาก คุณต้องทำซ้ำฮาร์ดแวร์ทั้งหมดที่จำเป็นสำหรับการผลิตจริงเพื่อทดสอบ แต่ใช่ไดอะแกรมเจ๋ง ๆ
Malvolio

1
เทคนิค, n. ในศาลอังกฤษมีชายคนหนึ่งชื่อโฮมถูกลองใส่ร้ายป้ายสีในข้อหากล่าวหาเพื่อนบ้านว่าเป็นฆาตกร คำพูดที่ถูกต้องของเขาคือ: "เซอร์โธมัสโฮลท์จับปังตอและหัวป่าปรุงอาหารของเขาบนศีรษะดังนั้นด้านหนึ่งของศีรษะตกลงบนไหล่ข้างหนึ่งและอีกด้านหนึ่งบนไหล่อีกข้าง" จำเลยได้รับการปล่อยตัวโดยคำสั่งของศาลผู้พิพากษาที่เรียนรู้ถือได้ว่าคำพูดนั้นไม่ได้คิดข้อหาฆาตกรรมเพราะพวกเขาไม่ได้ยืนยันการตายของพ่อครัวว่าเป็นเพียงการอนุมาน - Ambrose Bierce
Malvolio

1
ใช่ในทางเทคนิคแล้วฉันไม่จำเป็นต้องทำซ้ำฮาร์ดแวร์ แต่แม้ว่าคุณจะหลบเลี่ยงข้อกำหนดนั้นด้วยการทำ virtualization และเช่นนั้นคุณ (a) จัดสรรทรัพยากรอย่างหนักเช่นแบนด์วิดท์และ CPU ไปยังแต่ละสภาพแวดล้อมซึ่งจะมี เดียวกันค่าใช้จ่ายที่เป็นฮาร์ดแวร์ซ้ำหรือ (ข) ใช้ทรัพยากรร่วมกันซึ่งหมายความว่าปัญหาการทดสอบของคุณสามารถนำมาลงระบบการผลิตของคุณ
Malvolio

3

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


1

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

อย่างไรก็ตามการจำลองแบบที่แน่นอนอาจไม่สามารถทำได้ภายใต้งบประมาณปัจจุบันของคุณ ยิ่งใกล้เข้ามายิ่งการทดสอบมีประสิทธิภาพมากขึ้นและปัญหาที่จะเกิดขึ้นน้อยลงก็จะคืบคลานขึ้นในระหว่างการผลักดันการผลิต

ฉันใช้ท่าทางที่แตกต่างจาก ChrisFหากสภาพแวดล้อมนี้ควรเป็นที่สาธารณะ ฉันบอกว่ามันไม่ควรจะเป็น ฉันจะเลือกที่จะทำงานกับสำเนาของฐานข้อมูลจริงหรืออย่างน้อยก็สำเนาของชุดย่อยของฐานข้อมูลจริงที่เกิดขึ้นจริงและสภาพแวดล้อมแบบหันเข้าด้านใน ด้วยวิธีนี้คุณสามารถทดสอบกับข้อมูลจริงและสมจริงและไม่ต้องกังวลกับรูโหว่ที่ทำให้เกิดการรั่วไหล แน่นอนคุณสามารถฆ่าเชื้อข้อมูล แต่อาจลบ "ข้อมูลสกปรก" บางส่วนออกจากสภาพแวดล้อมที่อาจนำไปสู่การค้นพบข้อบกพร่องในระบบถ่ายทอดสด


1
หากคุณกำลังทำการทดสอบความปลอดภัยฉันยอมรับว่าไม่ควรเปิดเผยต่อสาธารณะ แต่คุณอาจต้องการให้เป็นแบบทดสอบการยอมรับขั้นสุดท้าย (ตัวอย่าง)
ChrisF

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

ใช่เราเคยมีคู่แข่งที่จะทดสอบสิ่งของทั้งหมดของพวกเขาในคอมพิวเตอร์สาธารณะเป็นเวลาหนึ่งสัปดาห์ก่อนที่จะมีชีวิตจริง พวกเขาไม่เคยคิดออกคุณสมบัติวิธีการที่เรามักจะได้ออกขวาก่อนที่พวกเขาไม่ ...
Malvolio

1

ทุกที่ที่ฉันทำงานธนาคารโทรคมนาคมและอื่น ๆ pre-prod เป็นสำเนาของการผลิตโดยตรงยกเว้นฐานข้อมูลจะมีอายุประมาณหนึ่งสัปดาห์หรือมากกว่านั้น มันเป็นกระบวนการที่ใหญ่มากในการรักษาข้อมูลข้าม pre-prod แต่มันก็ถือเป็นสิ่งจำเป็นสำหรับ บริษัท ที่ฉันทำงานซึ่งใช้ pre-prod

ในส่วนของธนาคาร AU รัฐบาลจะปรับธนาคารสำหรับความล้มเหลวในการให้บริการเช่นเว็บไซต์ ATM และอื่น ๆ หยุดทำงานทุกนาที ไม่ใช่เรื่องแปลกที่จะได้ยินว่าทีมพัฒนา / ทดสอบยิงเหตุการณ์ pre-prod ไม่ได้สำหรับทุก บริษัท หรือกระบวนการพัฒนา แต่จำเป็นสำหรับบางคน


3
"ไม่ใช่เรื่องแปลกที่จะได้ยินว่าทีมพัฒนา / ทดสอบทดสอบยิงเหตุการณ์" - ใช่นั่นจะช่วยได้ การทุบตีจะดำเนินต่อไปจนกว่าขวัญกำลังใจจะดีขึ้น
Malvolio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.