Infrastructure as Code (IAC) เป็นอีกหนึ่งคำที่อยู่ในวงการ IT มาได้ระยะใหญ่ๆ แล้ว แต่ยังไม่ค่อยเป็นที่คุ้นหูคุ้นตาของคนในสาย Enterprise IT กันมากนัก ทางทีมงาน TechTalkThai ที่เพิ่งนึกขึ้นได้ว่าลืมเขียนถึง (มาเกือบๆ ครึ่งปี) เลยขอหยิบมาเล่าให้ฟังกันคร่าวๆ กันตรงนี้ครับ

ปัญหาอะไรที่ทำให้ต้องเกิดแนวคิด IAC ขึ้นมา?
โดยปกติแล้วถ้าเป็นเมื่อก่อน เวลาเราจะ Deploy ระบบอะไรก็ตาม ผู้ดูแลระบบก็อาจจะมีการไปติดตั้งแบบ Manual แล้ว Integrate ระบบเหล่านั้นเข้ากันเป็น Platform ก่อนจะส่งรายละเอียดต่างๆ ที่จำเป็นให้ทางผู้พัฒนาใช้ ซึ่งแน่นอนว่าขั้นตอนเหล่านี้กินเวลาค่อนข้างมาก และอาจเกิดความผิดพลาดได้เยอะในระหว่างการตั้งค่าต่างๆ ซึ่งรวมถึงการตั้งค่าให้ระบบใช้งานได้, การปรับแต่งประสิทธิภาพ, การเสริมความทนทาน และการเพิ่มความปลอดภัย
ถัดจากนั้นมาเราก็เริ่มมีแนวคิดการทำ Template เพื่อให้ Deploy ระบบต่างๆ ได้โดยอาศัยเทคโนโลยี Virtualization เข้ามาช่วย ด้วยการสร้าง Virtual Machine ที่จำเป็นสำหรับระบบต่างๆ ขึ้นมาเป็นแม่แบบ ซึ่งถึงแม้จะช่วยลดเวลาในการติดตั้ง และปัญหาเรื่องการกำหนดค่าต่างๆ ผิดพลาดลงไปได้บ้าง แต่ก็ยังไม่ถือว่าตอบโจทย์เพียงพออยู่ดี เพราะถ้าหากต้องมีการอัพเกรด Component ใดๆ ของระบบ ก็ต้องมาเตรียม Template กันใหม่ ซึ่งเป็นขั้นตอนที่เสียเวลามาก
และเราก็มีวิธีใหม่ๆ กันอีกเต็มไปหมด แต่เราจะขอข้ามช๊อตไปเลยนะครับเพราะโดยรวมๆ แล้ววิธีการส่วนใหญ่นั้นนอกจากจะช้า และไม่รองรับต่อการเปลี่ยนแปลงแล้ว ยังมีความผิดพลาดเกิดขึ้นในระหว่างการเตรียมระบบค่อนข้างมาก และนี่ก็เป็นจุดเริ่มต้นของแนวคิด Infrastructure as Code ครับ ซึ่งบางทีคนก็เรียกกันว่า Programmable Infrastructure เหมือนกัน
รู้จักกับ Infrastructure as Code (IAC)
แนวคิดของการทำ Infrastructure as Code นั้น ก็คือการเปลี่ยนขั้นตอนการ Deploy ระบทั้งหมดให้เป็นแบบ Automation โดยมี Code เป็นตัวกำหนดทุกสิ่งอย่างในการ Deploy นั่นเอง ทำให้งานการติดตั้ง Infrastructure และตั้งค่าทั้งหมดถูกแปลงให้อยู่ในรูปของ Script เพื่อทำคำสั่งต่างๆ ตามที่เรากำหนดเอาไว้แทน แต่แทนที่จะเป็นภาษา Script เหมือนการเขียนโปรแกรมกัน ตัวซอฟต์แวร์ที่ใช้ทำ IAC นั้นก็อาจให้เราใช้ภาษาแบบ High-level แทน
ตัวอย่างเช่นการติดตั้ง Linux Package ใดๆ ด้วยระบบ IAC นั้น ผู้ดูแลระบบก็สามารถทำการติดตั้ง, กำหนดค่าเบื้องต้น, สร้าง User, กำหนดสิทธิ์ และ Start Service เหล่านั้นขึ้นมาให้พร้อมใช้งานได้เลยจากการกำหนดค่าต่างๆ ใน IAC นั่นเอง
ทำไมถึงควรจะต้องเรียนรู้เรื่อง Infrastructure as Code?
เพราะทุกๆ วันนี้การทำงานของเหล่าผู้ดูแลระบบนั้นกำลังเปลี่ยนไปอย่างรวดเร็ว ไม่ว่าจะเป็นการมาของ Cloud ที่การ Scale ระบบต่างๆ ให้ได้อย่างรวดเร็วและไม่ผิดพลาดนั้นถือเป็นเรื่องสำคัญ หรือการมาของ DevOps ที่ทำให้การทำงานร่วมกันระหว่าง Admin และ Developer นั้นสำคัญมากขึ้น และการใช้ IAC เข้ามาช่วยก็จะทำให้การเตรียม Environment ต่างๆ ทั้งบน Production, Development และ Testing ถูกต้องตรงกันมากยิ่งขึ้น ลดปัญหาในการทำงาน และประหยัดเวลาในการเตรียมระบบไปได้เป็นอย่างมาก
เรียกง่ายๆ ได้ว่า ถ้าไม่หัด IAC เอาไว้ ต่อไปก็อาจจะพลาดโอกาสในการร่วมงานในบริษัทดีๆ, ทีมเก่งๆ หรืองานที่ผลตอบแทนสูงได้ ลองคิดว่าตัวเองต้องไปสัมภาษณ์งานแข่งกับ System Engineer อีกคนที่อ้างว่าสร้าง Server ทีละพันเครื่องได้ด้วย IAC แล้วคุณจะเอาอะไรไปแข่งกับเค้าถ้าทำไม่เป็น
แต่ IAC ก็ไม่ใช่ทั้งหมดนะครับ มีอย่างอื่นอีกมากมายที่เหล่าผู้ดูแลระบบคงต้องเรียนรู้เอาไว้ในช่วงนี้ ดังนั้นทำใจได้เลยครับ ช่วงนี้คงจะเป็นปีแห่งการเรียนรู้ที่เหนื่อยมากอย่างแน่นอน
จะเริ่มต้นศึกษา Infrastructure as Code ได้อย่างไร?
ตัว Software สำหรับการทำ Infrastructure as Code ที่ค่อนข้างเป็นที่นิยมในตอนนี้คือ Ansible http://www.ansible.com/ ครับ มีทั้งเวอร์ชั่นฟรีและจ่ายเงิน บริษัทนี้โดน Red Hat ซื้อไปเรียบร้อย ใครที่ยังไม่ค่อยเห็นภาพเท่าไหร่ว่ามันทำงานยังไงก็เข้าไปอ่านที่ http://www.ansible.com/how-ansible-works นะครับ ส่วนใครที่สนใจก็เริ่มต้นเข้าไปศึกษากันได้เลยที่ http://docs.ansible.com/ นะครับ
ที่มา: http://searchcloudcomputing.techtarget.com/definition/Infrastructure-as-Code-IAC