เรามีแอพพลิเคชั่นและบริการบนเว็บมากมาย (ผลิตภัณฑ์สาธารณะบางผลิตภัณฑ์, ภายในและส่วนหนึ่งของ "แบ็กเอนด์" ส่วนตัว) ที่พึ่งพาซึ่งกันและกัน แต่ละองค์ประกอบเหล่านี้มี 4 สภาพแวดล้อม (กลุ่มของเซิร์ฟเวอร์ / โหนดที่ให้บริการตามวัตถุประสงค์เฉพาะ):
- ที่ไม่ใช่การผลิต
DEV- สภาพแวดล้อมการพัฒนาแบบบูรณาการที่ CI สร้างการเปลี่ยนแปลงแบบพุช มีประโยชน์สำหรับวิศวกรในการแก้ปัญหาข้อบกพร่องที่หายากที่ไม่สามารถทำซ้ำได้QA- แยก QA / สภาพแวดล้อมการทดสอบDEMO- สภาพแวดล้อมของ UAT ที่เสถียรสำหรับผู้มีส่วนได้เสีย
- การผลิต
LIVE- สภาพแวดล้อมสด / การผลิตของเรา
รหัสโปรโมชั่ไป: LOCAL(เครื่องของนักพัฒนา) => DEV=> QA=> =>DEMOLIVE
บอกว่าเรามีโปรแกรมที่เรียกว่าmyappที่มีการสนับสนุนจากบริการเว็บ RESTful เรียกว่าmywsที่ตัวเองได้รับการสนับสนุนโดย DB mydbที่เรียกว่า
ขณะนี้เรามีสิ่งที่ผมจะเรียกว่า " บงการ " โปรโมชั่นในหมู่อ้างอิงเหล่านี้คือmyapp-devจุดที่จะต้องซึ่งการใช้งานmyws-dev mydb-devในทำนองเดียวกันmyapp-qaชี้ไปที่การใช้งานmyws-qa mydb-qaเดียวกันและDEMOLIVE
ปัญหาของเรื่องนี้คือเมื่อใดก็ตามที่ฉันทำการเปลี่ยนแปลงพูดmyappสิ่งนี้ต้องให้ฉันทำการเปลี่ยนแปลงmywsและmydbเช่นกัน แต่เนื่องจากแต่ละDEVสภาพแวดล้อมชี้ไปที่สภาพแวดล้อมของการอ้างอิงDEVมันหมายความว่าฉันต้องกำหนดเวลาและวางการเปลี่ยนแปลงเหล่านี้ทั้งหมดในเวลาเดียวกัน นอกจากนี้หากการสร้างหนึ่งไม่เสถียร / แตกมันมักจะทำให้ส่วนประกอบต้นน้ำอื่น ๆ ล่ม ตัวอย่างเช่นถ้าแบ่งสิ่งที่นักพัฒนาเมื่อมีการเปลี่ยนmydb-devที่myws-devและmyapp-devกลุ่มที่มักจะยังไม่แน่นอน
เพื่อแก้ปัญหานี้ฉันกำลังรวบรวมข้อเสนอสำหรับสิ่งที่ฉันเรียกว่ากลยุทธ์การส่งเสริมการขาย " เงียบ ": การพึ่งพาระหว่างองค์ประกอบทั้งหมดเป็นไปตามแนวทางนี้:
- อ้างอิงต้นน้ำขึ้นอยู่กับ
DEMOสภาพแวดล้อมสำหรับการอ้างอิงปลายน้ำของพวกเขาสำหรับทุกสภาพแวดล้อมที่ไม่ใช่การผลิตของพวกเขา (DEV,QAและDEMO); และ - อัพสตรีมพึ่งพาขึ้นอยู่กับ
LIVEสภาพแวดล้อมสำหรับการพึ่งพาดาวน์สตรีมของพวกเขาสำหรับสภาพแวดล้อมการผลิตของพวกเขา
โดยใช้การประชุมนี้myapp-devจะ actuall ชี้ไปซึ่งจะใช้myws-demo mydb-demoในทำนองเดียวกันmyapp-qaก็จะชี้ไปและmyws-demomydb-demo
ข้อดีที่ฉันสามารถหาได้คือสร้างความเสถียร : มีโอกาสน้อยกว่ามากที่DEMOสภาพแวดล้อมสำหรับองค์ประกอบเฉพาะจะไม่เสถียรเนื่องจากรหัสไม่สามารถทำได้DEMOโดยไม่ต้องทำการทดสอบอย่างเข้มงวดทั้งในDEVและQAนอก
เสียอย่างเดียวที่ฉันสามารถหาวิธีนี้คือว่าถ้าDEMOไม่หยุดพักเป็นส่วนประกอบโดยเฉพาะอย่างยิ่งทุกสภาพแวดล้อมที่ไม่ใช่การผลิตสำหรับการอ้างอิงต้นน้ำทั้งหมดจะจู่ ๆ ก็ถูกทำลาย แต่ผมจะตอบโต้ว่าเรื่องนี้ควรจะเกิดขึ้นไม่ค่อยมากเพราะของการทดสอบดำเนินการบนและDEVQA
นี้ได้เป็นปัญหาที่นักพัฒนาหลายคน (ที่มีประสบการณ์มากอย่างชาญฉลาดและกว่าตัวเอง) มีการแก้ไขและฉันจะไม่ต้องแปลกใจถ้าปัญหานี้และการแก้ปัญหาอยู่แล้วมีชื่อให้กับพวกเขา (นอกเหนือจากสิ่งที่ฉันเรียกบงการ / siled) ดังนั้นฉันจึงถามว่า: ข้อดีของกลยุทธ์การส่งเสริมการขายแบบเงียบมีค่ามากกว่าข้อเสียใด ๆ และข้อเสียที่ฉันอาจมองเห็นที่นี่คืออะไร?