โครงสร้างพื้นฐานในรูปแบบโค้ด
โครงสร้างพื้นฐานในรูปแบบโค้ด ( IaC ) คือกระบวนการจัดการและจัดสรรทรัพยากรศูนย์ข้อมูล คอมพิวเตอร์ ผ่านไฟล์คำจำกัดความที่เครื่องอ่านได้ แทนที่จะใช้ การกำหนด ค่าฮาร์ดแวร์ ทางกายภาพ หรือเครื่องมือการกำหนดค่าแบบโต้ตอบ[ 1 ]กล่าวคือ แทนที่จะต้องสร้างการกำหนดค่าด้วยตนเอง จะมีการกำหนดค่าที่ตั้งไว้ล่วงหน้าซึ่งสามารถนำไปใช้กับเครื่องได้[ 2 ]โครงสร้างพื้นฐานด้านไอทีที่จัดการโดยกระบวนการนี้รวมถึงอุปกรณ์ทางกายภาพ เช่นเซิร์ฟเวอร์แบบ bare-metalและเครื่องเสมือนและทรัพยากรการกำหนดค่าที่เกี่ยวข้อง คำจำกัดความอาจมีอยู่ใน ระบบ ควบคุมเวอร์ชันแทนที่จะเป็นกระบวนการด้วยตนเอง ไฟล์คำจำกัดความอาจใช้สคริปต์หรือคำจำกัดความแบบประกาศ แต่ IaC มักใช้แนวทางแบบประกาศ มากกว่า
ประวัติศาสตร์
แนวคิดการจัดการโครงสร้างพื้นฐานผ่านโค้ดเกิดขึ้นจากแนวทางการจัดการการกำหนดค่าในยุคแรก ในช่วงทศวรรษ 1990 เครื่องมือต่างๆ เช่นCFEngineซึ่งสร้างโดย Mark Burgess ในปี 1993 ได้นำเสนอแนวคิดในการอธิบายการกำหนดค่าระบบในภาษาเชิงประกาศแทนที่จะดำเนินการคำสั่งด้วยตนเอง ซึ่งเป็นการวางรากฐานทางปัญญาสำหรับ IaC [ 3 ]
ภาพรวม
IaC เกิดขึ้นเมื่อองค์กรต่างๆ เริ่มจัดการโครงสร้างพื้นฐานที่ใหญ่ขึ้นและซับซ้อนมากขึ้น โดยเฉพาะอย่างยิ่งกับการเติบโตของการประมวลผลแบบคลาวด์และความจำเป็นในการจัดสรรทรัพยากรอย่างสม่ำเสมอและในระดับที่ใหญ่ การจัดการการกำหนดค่าโครงสร้างพื้นฐานเหมือนกับซอฟต์แวร์ - การจัดเก็บไว้ในระบบควบคุมเวอร์ชัน การตรวจสอบ และการปรับใช้โดยอัตโนมัติ ช่วยให้ทีมลดข้อผิดพลาดด้วยตนเองและสร้างสภาพแวดล้อมซ้ำได้อย่างน่าเชื่อถือ ความสามารถในการจัดการโครงสร้างพื้นฐานเป็นโค้ดและใช้เครื่องมือเดียวกันกับโครงการซอฟต์แวร์อื่นๆ จะช่วยให้นักพัฒนาสามารถปรับใช้แอปพลิเคชันได้อย่างรวดเร็ว[ 4 ]
ข้อดี
คุณค่าของ IaC สามารถแบ่งออกเป็นสามประเภทที่วัดได้ ได้แก่ ต้นทุน ความเร็ว และความเสี่ยงการลดต้นทุนมีเป้าหมายเพื่อช่วยองค์กรไม่เพียงแต่ในด้านการเงินเท่านั้น แต่ยังรวมถึงด้านบุคลากรและความพยายามด้วย ซึ่งหมายความว่าการกำจัดส่วนประกอบด้วยตนเองจะช่วยให้องค์กรสามารถมุ่งเน้นความพยายามไปที่งานอื่นๆ ขององค์กรได้การทำงานอัตโนมัติของโครงสร้างพื้นฐานช่วยเพิ่มความเร็วผ่านการดำเนินการที่รวดเร็วขึ้นเมื่อกำหนดค่าโครงสร้างพื้นฐานของคุณ และให้การมองเห็นเพื่อช่วยให้ทีมอื่นๆ ทั่วทั้งองค์กรทำงานได้อย่างรวดเร็วและมีประสิทธิภาพมากขึ้น การทำงานอัตโนมัติช่วยลดความเสี่ยงที่เกี่ยวข้องกับข้อผิดพลาดของมนุษย์ เช่น การกำหนดค่าด้วยตนเองที่ไม่ถูกต้อง การกำจัดสิ่งนี้สามารถลดเวลาหยุดทำงานและเพิ่มความน่าเชื่อถือ ผลลัพธ์และคุณลักษณะเหล่านี้ช่วยให้องค์กรก้าวไปสู่การนำวัฒนธรรมDevOps มาใช้ ซึ่งเป็นการทำงานร่วมกันของการพัฒนาและการดำเนินงาน[ 5 ]
ประเภทของแนวทาง
โดยทั่วไปแล้ว การออกแบบโครงสร้างข้อมูลแบบอินเทอร์เฟส (IaC) มีสองแนวทางหลัก ได้แก่แนวทางเชิงประกาศ ( เชิงฟังก์ชัน ) และแนวทางเชิงคำสั่ง ( เชิงกระบวนการ ) ความแตกต่างระหว่างแนวทางเชิงประกาศและเชิงคำสั่งนั้นอยู่ที่ว่า“อะไร”กับ “ อย่างไร”เป็น หลักแนวทางการประกาศจะเน้นไปที่การกำหนดค่าเป้าหมายสุดท้ายที่ควรจะเป็นแนวทาง เชิงบังคับมุ่งเน้นไปที่วิธีการเปลี่ยนแปลงโครงสร้างพื้นฐาน เพื่อให้ตรงตามข้อกำหนดนี้ [ 6 ]แนวทางเชิงประกาศจะกำหนดสถานะที่ต้องการ และระบบจะดำเนินการตามสิ่งที่จำเป็นต้องเกิดขึ้นเพื่อให้บรรลุสถานะที่ต้องการนั้น แนวทางเชิงบังคับจะกำหนดคำสั่งเฉพาะที่ต้องดำเนินการตามลำดับที่เหมาะสมเพื่อให้ได้ผลลัพธ์ที่ต้องการ[ 7 ]
วิธีการ
IaC ช่วยให้องค์กรสามารถจัดการเซิร์ฟเวอร์และการกำหนดค่าต่างๆ โดยใช้โค้ดได้ มีสองวิธีในการใช้การกำหนดค่าเหล่านี้กับเซิร์ฟเวอร์ ได้แก่ วิธี ' push ' และ ' pull ' ในวิธี 'push' ระบบที่ควบคุมการกำหนดค่าจะส่งคำสั่งไปยังเซิร์ฟเวอร์โดยตรง ในวิธี 'pull' เซิร์ฟเวอร์จะดึงคำสั่งของตนเองจากระบบควบคุม[ 8 ]
เครื่องมือ
มีเครื่องมือมากมายที่ตอบสนองความสามารถในการทำงานอัตโนมัติของโครงสร้างพื้นฐานและใช้ IaC โดยทั่วไปแล้ว เฟรมเวิร์กหรือเครื่องมือใดๆ ที่ทำการเปลี่ยนแปลงหรือกำหนดค่าโครงสร้างพื้นฐานแบบประกาศหรือแบบบังคับตามแนวทางการเขียนโปรแกรมสามารถถือได้ว่าเป็น IaC [ 9 ]ตามธรรมเนียมแล้ว เครื่องมือการทำงานอัตโนมัติของเซิร์ฟเวอร์ (วงจรชีวิต) และ เครื่องมือ การจัดการการกำหนดค่าถูกใช้เพื่อให้บรรลุ IaC ปัจจุบันองค์กรต่างๆ ยังใช้เครื่องมือการทำงานอัตโนมัติของการกำหนดค่าอย่างต่อเนื่องหรือเฟรมเวิร์ก IaC แบบสแตนด์อโลน เช่น PowerShell DSC ของ Microsoft [ 10 ]หรือAWS CloudFormation [ 11 ]
การกำหนดค่าอัตโนมัติอย่างต่อเนื่อง
เครื่องมือ การกำหนดค่าอัตโนมัติอย่างต่อเนื่อง (CCA) ทั้งหมดสามารถคิดได้ว่าเป็นส่วนขยายของเฟรมเวิร์ก IaC แบบดั้งเดิม โดยใช้ประโยชน์จาก IaC ในการเปลี่ยนแปลง กำหนดค่า และทำให้โครงสร้างพื้นฐานเป็นไปโดยอัตโนมัติ และยังให้การมองเห็น ประสิทธิภาพ และความยืดหยุ่นในการจัดการโครงสร้างพื้นฐานอีกด้วย[ 12 ]คุณลักษณะเพิ่มเติมเหล่านี้ให้ความปลอดภัยและการปฏิบัติตามข้อกำหนดในระดับองค์กร
เนื้อหาชุมชน
เนื้อหาจากชุมชนเป็นปัจจัยสำคัญในการกำหนดคุณภาพของเครื่องมือ CCA แบบโอเพนซอร์ส ตามที่Gartner กล่าวไว้ คุณค่าของเครื่องมือ CCA นั้น "ขึ้นอยู่กับเนื้อหาและการสนับสนุนจากชุมชนผู้ใช้มากพอๆ กับความพร้อมเชิงพาณิชย์และประสิทธิภาพของเครื่องมืออัตโนมัติ" [ 12 ]ผู้จำหน่ายที่มีชื่อเสียง เช่นPuppetและChefได้สร้างชุมชนของตนเอง Chef มีChef Community Repositoryและ Puppet มีPuppetForge [ 13 ] ผู้จำหน่ายรายอื่นๆ อาศัยชุมชนที่อยู่ใกล้เคียงและใช้ประโยชน์จากเฟรมเวิร์ก IaC อื่นๆ เช่นPowerShell DSC [ 10 ]ผู้จำหน่ายรายใหม่กำลังเกิดขึ้นซึ่งไม่ได้ขับเคลื่อนด้วยเนื้อหา แต่ขับเคลื่อนด้วยโมเดล โดยมีระบบอัจฉริยะในผลิตภัณฑ์เพื่อส่งมอบเนื้อหา ระบบเชิงวัตถุแบบภาพเหล่านี้ทำงานได้ดีสำหรับนักพัฒนา แต่มีประโยชน์อย่างยิ่งสำหรับ DevOps และฝ่ายปฏิบัติการที่มุ่งเน้นการผลิต ซึ่งให้คุณค่ากับโมเดลมากกว่าการเขียนสคริปต์สำหรับเนื้อหา เนื่องจากสาขานี้ยังคงพัฒนาและเปลี่ยนแปลงอย่างต่อเนื่อง เนื้อหาที่สร้างขึ้นโดยชุมชนจะมีความสำคัญมากขึ้นเรื่อยๆ ต่อวิธีการใช้งานเครื่องมือ IaC เว้นแต่ว่าเครื่องมือเหล่านั้นจะเป็นแบบที่ขับเคลื่อนด้วยโมเดลและเชิงวัตถุ
| เครื่องมือ | เผยแพร่โดย | วิธี | เข้าใกล้ | เขียนเป็น | ความคิดเห็น |
|---|---|---|---|---|---|
| CFEngine | นอร์เทิร์นเทค(1993) | ดึง | การประกาศ | ซี | — |
| หุ่นกระบอก | หุ่นเชิด(2005) | ผลัก ดึง | ประโยคบอกเล่าประโยคคำสั่ง | C++ , Clojureตั้งแต่เวอร์ชัน 4.0 เป็นต้นไป, Ruby | — |
| เชฟ | เชฟ(2009) | ดึง | ประโยคบอกเล่า ประโยคคำสั่ง | ทับทิม | — |
| กองเกลือ | ซอลท์สแต็ค(2011) | ผลัก ดึง | ประโยคบอกเล่า ประโยคคำสั่ง | ไพธอน | — |
| Ansible , Ansible Tower | หมวกแดง (2012) | ผลัก ดึง | ประโยคบอกเล่า ประโยคคำสั่ง | ไพธอน | — |
| เทอร์ราฟอร์ม | ฮาชิคอร์ป (2014) | ดัน | ประโยคบอกเล่า ประโยคคำสั่ง | ไป | — |
| นาก | อิเนโดะ(2015) | ดัน | ประโยคบอกเล่า ประโยคคำสั่ง | — | มุ่งเน้นที่ระบบ Windows |
| ปูลูมิ | ปูลูมิ(2018) | ดัน | ประโยคบอกเล่า ประโยคคำสั่ง | ไป | — |
| เปิดเต้าหู้ | มูลนิธิลินุกซ์และผู้มีส่วนร่วม(2023) | ดัน | ประโยคบอกเล่า ประโยคคำสั่ง | ไป | Terraform เวอร์ชันแยก |
เครื่องมืออื่นๆ ได้แก่AWS CloudFormation , cdist , StackStorm , Jujuและ Step CI
ความสัมพันธ์
ความสัมพันธ์กับ DevOps
IaC อาจเป็นคุณลักษณะสำคัญที่ช่วยให้เกิดแนวปฏิบัติที่ดีที่สุดในDevOpsนักพัฒนาจะเข้ามามีส่วนร่วมมากขึ้นในการกำหนดค่า และทีมปฏิบัติการจะเข้ามามีส่วนร่วมในกระบวนการพัฒนาตั้งแต่เนิ่นๆ[ 14 ]เครื่องมือที่ใช้ IaC จะทำให้มองเห็นสถานะและการกำหนดค่าของเซิร์ฟเวอร์ และในที่สุดก็จะทำให้ผู้ใช้ภายในองค์กรมองเห็นได้ ซึ่งจะนำทีมต่างๆ มารวมกันเพื่อเพิ่มประสิทธิภาพสูงสุด[ 15 ]โดยทั่วไปแล้ว การทำงานอัตโนมัติมีเป้าหมายเพื่อลดความสับสนและข้อผิดพลาดที่เกิดขึ้นจากกระบวนการด้วยตนเอง และทำให้มีประสิทธิภาพและประสิทธิผลมากขึ้น ช่วยให้สามารถสร้างซอฟต์แวร์และแอปพลิเคชันที่ดีขึ้นด้วยความยืดหยุ่น ลดเวลาหยุดทำงาน และเป็นวิธีที่คุ้มค่าโดยรวมสำหรับบริษัท IaC มีจุดประสงค์เพื่อลดความซับซ้อนที่ทำลายประสิทธิภาพของการกำหนดค่าด้วยตนเอง การทำงานอัตโนมัติและการทำงานร่วมกันถือเป็นจุดสำคัญใน DevOps เครื่องมือการทำงานอัตโนมัติของโครงสร้างพื้นฐานมักถูกรวมไว้เป็นส่วนประกอบของชุดเครื่องมือ DevOps [ 16 ]
ความสัมพันธ์กับความปลอดภัย
รายงานภัยคุกคามบนคลาวด์ประจำปี 2020 ที่เผยแพร่โดย Unit 42 (หน่วยข่าวกรองภัยคุกคามของPalo Alto Networks ผู้ให้บริการด้านความปลอดภัยทางไซเบอร์ ) ระบุช่องโหว่ที่อาจเกิดขึ้นได้ประมาณ 200,000 รายการในเทมเพลตโครงสร้างพื้นฐานในรูปแบบโค้ด[ 17 ]
ดูเพิ่มเติม
- ↑ Wittig, Andreas; Wittig, Michael (2016). Amazon Web Services in Action . Manning Press. หน้า 93. ISBN 978-1-61729-288-0.
- ↑ "Infrastructure as Code (IaC) คืออะไร?" . www.redhat.com . สืบค้นเมื่อ15 กรกฎาคม 2026 .
- ↑เบอร์เจส, มาร์ค (2004). การบริหารเครือข่ายและระบบเชิงวิเคราะห์ . ไวลีย์. ISBN 0-470-86100-2.
- ↑ Riley, Chris (12 พฤศจิกายน 2015). "กำหนดเวอร์ชันโครงสร้างพื้นฐานของคุณ" . DevOps.com . สืบค้นเมื่อ29 มิถุนายน 2026 .
- ↑ฟิลลิปส์, แอนดรูว์ (14 พฤษภาคม 2015). "การเปลี่ยนจากการทำงานอัตโนมัติของโครงสร้างพื้นฐานไปสู่ DevOps ที่แท้จริง" . DevOps.com .
- ↑ "โมเดลแบบประกาศเทียบกับแบบคำสั่งสำหรับการจัดการการกำหนดค่า: แบบไหนดีกว่ากัน?" Scriptrock.comเก็บถาวรจากต้นฉบับเมื่อวันที่ 31 มีนาคม 2015 เรียกดูเมื่อวันที่ 14 ธันวาคม 2015
- ↑ Loschwitz, Martin (14 พฤศจิกายน 2014). "การเลือกใช้ตัวจัดการการกำหนดค่าโอเพนซอร์สชั้นนำ" . Admin Network & Security . Lawrence, KS สหรัฐอเมริกา: Linux New Media USA LLC.
- ↑ Venezia, Paul (21 พฤศจิกายน 2013). "Puppet vs. Chef vs. Ansible vs. Salt" . Network World . Network World. เก็บถาวรจากต้นฉบับเมื่อ 18 กรกฎาคม 2018 . สืบค้นเมื่อ14 ธันวาคม 2015 .
- ↑แนวโน้มตลาดของ Gartner: DevOps – ไม่ใช่ตลาด แต่เป็นปรัชญาที่เน้นเครื่องมือ ซึ่งสนับสนุนห่วงโซ่คุณค่าของการส่งมอบอย่างต่อเนื่อง (รายงาน) Gartner 18 กุมภาพันธ์ 2015
- 1 2 Chaganti, Ravikanth (5 มกราคม 2016). "DevOps, Infrastructure as Code และ PowerShell DSC: บทนำ" . PowerShell Magazine . PowerShell Magazine . สืบค้นเมื่อ11 มกราคม 2016 .
- ↑ "ขอแนะนำ AWS CloudFormation "
- 1 2เฟลตเชอร์, โคลิน; คอสโกรฟ, เทอร์เรนซ์ (26 สิงหาคม 2558). ข้อมูลเชิงลึกด้านนวัตกรรมสำหรับเครื่องมืออัตโนมัติการกำหนดค่าอย่างต่อเนื่อง . การ์ทเนอร์ (รายงาน).
- ↑สเตอร์เจียน, ฟิล (28 ตุลาคม 2012). "หุ่นเชิดหรือเชฟ?" . เก็บถาวรจากต้นฉบับเมื่อ 1 กุมภาพันธ์ 2016 . สืบค้นเมื่อ29 มกราคม 2016 .
- ↑ Ramos, Martin (4 พฤศจิกายน 2015). "การบูรณาการอย่างต่อเนื่อง: โครงสร้างพื้นฐานในรูปแบบโค้ดใน DevOps" easydynamics.com . เก็บถาวรจากต้นฉบับเมื่อ 6 กุมภาพันธ์ 2016 . สืบค้นเมื่อ29 มกราคม 2016 .
- ↑โครงสร้างพื้นฐานในรูปแบบโค้ด: เร่งกระบวนการส่งมอบแอปพลิเคชันให้เร็วขึ้น (รายงาน) ฟอร์เรสเตอร์ มีนาคม 2015
- ↑ Wurster, Laurie F.; Colville, Ronni J.; Height, Cameron; Tripathi, Somendra; Rastogi, Aditi. การวิเคราะห์เทคโนโลยีเกิดใหม่: DevOps คือการเปลี่ยนแปลงทางวัฒนธรรม ไม่ใช่เทคโนโลยี (รายงาน). Gartner.
- ↑ "รายงานภัยคุกคามบนคลาวด์แสดงให้เห็นถึงความจำเป็นในการใช้ DevSecOps อย่างสม่ำเสมอ" . InformationWeek . 13 กุมภาพันธ์ 2020 . สืบค้นเมื่อ24 กุมภาพันธ์ 2020 .