ทำความเข้าใจการบูรณาการอย่างต่อเนื่องและการปรับใช้อย่างต่อเนื่อง

ได้ยิน CI/CD แต่ไม่แน่ใจว่ามันคืออะไร?

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

วิธีการทั่วไปที่ตามมาโดยวิศวกรซอฟต์แวร์คือการทำงานในสาขาและสร้างคำขอดึงซึ่งอัปเดตสาขาหลักด้วยการอัปเดตใหม่ที่ทำขึ้น เราได้นำแนวปฏิบัติในการเขียนแบบทดสอบมาใช้เพื่อให้แน่ใจว่าการเปลี่ยนแปลงใหม่จะไม่ทำให้เกิดข้อบกพร่อง เมื่อนักพัฒนาทำงานกับคุณลักษณะในกรณีส่วนใหญ่ พวกเขามักจะไม่สร้างคำขอดึงจนกว่าพวกเขาจะเสร็จสิ้นการทำงานกับคุณลักษณะนี้ จะเกิดอะไรขึ้นเมื่อพวกเขาพร้อมก็คือ

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

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

ทางออกคืออะไร?

บูรณาการอย่างต่อเนื่อง

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

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

ก่อนที่จะรวมการเปลี่ยนแปลงใหม่นี้ ต้องมีการทดสอบหลายชุด

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

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

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

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

ประเภทของการทดสอบ

ในการเขียนการทดสอบที่จะเป็นส่วนหนึ่งของกระบวนการบูรณาการ ต่อไปนี้คือบางส่วนที่สามารถนำไปใช้ในกระบวนการได้:

  • การบูรณาการ – เป็นการรวมหน่วยของซอฟต์แวร์แต่ละหน่วยและทดสอบเป็นกลุ่ม
  • หน่วย – เป็นการทดสอบแต่ละหน่วยหรือส่วนประกอบของซอฟต์แวร์ เช่น วิธีการหรือฟังก์ชัน
  • UI – ยืนยันว่าซอฟต์แวร์ทำงานได้ดีจากมุมมองของผู้ใช้
  • การยอมรับ – การทดสอบว่าซอฟต์แวร์ตรงตามข้อกำหนดทางธุรกิจ
  วิธีมอบเพลง ภาพยนตร์ และอื่นๆ เป็นของขวัญจาก iTunes Store

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

เครื่องมือบูรณาการอย่างต่อเนื่อง

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

  • Travis CI – เป็นที่รู้จักในโลกโอเพ่นซอร์สและสัญญาว่าคุณจะได้ทดสอบโค้ดของคุณอย่างราบรื่นในไม่กี่นาที
  • วงกลมCI – ให้พลัง ความยืดหยุ่น และการควบคุมแก่คุณเพื่อทำให้ไปป์ไลน์ของคุณเป็นแบบอัตโนมัติตั้งแต่การควบคุมไปจนถึงการปรับใช้
  • เจนกินส์ – มีปลั๊กอินหลายร้อยตัวเพื่อรองรับการสร้าง การปรับใช้ และทำให้โครงการเป็นแบบอัตโนมัติ

หากคุณยังใหม่กับเจนกินส์ ฉันขอแนะนำให้ทำสิ่งนี้ หลักสูตร Udemy เพื่อเรียนรู้ CI ด้วย Java และ .NET

การปรับใช้อย่างต่อเนื่อง

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

วัตถุประสงค์ในการฝึกใช้งานอย่างต่อเนื่องคือการให้การเปลี่ยนแปลงที่ทำกับผู้ใช้ทันทีที่นักพัฒนารวมการเปลี่ยนแปลงเหล่านี้ในสาขาหลัก

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

เพื่อให้ทีมได้รับประโยชน์จากการปรับใช้อย่างต่อเนื่อง พวกเขาจำเป็นต้องมีสิ่งต่อไปนี้

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

เครื่องมือที่กล่าวถึงสำหรับการผสานรวมอย่างต่อเนื่องยังช่วยให้คุณมีฟังก์ชันในการตั้งค่าระบบการปรับใช้อย่างต่อเนื่อง มีจำนวนมากที่คุณสามารถอ่านได้

บทสรุป

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

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

คุณอาจเรียนรู้วิธีขยายขนาดและเพิ่มประสิทธิภาพ CI/CD

หากคุณเป็นนักพัฒนาและสนใจที่จะเรียนรู้ CI/CD ลองดูที่นี่ หลักสูตรที่ยอดเยี่ยม.

สนุกกับการอ่านบทความ? แบ่งปันให้โลกรู้ได้อย่างไร?

เรื่องล่าสุด

x