Elastic Beanstalk เหมาะสำหรับซีดีระดับองค์กรหรือไม่


11

ฉันทำงานกับโครงการที่ใช้ Jenkins เพื่อสร้างและปรับใช้ microservices กับ Elastic Beanstalk เราปรับใช้สาขาการรวมเข้ากับสภาพแวดล้อมการทดสอบ, ปล่อยสาขาไปยังสภาพแวดล้อมการจัดเตรียมและจากนั้นสร้างต้นแบบขั้นสุดท้ายเพื่อการผลิต ฉันมีข้อกังวลสองสามข้อเกี่ยวกับการทำเช่นนี้ก่อนอื่นหมายความว่าเราต้องจบลงด้วยเมทริกซ์หนึ่งบิวด์ต่อหนึ่งโครงการต่อสภาพแวดล้อม และสองหมายความว่าเราไม่ได้ปรับใช้โครงสร้างบิลด์เดียวกันกับการผลิตที่ได้รับการตรวจสอบความถูกต้องในการจัดเตรียม

ฉันอยากละทิ้ง Beanstalk และย้ายไปที่ ASG ธรรมดาโดยใช้สิ่งต่าง ๆ เช่น Chef สำหรับการปรับใช้ นั่นจะทำให้เรามีหนึ่งบิลด์ต่อโครงการการผลิตสิ่งประดิษฐ์บิลด์และเราสามารถปรับใช้สิ่งประดิษฐ์เดียวกันกับการผลิตที่ได้รับอนุมัติในการจัดเตรียม การเปลี่ยนภาพมีค่าใช้จ่ายล่วงหน้าไม่สำคัญ มีวิธีใช้ Beanstalk ที่ดีกว่าซึ่งจะช่วยให้ CI / CD ที่เชื่อถือได้และง่ายต่อการจัดการมากขึ้นหรือไม่?

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


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

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

คำตอบ:


4

IMO เห็นว่าปัญหาของคุณไม่ได้อยู่กับ Elastic Beanstalk ในสถานการณ์นั้น แต่เป็นกับ Jenkins หรืออย่างน้อยก็ในแบบที่คุณใช้ คุณควรมีสมาธิในการสร้าง "สิ่ง" เพียงครั้งเดียวโดยไม่คำนึงว่ามันคืออะไร

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

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

ตัวอย่างเช่น...

  1. ฉันสร้างไฟล์. jar และเรียกใช้การทดสอบหน่วยบางอย่างกับมันสิ่งพื้นฐาน C / I หากผ่านไฟล์. jar นั้นและเอาต์พุตของการทดสอบจะถูกอัพโหลดไปยังงานไปป์ไลน์เฉพาะนั้น
  2. ไพพ์ไลน์ถัดไปอาจเป็นการปรับใช้ของคุณไปยังสภาพแวดล้อมการทดสอบที่ซับซ้อนมากขึ้น ควรดึงข้อมูลjar ที่แน่นอนจากงานที่แน่นอนที่สร้างขึ้น จากนั้นจะเรียกใช้ Elastic Beanstalk เพื่อปรับใช้ jar นั้นกับสภาพแวดล้อมที่ถูกต้อง
  3. ไปป์ไลน์ถัดไปคือการปรับใช้การจัดเตรียมของคุณ มันไปตลอดทางกลับไปที่ไพพ์ไลน์แรกและดึงjar ที่แน่นอนจากงานที่แน่นอนที่สร้างมันขึ้นมา จากนั้นเรียกใช้ Elastic Beanstalk เพื่อปรับใช้ jar นั้นกับสภาพแวดล้อมที่ถูกต้อง

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

คุณสามารถใช้ Elastic Beanstalk, Chef, Puppet, Ansible, uDeploy หรือเครื่องมืออื่น ๆ จำนวนมากเพื่อทำการปรับใช้จริง นั่นไม่ใช่สิ่งที่ปัญหาของคุณมาจาก เซิร์ฟเวอร์การรวมอย่างต่อเนื่องไม่ได้สร้างขึ้นเพื่อเริ่มต้น แน่นอนว่ามีปลั๊กอินมากมายที่คุณสามารถใช้เพื่อไปยังสถานที่เดียวกันหากเป็นสิ่งที่คุณต้องการ

เซิร์ฟเวอร์การส่งมอบอย่างต่อเนื่องเช่นGoCD , Chef AutomateและConcourseCIถูกสร้างขึ้นโดยเฉพาะเพื่อแก้ปัญหาเช่นนี้


ใช่เป้าหมายของฉันคือการสร้างครั้งเดียวและส่งเสริมการผลิต คำถามของฉันคือว่าฝักถั่วเหมาะกับการใช้งานประเภทนี้หรือไม่ จากสิ่งที่ฉันบอกได้มันดูเหมือนจะไม่จริง ตัวอย่างเช่นวิธีที่แนะนำให้ใช้แอปพลิเคชั่น. NET คือการทำเช่นนั้นจาก visual studio ซึ่งเป็นวิธีปฏิบัติที่เลวร้ายที่สุดที่ฉันสามารถนึก
Adrian

ฉันไม่ได้ใช้มันเป็นการส่วนตัว แต่ดูเหมือนว่ามันจะเป็นถ้าคุณเปลี่ยนคำว่า "เลื่อนระดับ" เป็น "ปรับใช้" ระบบซีดีของคุณเรียกถั่วฝักเพื่อปรับใช้กับการทดสอบรันการทดสอบบางอย่างแล้วรายงานความสำเร็จ / ความล้มเหลว หากสำเร็จระบบซีดีของคุณจะเรียกใช้ beanstalk เพื่อปรับใช้กับการจัดเตรียมและอื่น ๆ ดังนั้นการโปรโมตจะทำโดยเครื่องมือ orchestration ของคุณการปรับใช้จะทำโดยเครื่องมือการปรับใช้ของคุณ (FYI นี่คือเหตุผลที่ บริษัท อย่าง Chef มี Hibernate (สิ่งของ), Automate (โปรโมตสิ่งของ) และ Chef (จัดวางสิ่งของ)
Ken Mugrage

FYI ดูเหมือนว่าคุณสามารถเขียนสคริปต์ (โครงสร้างพื้นฐานเนื่องจากรหัสคือ "สิ่งที่ดี") docs.aws.amazon.com/elasticbeanstalk/latest/dg/… - แต่อีกครั้งประสบการณ์ส่วนตัว 0 อย่างแน่นอน
Ken Mugrage

ไม่ว่าคุณจะใช้คำอะไรคำว่าต้นถั่วไม่ปรากฏเท่าที่ฉันจะบอกได้ ดูเหมือนว่าจะมุ่งสู่การปรับใช้จากแหล่งที่มาไม่ใช่จากสิ่งประดิษฐ์ จากหน้าที่คุณลิงก์: "เมื่อคุณรันการปรับใช้ eb, EB CLI จะรวมเนื้อหาของไดเรกทอรีโครงการของคุณและนำไปใช้กับสภาพแวดล้อมของคุณ" ฉันขอขอบคุณคำตอบ แต่คำถามของฉันเฉพาะกับฝักถั่วดังนั้นหวังว่าใครบางคนที่มีประสบการณ์ฝักถั่วสามารถตีระฆังได้
Adrian

อ่าขอโทษด้วย ฉันแปลความ ~/eb$ eb deploy Creating application version archive "app-150630_014338". Uploading elastic-beanstalk-example/app-150630_014338.zip to S3หมายว่าไฟล์ zip ใด ๆ ที่คุณติดอยู่ในไดเรกทอรีนั้น โชคดี!
Ken Mugrage
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.