สร้างห่วงโซ่ DevOps แรกของคุณในห้าขั้นตอนสำหรับผู้เริ่มต้น
DevOps กลายเป็นยาครอบจักรวาลสำหรับกระบวนการพัฒนาที่ช้าเกินไป ขาดการเชื่อมต่อ และมีปัญหาอื่นๆ แต่คุณต้องการความรู้ขั้นต่ำใน DevOps โดยจะครอบคลุมแนวคิดต่างๆ เช่น ห่วงโซ่ DevOps และวิธีการสร้างหนึ่งในห้าขั้นตอน นี่ไม่ใช่คำแนะนำที่สมบูรณ์ แต่เป็นเพียง "ปลา" ที่สามารถขยายได้ เริ่มจากประวัติศาสตร์กันก่อน
บทนำของฉันเกี่ยวกับ DevOps
ฉันเคยทำงานกับระบบคลาวด์ที่ Citi Group และพัฒนาเว็บแอปพลิเคชัน IaaS เพื่อจัดการโครงสร้างพื้นฐานระบบคลาวด์ของ Citi แต่ฉันสนใจเสมอว่าจะปรับห่วงโซ่การพัฒนาให้เหมาะสมและปรับปรุงวัฒนธรรมในหมู่นักพัฒนาได้อย่างไร Greg Lavender CTO ของเราสำหรับ Cloud Architecture and Infrastructure แนะนำหนังสือเล่มนี้ให้ฉัน
ตารางด้านหลังแสดงความถี่ที่บริษัทเปิดตัวเวอร์ชันใหม่:
Amazon, Google และ Netflix จัดการเปิดตัวได้มากขนาดนี้ได้อย่างไร? และมันง่ายมาก: พวกเขาค้นพบวิธีสร้างห่วงโซ่ DevOps ที่เกือบจะสมบูรณ์แบบ
ที่ Citi สิ่งต่างๆ แตกต่างออกไปมากจนกระทั่งเราเปลี่ยนมาใช้ DevOps จากนั้นทีมของฉันมีสภาพแวดล้อมที่แตกต่างกัน แต่เราส่งไปยังเซิร์ฟเวอร์การพัฒนาด้วยตนเอง นักพัฒนาทั้งหมดมีสิทธิ์เข้าถึงเซิร์ฟเวอร์การพัฒนาเพียงเซิร์ฟเวอร์เดียวที่ใช้ IBM WebSphere Application Server Community Edition ด้วยความพยายามที่จะส่งมอบพร้อมกัน เซิร์ฟเวอร์จึง “ล้ม” และแต่ละครั้งที่เราต้อง “เจ็บปวด” เจรจากันเอง นอกจากนี้ เรายังครอบคลุมโค้ดไม่เพียงพอกับการทดสอบ กระบวนการจัดส่งด้วยตนเองที่ใช้เวลานาน และไม่มีวิธีติดตามการส่งมอบโค้ดด้วยความช่วยเหลือจากงานบางอย่างหรือความต้องการของลูกค้า
เห็นได้ชัดว่ามีบางอย่างที่ต้องทำอย่างเร่งด่วน และฉันพบเพื่อนร่วมงานที่มีใจเดียวกัน เราตัดสินใจสร้าง DevOps chain แรกร่วมกัน - เขาตั้งค่าเครื่องเสมือนและเซิร์ฟเวอร์แอปพลิเคชัน Tomcat ส่วนฉันดูแล Jenkins การผสานรวมกับ Atlassian Jira และ BitBucket ตลอดจนการครอบคลุมโค้ดพร้อมการทดสอบ โครงการนี้ประสบความสำเร็จ: เราทำให้ห่วงโซ่การพัฒนาเป็นไปโดยอัตโนมัติอย่างสมบูรณ์ ทำให้มีเวลาทำงานเกือบ 100% บนเซิร์ฟเวอร์การพัฒนา สามารถตรวจสอบและปรับปรุงความครอบคลุมของโค้ดด้วยการทดสอบ และสาขา Git สามารถเชื่อมโยงกับการส่งมอบและปัญหาของ Jira และเครื่องมือเกือบทั้งหมดที่เราใช้สร้างห่วงโซ่ DevOps เป็นโอเพ่นซอร์ส
ในความเป็นจริงแล้ว เชนถูกทำให้ง่ายขึ้น เพราะเราไม่ได้ใช้การกำหนดค่าขั้นสูงโดยใช้ Jenkins หรือ Ansible เลยด้วยซ้ำ แต่เราทำสำเร็จ บางทีนี่อาจเป็นผลมาจากหลักการ
คำอธิบายโดยย่อของ DevOps และ CI/CD Chain
DevOps มีคำจำกัดความที่แตกต่างกัน DevOps เช่น Agile มีสาขาวิชาที่แตกต่างกัน แต่ส่วนใหญ่จะเห็นด้วยกับคำจำกัดความต่อไปนี้: DevOps เป็นวิธีการหรือวงจรชีวิตของการพัฒนาซอฟต์แวร์ หลักการสำคัญคือการสร้างวัฒนธรรมที่นักพัฒนาและพนักงานคนอื่นๆ ทุกคนทำสิ่งที่พวกเขาทำได้ดีที่สุด ความถี่ของการส่งมอบเพิ่มขึ้น ผลผลิตของงานเพิ่มขึ้น ความยืดหยุ่นเพิ่มขึ้น
แม้ว่าเครื่องมือเพียงอย่างเดียวจะไม่เพียงพอสำหรับการสร้างสภาพแวดล้อม DevOps แต่ก็เป็นสิ่งที่ขาดไม่ได้ สิ่งที่สำคัญที่สุดคือการรวมอย่างต่อเนื่องและการส่งมอบอย่างต่อเนื่อง (CI/CD) มีขั้นตอนที่แตกต่างกันในห่วงโซ่สำหรับแต่ละสภาพแวดล้อม (เช่น DEV (การพัฒนา), INT (การรวมระบบ), TST (การทดสอบ), QA (การรับประกันคุณภาพ), UAT (การทดสอบการยอมรับของผู้ใช้), STG (การเตรียมการ), PROD (การใช้งาน)) งานแบบแมนนวลจะเป็นไปโดยอัตโนมัติ นักพัฒนาสามารถสร้างโค้ดที่มีคุณภาพ ส่งมอบ และสร้างใหม่ได้อย่างง่ายดาย
บันทึกนี้อธิบายวิธีสร้างเชน DevOps ในห้าขั้นตอน ดังที่แสดงในภาพด้านล่าง โดยใช้เครื่องมือโอเพ่นซอร์ส
มาทำธุรกิจกันเถอะ
ขั้นตอนที่ 1: แพลตฟอร์ม CI/CD
ก่อนอื่น คุณต้องมีเครื่องมือ CI/CD Jenkins เป็นเครื่องมือ CI/CD แบบโอเพ่นซอร์สที่ได้รับใบอนุญาตจาก MIT ซึ่งเขียนด้วยภาษา Java ซึ่งทำให้การเคลื่อนไหวของ DevOps เป็นที่นิยมและกลายเป็นมาตรฐานโดยพฤตินัยสำหรับ CICD
เจนกินส์คืออะไร? ลองนึกภาพว่าคุณมีแผงควบคุมวิเศษสำหรับบริการและเครื่องมือต่างๆ ด้วยตัวของมันเอง เครื่องมือ CI/CD เช่น Jenkins นั้นไร้ประโยชน์ แต่ด้วยเครื่องมือและบริการที่แตกต่างกัน เครื่องมือนี้จึงมีประสิทธิภาพทั้งหมด
นอกจาก Jenkins แล้วยังมีเครื่องมือโอเพ่นซอร์สอื่น ๆ อีกมากมายให้เลือก
นี่คือลักษณะของกระบวนการ DevOps ด้วยเครื่องมือ CI/CD
คุณมีเครื่องมือ CI/CD ใน localhost แต่ยังไม่มีอะไรให้ทำมากนัก ไปที่ขั้นตอนต่อไปกันเถอะ
ขั้นตอนที่ 2: การควบคุมเวอร์ชัน
วิธีที่ดีที่สุด (และอาจง่ายที่สุด) ในการทดสอบความมหัศจรรย์ของเครื่องมือ CI/CD คือการรวมเข้ากับเครื่องมือการจัดการการควบคุมแหล่งที่มา (SCM) ทำไมคุณถึงต้องการการควบคุมเวอร์ชัน สมมติว่าคุณกำลังสร้างแอปพลิเคชัน คุณเขียนในภาษา Java, Python, C++, Go, Ruby, JavaScript หรือภาษาอื่นๆ ที่เป็นเกวียนและเกวียนเล็กๆ สิ่งที่คุณเขียนเรียกว่าซอร์สโค้ด ในตอนแรก โดยเฉพาะอย่างยิ่งถ้าคุณทำงานคนเดียว คุณสามารถบันทึกทุกอย่างลงในไดเร็กทอรีในเครื่องได้ แต่เมื่อโครงการเติบโตขึ้นและมีคนเข้าร่วมมากขึ้น คุณต้องมีวิธีแชร์การเปลี่ยนแปลงโค้ด แต่หลีกเลี่ยงความขัดแย้งเมื่อรวมการเปลี่ยนแปลง และคุณต้องกู้คืนเวอร์ชันก่อนหน้าด้วยวิธีการใดวิธีหนึ่งโดยไม่ต้องใช้การสำรองข้อมูลและใช้วิธีการคัดลอกและวางสำหรับไฟล์โค้ด
และที่นี่ไม่มี SCM ทุกที่ SCM จัดเก็บโค้ดในที่เก็บข้อมูล จัดการเวอร์ชันของโค้ด และประสานงานระหว่างนักพัฒนา
มีเครื่องมือ SCM มากมาย แต่ Git สมควรได้รับมาตรฐานโดยพฤตินัย ฉันแนะนำให้คุณใช้ แต่มีตัวเลือกอื่น
นี่คือลักษณะของไปป์ไลน์ DevOps หลังจากเพิ่ม SCM
เครื่องมือ CI/CD สามารถอัปโหลดและดาวน์โหลดซอร์สโค้ดโดยอัตโนมัติและทำงานร่วมกันเป็นทีม ไม่เลว? แต่ตอนนี้จะสร้างแอปพลิเคชันที่ใช้งานได้ซึ่งเป็นที่รักของผู้ใช้หลายพันล้านคนได้อย่างไร
ขั้นตอนที่ 3: สร้างเครื่องมือการทำงานอัตโนมัติ
ทุกอย่างเป็นไปอย่างที่ควรจะเป็น คุณสามารถอัปโหลดโค้ดและยอมรับการเปลี่ยนแปลงในการควบคุมแหล่งที่มา และเชิญเพื่อนมาทำงานร่วมกับคุณได้ แต่คุณยังไม่มีแอพ เพื่อให้เป็นเว็บแอปพลิเคชัน จะต้องได้รับการคอมไพล์และทำแพ็กเกจเพื่อแจกจ่ายหรือเรียกใช้งานเป็นไฟล์เรียกทำงาน (ไม่จำเป็นต้องคอมไพล์ภาษาการเขียนโปรแกรมเช่น JavaScript หรือ PHP)
ใช้เครื่องมือสร้างอัตโนมัติ ไม่ว่าคุณจะเลือกเครื่องมือใด เครื่องมือนี้จะประกอบโค้ดในรูปแบบที่ถูกต้องและทำการล้างข้อมูล คอมไพล์ ทดสอบ และจัดส่งโดยอัตโนมัติ เครื่องมือสร้างจะแตกต่างกันไปตามภาษา แต่โดยทั่วไปจะใช้ตัวเลือกโอเพนซอร์สต่อไปนี้
สมบูรณ์แบบ! ตอนนี้ เรามาแทรกไฟล์คอนฟิกูเรชันของ build automation tool ลงใน source control เพื่อให้เครื่องมือ CI/CD สร้างมันขึ้นมา
มันรู้สึกดี. แต่ทั้งหมดนี้จะเปิดตัวที่ไหน
ขั้นตอนที่ 4: เว็บแอปพลิเคชันเซิร์ฟเวอร์
คุณจึงมีไฟล์แพ็คเกจที่สามารถดำเนินการหรือเปิดตัวได้ เพื่อให้แอปพลิเคชันมีประโยชน์จริง ๆ แอปพลิเคชันนั้นจะต้องมีบริการหรืออินเทอร์เฟซบางประเภท แต่คุณต้องใส่ทั้งหมดไว้ที่ใดที่หนึ่ง
เว็บแอปพลิเคชันสามารถโฮสต์บนเว็บแอปพลิเคชันเซิร์ฟเวอร์ แอ็พพลิเคชันเซิร์ฟเวอร์จัดเตรียมสภาพแวดล้อมที่คุณสามารถดำเนินการแพคเกจลอจิก แสดงอินเทอร์เฟซ และแสดงบริการเว็บผ่านซ็อกเก็ต คุณต้องมีเซิร์ฟเวอร์ HTTP และสภาพแวดล้อมอื่นๆ อีกเล็กน้อย (เช่น เครื่องเสมือน) เพื่อติดตั้งแอปพลิเคชันเซิร์ฟเวอร์ สำหรับตอนนี้ สมมติว่าคุณกำลังจัดการกับสิ่งเหล่านี้ทั้งหมดในขณะที่คุณไป (แม้ว่าฉันจะพูดถึงคอนเทนเนอร์ด้านล่าง)
มีเว็บแอ็พพลิเคชันเซิร์ฟเวอร์ที่เปิดอยู่หลายตัว
เรามีห่วงโซ่ DevOps ที่ใช้งานได้เกือบหมดแล้ว เยี่ยมมาก!
โดยหลักการแล้ว คุณสามารถหยุดที่นี่ จากนั้นคุณสามารถจัดการได้ด้วยตัวเอง แต่ควรพูดถึงคุณภาพของโค้ด
ขั้นตอนที่ 5: ทดสอบความครอบคลุม
การทดสอบต้องใช้เวลาและความพยายามอย่างมาก แต่จะดีกว่าหากพบจุดบกพร่องทันทีและปรับปรุงโค้ดให้ถูกใจผู้ใช้ปลายทาง เพื่อจุดประสงค์นี้ มีเครื่องมือแบบเปิดมากมายที่ไม่เพียงแต่ทดสอบโค้ดเท่านั้น แต่ยังให้คำแนะนำในการปรับปรุงด้วย เครื่องมือ CI/CD ส่วนใหญ่สามารถเสียบเข้ากับเครื่องมือเหล่านี้และทำให้กระบวนการเป็นไปโดยอัตโนมัติ
การทดสอบแบ่งออกเป็นสองส่วน: เฟรมเวิร์กการทดสอบสำหรับการเขียนและการดำเนินการทดสอบ และเครื่องมือพร้อมคำใบ้เพื่อปรับปรุงคุณภาพโค้ด
กรอบการทดสอบ
เครื่องมือพร้อมเคล็ดลับคุณภาพ
เครื่องมือและเฟรมเวิร์กเหล่านี้ส่วนใหญ่เขียนขึ้นสำหรับ Java, Python และ JavaScript เนื่องจาก C++ และ C# เป็นกรรมสิทธิ์ (แม้ว่า GCC จะเป็นโอเพ่นซอร์สก็ตาม)
เราได้ใช้เครื่องมือครอบคลุมการทดสอบ และตอนนี้ไปป์ไลน์ DevOps ควรมีลักษณะเหมือนรูปภาพที่จุดเริ่มต้นของบทช่วยสอน
ขั้นตอนเพิ่มเติม
ตู้คอนเทนเนอร์
ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ เซิร์ฟเวอร์แอปพลิเคชันสามารถโฮสต์ในเครื่องเสมือนหรือเซิร์ฟเวอร์ได้ แต่คอนเทนเนอร์เป็นที่นิยมมากกว่า
สำหรับคอนเทนเนอร์มักจะใช้ Docker และ Kubernetes แม้ว่าจะมีตัวเลือกอื่น
อ่านบทความเกี่ยวกับ Docker และ Kubernetes ได้ที่
เครื่องมืออัตโนมัติมิดเดิลแวร์
ห่วงโซ่ DevOps ของเรามุ่งเน้นไปที่การสร้างและส่งมอบแอปพลิเคชันร่วมกัน แต่ยังมีสิ่งที่น่าสนใจอื่นๆ ที่คุณสามารถทำได้ด้วยเครื่องมือ DevOps ตัวอย่างเช่น ใช้เครื่องมือ Infrastructure as Code (IaC) หรือที่เรียกว่าเครื่องมือระบบอัตโนมัติมิดเดิลแวร์ เครื่องมือเหล่านี้ช่วยให้การติดตั้ง การจัดการ และงานอื่นๆ สำหรับมิดเดิลแวร์เป็นแบบอัตโนมัติ ตัวอย่างเช่น เครื่องมือการทำงานอัตโนมัติสามารถนำแอปพลิเคชัน (เว็บแอปพลิเคชันเซิร์ฟเวอร์ ฐานข้อมูล เครื่องมือตรวจสอบ) ที่มีการกำหนดค่าที่ถูกต้อง และส่งไปยังแอปพลิเคชันเซิร์ฟเวอร์
ต่อไปนี้คือตัวเลือกบางส่วนสำหรับเครื่องมือระบบอัตโนมัติมิดเดิลแวร์แบบเปิด:
รายละเอียดในบทความ
คู่มือเริ่มต้นใช้งาน Ansible ปรับใช้กลยุทธ์ระบบอัตโนมัติด้วย Ansible เครื่องมือจัดการการกำหนดค่า 5 อันดับแรก
ตอนนี้อะไร?
นี่เป็นเพียงส่วนเล็ก ๆ ของภูเขาน้ำแข็ง เชน DevOps ทำอะไรได้อีกมาก เริ่มต้นด้วยเครื่องมือ CI/CD และดูว่ามีอะไรอีกบ้างที่คุณสามารถทำให้เป็นอัตโนมัติเพื่อทำให้งานของคุณง่ายขึ้น อย่าลืมเกี่ยวกับ
ต่อไปนี้เป็นบทความเกี่ยวกับ DevOps ที่ดีสำหรับผู้เริ่มต้น:
DevOps คืออะไร 5 ทักษะของนักพัฒนา DevOps DevOps สำหรับทุกคน ข้อมูลเบื้องต้นเกี่ยวกับการวิเคราะห์เชิงคาดการณ์ใน DevOps
คุณยังสามารถรวม DevOps เข้ากับเครื่องมือแบบเปิดที่คล่องตัว:
ที่มา: will.com