“ โครงสร้างพื้นฐานเป็นรหัส” คืออะไร?


13

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

คำตอบ:


12

TL; DR : โครงสร้างพื้นฐานเป็นรหัสเป็นวิธีการอัตโนมัติและสำรองสภาพแวดล้อมของคุณ ในกรณีที่เหมาะสมหลังจากเกิดภัยพิบัติคุณสามารถคืนค่าโครงสร้างพื้นฐานของคุณได้อย่างเต็มที่และอัตโนมัติโดยการจัดเตรียมทรัพยากรใหม่การกู้คืนการกำหนดค่าจากที่เก็บรหัสและการกู้คืนข้อมูลจากการสำรองข้อมูล

ภาพรวม

โครงสร้างพื้นฐานเป็นรหัสอาศัยแนวคิดหลักสามประการ:

การทำงานอัตโนมัติ

การจัดการการกำหนดค่าอยู่ในเครื่องมือรุ่นที่ 3 การสร้าง CFEngine เครื่องมือชุดใหม่สำหรับการจัดการการกำหนดค่าอัตโนมัติกำลังถูกปรับใช้อย่างกว้างขวางในขณะนี้ ที่นิยมมากที่สุดตามลำดับตัวอักษรมีเบิ้ล, cfengine, Chef, หุ่นกระบอก PowerShell DSC และ SaltStack แต่ละคนจะมีภาษาในการอธิบายสถานะของโครงสร้างพื้นฐานของคุณ, โมดูลโค้ดเพื่อใช้การเปลี่ยนแปลงเหล่านั้นและให้ความสามารถในการขยายเครื่องมือบางตัวแทนในการดำเนินการผู้ที่อยู่ในเซิร์ฟเวอร์และพื้นที่เก็บข้อมูลกลางของข้อมูล

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

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

รหัสพื้นที่เก็บข้อมูล

รหัสพื้นที่เก็บข้อมูลแยกต่างหากจากที่เก็บซอฟต์แวร์จะใช้ในการจัดการการเปลี่ยนแปลงทั้งหมดในโครงสร้างพื้นฐานและระบบอัตโนมัติที่เกี่ยวข้อง ควรเก็บไฟล์และแม่แบบการกำหนดค่า Playbooks (Cookbooks) อธิบายกระบวนการเปลี่ยนแปลงที่จะตรวจสอบรหัสการขยายเครื่องมืออัตโนมัติ CM การกำหนดค่าการจัดเตรียมการทดสอบโครงสร้างพื้นฐานและการแจ้งเตือนการทดสอบ Staging / การปรับใช้เอกสารอธิบายด้วยตนเอง (ยังไม่อัตโนมัติ) .

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

โครงสร้างพื้นฐานที่มีการจัดการ

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

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

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


5

ก่อนที่จะอธิบายว่ามันคืออะไรให้ฉันพูดคำจำกัดความที่ดีจริงๆตรงจาก Wikipedia :

Infrastructure as Code (IaC) เป็นกระบวนการของการจัดการและการจัดเตรียมโครงสร้างพื้นฐานการคำนวณ (กระบวนการเซิร์ฟเวอร์ที่ไม่มีโลหะเซิร์ฟเวอร์เสมือน ฯลฯ ) และการกำหนดค่าของพวกเขาผ่านไฟล์คำจำกัดความของเครื่องที่ประมวลผลได้มากกว่าการกำหนดค่าฮาร์ดแวร์ทางกายภาพหรือการใช้การกำหนดค่าแบบโต้ตอบ เครื่องมือ

เอาล่ะตอนนี้เรามาดูเครื่องมือ IaC หนึ่งตัว Terraform เพื่อทำความเข้าใจแนวคิดที่ดีกว่า: https://www.terraform.io/

นอกจากนี้นี่คือสิ่งที่ Terraform พูดเกี่ยวกับตัวเอง:

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

ซึ่งหมายความว่าเราสามารถเขียนรหัสทั้งหมดได้ ซึ่งรวมถึงการสร้างทรัพยากรระบบคลาวด์ (/ infra) เช่นอินสแตนซ์ของเซิร์ฟเวอร์โหลดบาลานเซอร์ ฯลฯ รวมถึงการกำหนดค่าที่สมบูรณ์ (ซึ่งรวมถึงการปรับแต่งการตั้งค่าพื้นฐานการตั้งค่าความปลอดภัยภูมิภาค ฯลฯ ) เป็นรหัสซึ่งสามารถแก้ไขได้ แน่นอนตรวจสอบได้

นี่คือตัวอย่างของรหัส Terraform สำหรับการจัดสรรทรัพยากร AWS:

resource "aws_elb" "frontend" {
  name = "frontend-load-balancer"
  listener {
    instance_port     = 8000
    instance_protocol = "http"
    lb_port           = 80
    lb_protocol       = "http"
  }

  instances = ["${aws_instance.app.*.id}"]
}

resource "aws_instance" "app" {
  count = 5

  ami           = "ami-408c7f28"
  instance_type = "t1.micro"
}

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.