โครงสร้างพื้นฐานเป็นโค้ดคืออะไร

เสร็จสมบูรณ์เมื่อ

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

  • พอร์ทัล Azure
  • Azure CLI
  • Azure PowerShell
  • เทมเพลต Azure Resource Manager (JSON และ Bicep)

คุณกําลังมองหาตัวเลือกที่ทําซ้ําได้ และคุณต้องตัดสินใจว่าจะใช้เทคโนโลยีใดในการปรับใช้โครงสร้างพื้นฐาน Azure ของคุณ

ในหน่วยนี้ คุณจะได้เรียนรู้วิธีและสาเหตุที่โครงสร้างพื้นฐานเป็นโค้ดสามารถช่วยให้คุณปรับใช้โครงสร้างพื้นฐาน Azure ของคุณด้วยวิธีที่เป็นอัตโนมัติและทําซ้ําได้

ใช้คําสั่ง Azure CLI เพื่อแสดงแนวคิด คุณเรียนรู้เพิ่มเติมเกี่ยวกับการใช้คําสั่งเพื่อปรับใช้ทรัพยากรในโมดูลอื่น ๆ ของเส้นทางการเรียนรู้ Bicep

การกําหนดโครงสร้างพื้นฐานเป็นโค้ด

บริษัทของคุณออกแบบของเล่นใหม่เพื่อออกสู่ตลาดและของเล่นใหม่ส่วนใหญ่จําเป็นต้องมีแอสเซมบลีหลังจากซื้อ ทีมออกแบบของ บริษัท สร้างคู่มือการเรียนการสอนเพื่อรวมกับของเล่นแต่ละอย่าง คู่มือแต่ละตัวให้รายละเอียดเกี่ยวกับวิธีการประกอบของเล่นอย่างถูกต้อง

คุณสามารถนึกภาพว่าโครงสร้างพื้นฐานเป็นโค้ดเหมือนกับคู่มือคําแนะนําสําหรับโครงสร้างพื้นฐานของคุณ รายละเอียดการกําหนดค่าสิ้นสุดของทรัพยากรของคุณด้วยตนเอง และวิธีการเข้าถึงสถานะการกําหนดค่านั้น

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

แผนภาพที่แสดงโครงสร้างพื้นฐานเป็นกระบวนการโค้ดโดยใช้ที่เก็บซอร์สโค้ดกับเทมเพลตที่ปรับใช้ทรัพยากร Azure

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

เหตุใดจึงใช้โครงสร้างพื้นฐานเป็นโค้ด

การนําโครงสร้างพื้นฐานมาใช้เป็นวิธีการเขียนโค้ดมีประโยชน์มากมายในการเตรียมใช้งานทรัพยากร ด้วยโครงสร้างพื้นฐานเป็นโค้ด คุณสามารถ:

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

เพิ่มความมั่นใจ

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

  • การรวมกับกระบวนการปัจจุบัน: ถ้าองค์กรของคุณใช้แนวทางปฏิบัติในการพัฒนาซอฟต์แวร์มาตรฐานแล้ว คุณสามารถนํากระบวนการเดียวกันนั้นไปใช้สําหรับการปรับใช้โครงสร้างพื้นฐานของคุณได้ ตัวอย่างเช่น การตรวจสอบโดยเพียร์สามารถช่วยในการตรวจหาปัญหาในการกําหนดค่าที่อาจยากต่อการตรวจหาเมื่อทําการเปลี่ยนแปลงด้วยตนเอง

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

  • Automated scanned: คุณสามารถสแกนการกําหนดค่า Infrastructure-as-code ด้วยเครื่องมืออัตโนมัติที่สามารถตรวจสอบข้อผิดพลาดในโค้ดได้ การใช้เครื่องมืออัตโนมัติยังสามารถตรวจสอบการเปลี่ยนแปลงที่เสนอเพื่อให้แน่ใจว่ามีการปฏิบัติตามการรักษาความปลอดภัยและแนวทางปฏิบัติด้านประสิทธิภาพ

  • การจัดการความลับ : โซลูชันจํานวนมากต้องการความลับ เช่น สตริงการเชื่อมต่อ คีย์การเข้ารหัส ข้อมูลลับของไคลเอ็นต์ และใบรับรอง ใน Azure ชุดเก็บคีย์ของ Azure คือบริการที่ใช้เพื่อจัดเก็บข้อมูลลับเหล่านี้ได้อย่างปลอดภัย เครื่องมือที่ใช้โครงสร้างพื้นฐานเป็นโค้ดจํานวนมากสามารถรวมกับ Key Vault เพื่อเข้าถึงความลับเหล่านี้ได้อย่างปลอดภัยในการปรับใช้

  • ควบคุมการเข้าถึง: ด้วยการปรับใช้โครงสร้างพื้นฐานเป็นโค้ด คุณมีตัวเลือกในการใช้ข้อมูลประจําตัวที่มีการจัดการหรือบัญชีบริการเพื่อจัดเตรียมทรัพยากรโดยอัตโนมัติ กระบวนการนี้ทําให้แน่ใจว่าเฉพาะข้อมูลประจําตัวเหล่านี้เท่านั้นที่สามารถปรับเปลี่ยนทรัพยากรระบบคลาวด์ของคุณได้ นอกจากนี้ยังช่วยป้องกันการกําหนดค่าที่ไม่ถูกต้องที่ปรับใช้กับการผลิต หากจําเป็น คุณสามารถแทนที่กระบวนการนี้ได้โดยใช้บัญชีการเข้าถึงฉุกเฉิน (มักเรียกว่า แบ่งบัญชีกระจก) หรือโดยใช้คุณลักษณะ Microsoft Entra ID Privileged Identity Management

  • หลีกเลี่ยงการกําหนดค่า : Idempotence เป็นคําที่เกี่ยวข้องกับโครงสร้างพื้นฐานเป็นรหัส เมื่อการดําเนินการเป็นนิจพล นั่นหมายความว่าการดําเนินการให้ผลลัพธ์เดียวกันทุกครั้งที่คุณเรียกใช้ หากคุณเลือกการใช้เครื่องมือที่ใช้การดําเนินการที่มีนิจพล คุณสามารถหลีกเลี่ยงการล่องลอยการกําหนดค่าได้

เป็นตัวอย่างของนิจพล พิจารณาคําสั่ง Azure CLI ต่อไปนี้ คําสั่งสร้างกลุ่มทรัพยากร Azure ที่มีชื่อ storage-resource-group ในภูมิภาคสหรัฐอเมริกาตะวันออก

az group create \
  --name storage-resource-group \
  --location eastus

ถ้าคุณเรียกใช้คําสั่งนี้เป็นครั้งที่สอง คุณจะได้รับผลลัพธ์เดียวกันที่แน่นอนเนื่องจากคําสั่ง Azure CLI นี้ถูกออกแบบมาเพื่อเป็นนิจพล คุณไม่ได้รับข้อผิดพลาดหรือกลุ่มทรัพยากรที่ซ้ํากัน

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

จัดการหลายสภาพแวดล้อม

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

นี่คือบางส่วนของวิธีสําคัญที่โครงสร้างพื้นฐานเป็นโค้ดสามารถช่วยให้คุณจัดการสภาพแวดล้อมของคุณได้:

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

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

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

เข้าใจทรัพยากรระบบคลาวด์ของคุณได้ดียิ่งขึ้น

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

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

  • คู่มือ: คุณสามารถใช้การกําหนดค่าโครงสร้างพื้นฐานเป็นโค้ดจํานวนมากเพื่อเพิ่มเมตาดาต้า เช่น ข้อคิดเห็น ซึ่งอธิบายวัตถุประสงค์ของโค้ดในการกําหนดค่าของคุณ หากองค์กรของคุณปฏิบัติตามกระบวนการจัดทําเอกสารโค้ดแล้ว ให้พิจารณาการใช้ขั้นตอนเดียวกันนี้กับโค้ดโครงสร้างพื้นฐานของคุณ

  • ระบบแบบรวม : หลายครั้งเมื่อนักพัฒนากําลังทํางานกับคุณลักษณะใหม่ พวกเขาต้องทําการเปลี่ยนแปลงโค้ดแอปพลิเคชันและโค้ดโครงสร้างพื้นฐาน เมื่อคุณใช้ระบบทั่วไป องค์กรของคุณสามารถทําความเข้าใจความสัมพันธ์ระหว่างแอปพลิเคชันของคุณและโครงสร้างพื้นฐานของคุณได้ดีขึ้น

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

รหัสเชิงประกาศและเชิงประกาศ

คุณสามารถเขียนคู่มือการเรียนการสอนสําหรับแอสเซมบลีของ toy ใหม่ด้วยวิธีต่างๆ เมื่อคุณปรับใช้บริการและโครงสร้างพื้นฐานโดยอัตโนมัติ คุณสามารถใช้สองวิธี: เชิงคําสั่งและเชิงประกาศ

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

  • ด้วยรหัสที่เปิดเผย คุณสามารถระบุเฉพาะการกําหนดค่าสิ้นสุดได้ รหัสไม่ได้กําหนดวิธีการทํางานนี้ให้สําเร็จ วิธีการเชิงประกาศเหมือนกับคู่มือการเรียนการสอนมุมมองแบบขยาย

เมื่อคุณเลือกระหว่างการใช้วิธีการเชิงประกาศและวิธีการเชิงประกาศในการเตรียมใช้งานทรัพยากร ให้พิจารณาเครื่องมือที่อาจมีการใช้งานอยู่แล้วในองค์กรของคุณ นอกจากนี้ ให้พิจารณาว่าวิธีการใดที่อาจตรงกับทักษะของคุณเอง

โค้ดเชิงกลาง

ใน Azure วิธีเขียนโค้ดเชิงคําสั่งสามารถทําได้โดยทางโปรแกรมโดยใช้ภาษาการเขียนสคริปต์ เช่น Bash หรือ Azure PowerShell สคริปต์จะดําเนินการชุดของขั้นตอนในการสร้าง แก้ไข และแม้แต่นําทรัพยากรของคุณออก

ตัวอย่างนี้แสดงคําสั่ง Azure CLI สองคําสั่งที่สร้างกลุ่มทรัพยากรและบัญชีเก็บข้อมูล

#!/usr/bin/env bash
az group create \
  --name storage-resource-group \
  --location eastus

az storage account create \
  --name mystorageaccount \
  --resource-group storage-resource-group \
  --location eastus \
  --sku Standard_LRS \
  --kind StorageV2 \
  --access-tier Hot \
  --https-only true

คําสั่งแรกจะสร้างกลุ่มทรัพยากรที่ชื่อ storage-resource-group ในภูมิภาคสหรัฐอเมริกาตะวันออก คําสั่งที่สองสร้างบัญชีเก็บข้อมูลชื่อ mystorageaccount ในกลุ่มทรัพยากร storage-resource-group ที่ถูกสร้างขึ้นในคําสั่งแรก คําสั่งที่สองยังกําหนดค่าคุณสมบัติบางอย่างสําหรับบัญชีเก็บข้อมูล รวมถึงชนิดของบัญชีที่เก็บข้อมูลและระดับการเข้าถึง

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

รหัสเชิงประกาศ

ใน Azure คุณสามารถทําแนวทางโค้ดที่ประกาศได้โดยใช้เทมเพลต มีเทมเพลตหลายชนิดที่พร้อมใช้งาน รวมถึง:

  • JSON
  • Bicep
  • Ansible, โดย RedHat
  • Terraform โดย HashiCorp

โน้ต

โมดูลนี้มุ่งเน้นไปที่การใช้เทมเพลต Bicep

ดูตัวอย่างต่อไปนี้ของเทมเพลต Bicep ที่กําหนดค่าบัญชีเก็บข้อมูล การกําหนดค่าของบัญชีเก็บข้อมูลตรงกับตัวอย่าง Azure CLI

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: 'mystorageaccount'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
    supportsHttpsTrafficOnly: true
  }
}

ส่วนทรัพยากรจะกําหนดการกําหนดค่าบัญชีเก็บข้อมูล ส่วนนี้ประกอบด้วยชื่อ ตําแหน่งที่ตั้ง และคุณสมบัติของบัญชีเก็บข้อมูล รวมถึง SKU และชนิดของบัญชี

คุณอาจสังเกตเห็นว่าเทมเพลต Bicep ไม่ได้ระบุวิธีการปรับใช้บัญชีเก็บข้อมูล ซึ่งระบุลักษณะของบัญชีที่เก็บข้อมูลเท่านั้น ขั้นตอนจริงๆ ที่ดําเนินการอยู่เบื้องหลังเพื่อสร้างบัญชีที่เก็บข้อมูลนี้ หรืออัปเดตเพื่อให้ตรงกับข้อกําหนดที่เหลืออยู่สําหรับ Azure เพื่อตัดสินใจ