สวัสดีครับชาว IT กลับมาพบกันอีกครั้งกับ Cloud HM Blog สำหรับหัวข้อในวันนี้ เรามาดูกันว่า Infrastructure as Code (IaC) คืออะไร ทำไมถึงนิยมใช้กันมากในปัจจุบันนะครับก่อนที่จะแนะนำความหมาย เรามาเริ่มตั้งคำถามแรกก่อนเลยนะครับ
เมื่อก่อนเรามีวิธีบริหารและจัดการ Infra กันอย่างไรครับ?
ยกตัวอย่างง่าย ๆ อย่าง VMware ที่เราต้องติดตั้ง ESXi หรือบางที่อาจจะมี vCenter ติดตั้งที่ Physical Server farm ใน Data Center ถ้าผมเป็นลูกค้า ผมก็ต้องเปิด Ticket แจ้งเรื่องไปทาง Call center แล้วให้พนักงานที่ดูแล ESXi หรือ vCenter ที่มี Server ของผมอยู่จัดการให้ผ่านทาง Management Portal หรือทาง Console ของ Admin ให้สร้างเครื่องให้ ซึ่งก็ยอมรับได้นะครับ ถ้าผมมี Server จำนวนไม่เยอะมาก ซึ่งหลาย ๆ ที่ก็น่าจะเป็นคล้าย ๆ แบบผม โดยเราก็แจ้งให้สร้าง VM แล้วก็ใช้งานอาจจะเป็นเดือน เป็นปี แต่เวลาเราจะ Scale หรือทำอะไรก็ต้องเปิด Ticket แจ้งพนักงานที่ดูแล Infra ตลอดซึ่งก็จะเป็นการทำแบบ Manual นั่นเองครับทีนี้หลาย ๆ อย่างในปัจจุบันเริ่มมีการเปลี่ยนแปลง เราก็ต้องมีการปรับเปลี่ยนเพื่อให้เข้ากับปัจจุบัน
- เริ่มมีการย้ายไปใช้งานบน Cloud มากขึ้น ซึ่งส่วนใหญ่สามารถใช้ API เป็นตัวจัดการและบริหารได้ (ข้อนี้สำคัญเลยนะ)
- มีความยืดหยุ่นมากขึ้นในเรื่อง Infra แทนที่เราจะเปิดใช้เครื่องเป็นเดือนหรือเป็นปี ทุกวันนี้อาจจะเป็นระดับวันหรือสัปดาห์เท่านั้นเอง
เมื่อพูดถึง Cloud การ Scale ของ Infra สมัยนี้เป็นเรื่องที่สำคัญ เพราะแทนที่เราจะเลือกใช้งาน Instance ที่มีขนาดใหญ่ เราอาจจะเลือกใช้ Instance ที่มีขนาดเล็ก หลาย ๆ เครื่องแทน เพราะเราสามารถที่จะ Scale down ได้หากไม่ได้ใช้งาน เช่น Scale up ในช่วงเวลา Peak time ตอนเริ่มทำงาน และ Scale down ตอนหลังเลิกงานเพื่อประหยัดค่าใช้จ่าย ต่างจากการที่เราต้องเสียเงินซื้อ Hardware รวมไปถึงค่า Maintenance ซึ่งพอเรามาใช้ Cloud ปุ๊ป เราจ่ายเงินเป็นรายชั่วโมงหรือรายเดือนแทนที่จะเป็นแบบ Fixed cost ละ ทำให้มีความยืดหยุ่นสูงนั่นเองเรากลับมาเรื่องของการเปลี่ยนแปลง Spec ของ Server หรือที่เคยยกตัวอย่างไปด้านบนกันอีกนิดนึงถ้าสมมติเรามี Server เป็นร้อย ๆ เครื่องแล้วอยากจะให้ทีมงาน Provisioning เครื่องให้ในช่วง Peak time แล้ว Scale down ตอนหลังเลิกงาน ก็ต้องแจ้งทุกเช้า – เย็น หลาย ๆ คนอาจจะบอกว่าก็แจ้งทีเดียวแล้วกำหนดช่วงเวลาให้เค้าสิว่าจะทำถึงวันไหน แต่การที่จะต้องคลิกเพื่อ Provisioning หรือการ Scale down ทำโดยมนุษย์ ซึ่งมนุษย์ย่อมต้องมีความไม่สมบูรณ์แบบอยู่แล้ว (ไม่ได้จะว่าใครอะไรไม่ดีนะ) แต่ระบบก็ต้องมารับความเสี่ยงนี้ไปด้วยมันก็ไม่โอเค คำถามคือ แล้วเราจะมีวิธีไหนบ้างล่ะที่มาช่วยในเรื่องนี้?
แนวคิดของ Infrastructure as Code
แนวคิดของ IaC ก็มีที่มาจากการที่ตอนแรกเราต้องคอยมาคลิก ๆ ส่วนต่าง ๆ ให้สามารถ Provisioning หรือดำเนินการอื่น ๆ ซึ่งวิธีที่ว่าเนี่ยเรามาจับเอาแปลงเป็น Code ได้หรือไม่? เพราะว่าถ้ามีแค่ Code เดียว แต่คุณสามารถ Deploy ได้อีกเป็นร้อยเป็นพันครั้ง เราก็จะสามารถทำให้ระบบเป็นแบบอัตโนมัติ (Automate)ได้ ทีนี้คุณก็ไม่ต้องคอยแจ้งทีมงานให้ดำเนินการให้ทุกเช้า – เย็นแล้ว เพียงแค่มี Script ที่คุณเขียนไว้ก็จะสามารถทำให้ทุกอย่างตามต้องการ ไม่ว่าจะ Scale up/down ครับเรารู้แนวคิดกันไปแล้ว แต่ยังไม่รู้ความหมายเลย เดี๋ยวสรุปให้สั้น ๆ นะครับ ก่อนจะไปลงรายละเอียดกันอีกนิดนึง
Infrastructure as Code คืออะไร?
Infrastructure as Code (IaC) คือการนำ Coding มาทำเป็น Script เพื่อ Provisioning ระบบ IT Infra ได้โดยอัตโนมัติ การทำแบบอัตโนมัติจะช่วยลดงานของ Developer ที่ต้องมา Manual การจัดการและการ Provisioning Server, OS, Database, Storage และอื่น ๆ ทำให้ทีมงานสะดวกมากขึ้นในการพัฒนา Application ไม่ว่าจะการ Dev, Test หรือ Deploy
ประโยชน์ของ Infrastucture as Code มีอะไรบ้าง?
- ใช้เวลาในการขึ้น Production ได้ไวกว่าใช้คนคลิก
IaC จะช่วยเพิ่มความเร็วในการ Provisioning Infra ให้รองรับกับการ Dev, Test และ Production และยังรวมไปถึงการ Scale up/down ตามความต้องการ เพราะว่าการที่ IaC เป็นการใช้ Code และเก็บเป็น Script ทำให้สามารถ Automate provisioning ได้ตลอดเวลา ลดการแจ้งงานผ่าน Call center เพื่อเพิ่ม/แก้ไขระบบ - เพิ่มความต่อเนื่องในการดำเนินงานและลดปัญหาการ Configure ซ้ำซ้อน
ถ้ามีการ Configure ที่ซ้ำซ้อนจะทำให้เกิดปัญหาในเรื่องของการ Dev, Test และ Deploy ได้ ไม่ว่าจะเป็นปัญหาขณะ Deploy, ปัญหาเรื่อง Security vulnerabilities และความเสี่ยงอื่น ๆ ในช่วงเวลาที่พัฒนา Application ควรจะต้องทำตามมาตรฐานของ Compliance ด้วยเช่นกัน IaC จะมาช่วยลดปัญหาการ Configure ซ้ำซ้อน โดยการ Provsioning Infra ให้เหมือนเดิมทุกครั้ง - ช่วยให้การพัฒนามีประสิทธิภาพและเร็วกว่าแบบเดิม ๆ
เพื่อความต่อเนื่องและมีประสิทธิภาพ IaC ช่วยให้คุณมั่นใจได้ว่าในทุก ๆ Phase ของการพัฒนา Application จะมีความรวดเร็วยิ่งขึ้นโดย Developer สามารถสร้าง Sandboxes เพื่อทดสอบหรือจะเป็น CI/CD ก็ได้เช่นกัน รวมไปถึงทีม QA เองก็สามารถ Provisioning test environment ขึ้นมาเพื่อทดสอบได้อย่างรวดเร็ว และสุดท้ายทีม Operations สามารถ provisioning infra ให้ User พร้อมทั้งสอดคล้องกับระบบ Security สำหรับการทดสอบ และเมื่อ Code ผ่านการทดสอบ Application และ Production infra ก็จะสามารถ Deploy ได้ใน Step เดียวครับ - อุดช่องโหว่ในการพัฒนา
การพัฒนาประสิทธิภาพขององค์กรโดยที่ไม่ได้ใช้ IaC จะต้องใช้พนักงานที่มีความเชี่ยวชาญในการ Provisioning เป็นผู้ดำเนินการให้ ถ้าเกิดพนักงานเหล่านั้นลาออกไป อาจจะทำให้ต้องมาปรับโครงสร้างและระบบกันใหม่ ซึ่ง IaC จะช่วยอุดช่องโหว่ตรงนี้ได้เพราะว่าเรายังสามารถ Provisioning ได้เพราะยังมี Configure files อยู่กับองค์กร - ลดค่าใช้จ่ายและเพิ่มกำไร
นอกจากระยะเวลาที่ลดลง และไม่จำเป็นใช้ Skill ในการ Provisioning และ Scale Infra แล้ว IaC ยังช่วยให้องค์กรของคุณลดค่าใช้จ่ายในส่วนของ Cloud Computing ได้ เพราะ Model ของ Cloud Computing ส่วนใหญ่เป็นแบบ Pay as you go จ่ายเงินเท่าที่ใช้ และก็ยังช่วยให้ Developer ใช้เวลาน้อยลงในการจัดเตรียม Infra ทำให้สามารถ Focus กับการพัฒนา Application ได้มากขึ้นครับ
เป็นอย่างไรกันบ้างครับ สำหรับ Blog นี้ เดี๋ยวคราวหน้าจะมาต่อ Part 2 ให้นะครับ เนื้อหามีเยอะไปกลัวจะอ่านกันเหนื่อยครับ หวังว่าจะเป็นประโยชน์สำหรับหลาย ๆ ท่านที่อยากพัฒนาองค์กรนะครับ ขอบคุณครับ
หากสนใจใช้บริการ Cloud กับทาง Cloud HM สามารถติดต่อได้ที่นี่
— Cloud HM