คำถามติดแท็ก deployment

1
วิธีการบรรลุการเปลี่ยนแปลงอย่างราบรื่นจาก "รูปแบบการจัดเก็บ VCS ขนาดใหญ่สำหรับผลิตภัณฑ์ทั้งหมด" เป็นรูปแบบ "ที่เก็บ VCS ขนาดเล็กจำนวนมาก"
มันเป็นสถานการณ์ทั่วไปที่ codebase ของผลิตภัณฑ์ที่เก็บโดยที่เก็บในระบบ VCS บางระบบจะวิวัฒนาการไปจนถึงจุดที่ codebase นั้นสามารถมองเห็นได้ว่ามีหลายผลิตภัณฑ์ การแยกรหัสฐานข้อมูลออกจากที่เก็บข้อมูล VCS หลายแห่งซึ่งแต่ละแห่งสำหรับผลิตภัณฑ์เดียวสามารถใช้ประโยชน์ได้หลายอย่าง (ดูประโยชน์ของการมีผลิตภัณฑ์ต่อที่เก็บ VCS ผ่านแบบจำลองพื้นที่เก็บข้อมูลด้านล่าง) ในด้านเทคนิคการแยก codebase นั้นเป็นขั้นตอนที่ค่อนข้างง่ายเนื่องจาก VCS ส่วนใหญ่สนับสนุนการดำเนินการนี้ แยก แต่อาจเพิ่มขึ้นปัญหาทางวิศวกรรมที่เกี่ยวข้องกับการทดสอบแบบอัตโนมัติ, การส่งมอบอย่างต่อเนื่องบูรณาการบริการหรือการตรวจสอบ (ดูปัญหาที่เกิดขึ้นโดยแยก.) องค์กรที่วางแผนที่จะดำเนินการแยกดังกล่าวจึงจำเป็นต้องทราบวิธีดำเนินการเปลี่ยนแปลงนี้อย่างราบรื่นที่สุดเท่าที่จะเป็นไปได้นั่นคือโดยไม่รบกวนการส่งมอบและการติดตามตรวจสอบ ขั้นตอนแรกของเรื่องนี้น่าจะเข้าใจแนวคิดของโครงการได้ดีขึ้นและวิธีแยกวิเคราะห์ใน codebase ขนาดใหญ่ ในคำตอบของคำถามนี้ฉันต้องการจะดู: ความพยายามที่จะให้คำจำกัดความการทำงานของผลิตภัณฑ์คืออะไรซึ่งจะให้เกณฑ์ที่ใช้งานได้จริงเพื่อวิเคราะห์ผลิตภัณฑ์ใน codebase ที่มีอยู่ ตามคำจำกัดความการทำงานนี้ทำอย่างละเอียดแผนที่ดำเนินการแยกจริง เราสามารถทำให้ลดความซับซ้อนของสมมติฐานว่า codebase มีการประมวลผลโดยอัตโนมัติSDLCการดำเนินการอย่างต่อเนื่องบูรณาการและต่อเนื่องการจัดส่ง นั่นคือแต่ละสาขาได้รับการตรวจสอบความถูกต้องโดยการทดสอบอัตโนมัติที่นำไปใช้ใน codebase ปัจจุบันและแต่ละการผสานกับสาขา“ เวทมนต์” บางอย่างจะสร้างสิ่งประดิษฐ์ผลิตภัณฑ์ที่ได้รับการทดสอบและปรับใช้ ( สิ่งประดิษฐ์สินค้าเป็นเช่น tarballs แหล่งที่มาของเอกสาร, ซอฟแวร์ไบนารีเทียบท่าภาพ Amis, unikernels.) แผนดังกล่าวเป็นที่น่าพอใจหากจะอธิบายวิธีการหลีกเลี่ยง ปัญหาที่เกิดจากการแยก ขั้นตอนการทดสอบอัตโนมัติเกี่ยวข้องกับที่เก็บเสาหินที่มีอยู่แล้วและที่เก็บแยกอย่างไร ขั้นตอนการปรับใช้อัตโนมัติเกี่ยวข้องกับที่เก็บเสาหินที่มีอยู่แล้วและที่เก็บแยกอย่างไร …

4
มีข้อเสียของการใช้แพคเกจ deb ราวกับว่ามันเป็นภาชนะในการปรับใช้โปรแกรมประยุกต์หรือไม่?
ทีมของฉันกำลังพยายามตัดสินใจว่าเราควรปรับใช้แอป Nodejs ของเราเป็นแพ็คเกจ deb แทนที่จะพยายามเรียกใช้ในคอนเทนเนอร์เช่น Docker ฉันได้รับแนวคิดนี้จากการอ่านบล็อกนี้ที่นี่ซึ่งทำให้ข้อโต้แย้งที่ดีสำหรับการใช้แพคเกจ deb สำหรับแอพพลิเคชั่นที่มีอยู่แล้ว ประเด็นหลักจากบล็อกนี้ที่น่าสนใจสำหรับเราคือปัญหาของการรักษาระบบนิเวศของนักเทียบท่า (การแชร์พอร์ต, การอนุญาต, การโฮสต์ของ Docker Images ฯลฯ ) ดูเหมือนว่า "dep-packages เป็นคอนเทนเนอร์ดั้งเดิม" เหมาะสมสำหรับบริการขนาดเล็กที่ไม่ต้องกังวลเกี่ยวกับความขัดแย้งของพอร์ตและการพึ่งพาทั้งหมดได้รับการดูแลภายในสภาพแวดล้อมเสมือน อย่างไรก็ตามลำไส้ของฉันกำลังบอกฉันว่าถ้าแพ็คเกจ deb เหมาะสมดีมันจะเป็นเรื่องธรรมดามากขึ้นและนักโฆษณาจะได้รับการโฆษณาว่าเป็นวิธีแก้ปัญหาภาษาเฉพาะเพิ่มเติม มีข้อเสียของการใช้บางอย่างเช่นแพคเกจ deb เพื่อปรับใช้บริการของเราแทนที่จะใช้ระบบเต็มรูปแบบเช่นนักเทียบท่า?

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

2
ในการออกแบบสีเขียวสีน้ำเงินปรับใช้วิธีการเผยแพร่ปริมาณการใช้งาน websocket จากเซิร์ฟเวอร์สดไปเป็น hot swap
การปรับใช้สีน้ำเงินสีเขียวเกี่ยวข้องกับการปั๊มกระแสข้อมูล prod สด (สีน้ำเงิน) ในสภาพแวดล้อม hot swap non prod (สีเขียว) ในการเตรียมการปรับใช้เพื่อใช้งานสภาพแวดล้อมสีเขียวเช่นสีเขียวมีการซิงค์ข้อมูลแบบเต็มกับสภาพแวดล้อมสีน้ำเงิน prod ก่อนหน้า ฉันสงสัยว่าสิ่งที่ผู้คนกำลังใช้เพื่อคัดลอกปริมาณการเข้าชม websocket อย่างต่อเนื่องจากสีฟ้าเป็นสีเขียวฉันจะเขียนของตัวเองหรือมีห้องสมุด websocket ที่เผยแพร่ / สมัครสมาชิกหรืออาจเป็นวิธีที่แตกต่างจากสีเขียวสีน้ำเงิน? แอพของฉันมีเซิร์ฟเวอร์ REST ของ nodejs ซึ่งจัดการปริมาณการใช้งาน websocket จากอุปกรณ์มือถือ ... เซิร์ฟเวอร์ mongodb และอื่น ๆ ... ในแต่ละคอนเทนเนอร์ใน GCE / AWS ฉันรู้ว่าฉันสามารถทำให้ mongodb ซิงค์จากสีน้ำเงินเป็นสีเขียวได้ แต่นั่นจะไม่ใช้เซิร์ฟเวอร์ nodejs สีเขียวที่มีปริมาณการใช้งานสดซึ่งเป็นการตรวจสอบการถดถอยที่ดีฉันกำลังมองหา อาจเป็นไปได้ถ้าฉันเพิ่งส่งต่อ HTTP ปริมาณการใช้ websocket ที่ทำงานบน HTTP จะดูแลตัวเองและไม่ต้องการตั้งค่าสีเขียวสีน้ำเงินที่เฉพาะเจาะจง

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

2
ฉันจะปรับใช้กับ Kubernetes ได้อย่างไรโดยอัตโนมัติ
สมมติว่าฉันติดตั้ง Kubernetes ผ่านทาง Rancher และ Jenkins กำลังสร้างอิมเมจใหม่และผลักดันพวกเขาไปที่ DockerHub เมื่อเช็คอินรหัสใหม่ไปที่ GitHub ฉันจะทำให้รูปภาพใหม่ถูกปรับใช้โดยอัตโนมัติได้อย่างไร อีกวิธีหนึ่งในการถามคำถามคือ“ ฉันเคยใช้ Octopus เพื่อจัดการการปรับใช้ของฉัน มีสิ่งที่คล้ายกันในตัวกับ Kubernetes หรือ Rancher หรือไม่” ท้ายที่สุดมันเป็นช่องว่างสุดท้ายที่ฉันต้องดิ้นรน

4
โครงสร้างพื้นฐานเป็นรหัสและ TDD
โครงสร้างพื้นฐานเป็นรหัสบอกให้เราใช้เครื่องมือที่ทำให้งานสร้างของคุณเป็นแบบอัตโนมัติ ยิ่งใหญ่ เครื่องมืออย่างansible , พ่อครัว , หุ่นเชิด , กองเกลือและอื่น ๆ ผลักดันเราให้เขียนว่าโครงสร้างพื้นฐานมีลักษณะอย่างไรในขณะที่แก้ไขความแตกต่าง ใน Salt กองบิตเหล่านี้จะเรียกว่ารัฐ หากรัฐไม่ตรงกับความจริงเครื่องมือจะแก้ไขให้เรา กล่าวอีกนัยหนึ่ง - เรากำลังเขียนการทดสอบสำหรับโครงสร้างพื้นฐานของเราและหากการทดสอบล้มเหลวเครื่องมือจะแก้ไขด้วยตนเอง อย่างน้อยนั่นก็เป็นความคิด XP สอนให้เราใช้ TDD และคำถามคือถ้ามันใช้กับโครงสร้างพื้นฐานได้หรือไม่ การขับรถแสดงให้เห็นว่ามันเป็น ฉันนึกภาพการทดสอบบางประเภทที่มีประโยชน์มาก เราเขียนการทดสอบควันที่มาพร้อมกับบริการที่ปรับใช้เพื่อให้แน่ใจว่าบริการที่ปรับใช้แบบ end-to-end จะทำงานและทำงานตามที่คาดไว้ นี่จะเป็นการเรียก API หรือ / และ systemctl ตรวจสอบเพื่อให้แน่ใจว่าสิ่งที่เราเพิ่งปรับใช้งาน ฟังก์ชั่นจำนวนมากนี้สามารถครอบคลุมในสถานะเดียวกันเนื่องจากเครื่องมือเช่น ansible มีสถานะเพื่อให้แน่ใจว่าบริการกำลังทำงานอยู่ มีโครงการโมเลกุลที่อนุญาตให้เรียกใช้แต่ละบทบาท (ตามที่เรียกว่าสถานะของมัน) เทียบกับนักเทียบท่าหรือเครื่องมือ virtualisation ชั่วคราวอื่น กองกำลังนี้จะแยกบทบาทและอนุญาตให้ดำเนินการแยกจาก playbook ขณะที่ทำงานกับพวกเขา การทดสอบส่วนใหญ่อนุญาตการเยาะเย้ยตัวแปรที่บทบาทควรจะทำงานด้วย ตัวอย่างอื่น ๆ ดูเหมือนจะซ้ำซ้อนของเอ็นจิน …

2
เครื่องมือสำหรับการจัดเก็บตามการกำหนดค่าสภาพแวดล้อม
ฉันมีความต้องการในการจัดเก็บข้อมูลการกำหนดค่าตามสภาพแวดล้อมพื้นฐานในเครื่องมือ นี่คือเครื่องมือที่มี GUI สำหรับการเพิ่ม / อัปเดตค่าการกำหนดค่า (เช่นสตริงการเชื่อมต่อ) สิ่งนี้ควรมีค่าเริ่มต้นและสามารถเปลี่ยนแปลงได้ตามสภาพแวดล้อมที่แตกต่างกัน ควรมี API เพื่อดึงค่าการกำหนดค่าเหล่านี้ระหว่างการปรับใช้กับสภาพแวดล้อมเฉพาะเพื่อเพิ่มไปยังแอปพลิเคชัน ฉันค้นหามาระยะหนึ่งแล้วและไม่เห็นเครื่องมือใด ๆ ที่เหมาะกับรายการนี้ มีข้อเสนอแนะหรือไม่? หมายเหตุ : ปัจจุบันการตั้งค่าอยู่ในตัวแปร TeamCity และการปรับใช้นั้นใช้สคริปต์ PowerShell

2
เป็นไปได้หรือไม่ที่จะปรับใช้อัตโนมัติกับทุกการกระทำในสาขาเฉพาะโดยใช้ Travis CI และ GitHub
ฉันต้องการปรับใช้ไฟล์โดยใช้ Travis CI และใช้งานได้กับการติดแท็ก เมื่อส่งข้อมูลไปที่สาขาจะมีคำเตือน: การข้ามการปรับใช้กับผู้ให้บริการการเผยแพร่เนื่องจากไม่ใช่การติดแท็ก มีวิธีใดบ้างที่จะนำไปใช้กับการส่งข้อมูลแบบแยกย่อยโดยใช้ Travis CI? เพื่อชี้แจงมันจะทำงานเมื่อฉันแท็กการกระทำ แต่ฉันต้องการที่จะปรับใช้ไฟล์ในแต่ละการกระทำสำหรับสาขาที่กำหนด

5
เครื่องมือการจัดการการกำหนดค่ามีความเหมาะสมที่จะใช้เป็นเครื่องมือการปรับใช้หรือไม่
หลังคำตอบของฉันสำหรับคำถาม: DevOps จะช่วยปรับปรุงขั้นตอนการทำสัญญาซอฟต์แวร์ได้อย่างไร Tensibai มีคำถาม: อะไรที่ทำให้ Capistrano จำเป็นต้องใช้หุ่นเชิดหรือพ่อครัว? คำตอบของฉันคือโพสต์ลิงก์ไปยังบทความของโนอาห์กิ๊บส์ "เราต้องการทั้ง Capistrano และ Chef หรือไม่?" . โดยส่วนตัวแล้วฉันยังสมัครรับข้อมูลมุมมองของโนอาห์ว่าเหมาะสมที่สุดที่จะ: ใช้เครื่องมือการปรับใช้ผู้เชี่ยวชาญเช่น Capistrano สำหรับการปรับใช้ ใช้เครื่องมือการจัดการการกำหนดค่าผู้เชี่ยวชาญเช่น Chef สำหรับการจัดการการกำหนดค่า วิธีการพื้นฐานที่เครื่องมือแต่ละประเภทใช้ในการทำงานให้เสร็จสมบูรณ์นั้นแตกต่างกันมาก: เครื่องมือการจัดการการกำหนดค่า - เป็นเรื่องเกี่ยวกับการสร้างและรักษาสถานะที่ต้องการของระบบ ตัวอย่างของเครื่องมือในการจัดการการกำหนดค่าเป็นเชฟ , หุ่นกระบอก , เบิ้ล , PowerShell DSC , เกลือสแต็ค เครื่องมือการปรับใช้ - เป็นเรื่องเกี่ยวกับการส่งมอบเวอร์ชั่นของซอฟต์แวร์ในสภาพแวดล้อมการโฮสต์ซึ่งมีฟังก์ชันการทำงานเพื่อรักษาซอฟต์แวร์หลายเวอร์ชันบนเครื่องหลายเครื่องและจัดการเวอร์ชันที่เป็น "ปัจจุบัน" ซึ่งมีความจำเป็นโดยธรรมชาติ ตัวอย่างของเครื่องมือการปรับใช้เป็นCapistrano , ปลาหมึก Deploy , DeployerและCommand.io ฉันเชื่อว่าเครื่องมือการจัดการการกำหนดค่าสามารถทำงานของเครื่องมือการปรับใช้และในกรณีของโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูปแบบพวกเขาเป็นเครื่องมือที่เหมาะสมที่สุดสำหรับงานเนื่องจากเวอร์ชันซอฟต์แวร์บนเป้าหมายไม่จำเป็นต้องได้รับการดูแล คำถาม:มีเครื่องมือการจัดการการกำหนดค่าเช่น Chef, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.