By Arnon Puitrakul - 04 พฤศจิกายน 2024
เคยมั้ยเวลา Deploy โปรแกรมสักตัว เราจะต้องมานั่ง Provision Infrastructure ไหนจะ VM และ Settings อื่น ๆ อีกมากมาย มันจะดีกว่ามั้ยถ้าเรามีเครื่องมือบางอย่างที่จะ Automate งานที่น่าเบื่อเหล่านี้ออกไป และลดความผิดพลาดที่อาจจะเกิดขึ้น วันนี้เราจะพาทุกคนมาทำความรู้จักกับ Infrastructure as Code กัน
Infrastructure as Code (IaC) เป็นเทคนิคการที่เราใช้การเขียน Code เพื่อกำหนดลักษณะสำคัญเพื่อสร้างระบบขึ้นมาโดยอัตโนมัติ แทนที่จะเป็นการใช้มนุษย์ค่อย ๆ ทำทีละขั้นตอน โดย Code ที่เราเขียนจะสามารถนำมาใช้ซ้ำ ๆ ได้เรื่อยเมื่อเราเอามา Deploy หลาย ๆ ครั้ง ทำให้สามารถลดงานของทั้ง Developer และ DevOps ในการจัดเตรียมพื้นที่สำหรับการ Dev, Test และ Deploy Application ซึ่ง Infrastructure ที่เรากำลังพูดถึง ไม่ใช่แค่เรื่อง Database หรือพวก โปรแกรมต่าง ๆ เท่านั้นนะ เรากำลังพูดถึงอะไรที่ลึกกว่านั้นอีก เช่น Network, Security, OS และ Storage
ตัวอย่างเช่น Application ของเราออกแบบมาเป็น Microservice แยกส่วนเป็น Frontend, Backend และ Database แล้วต้องการยัดลงไปใน Google Cloud จากเดิมเราจะต้องไปนั่งสร้าง Service ขึ้นมาเองทีละตัว, กำหนด Security Policy และ Network Configuration ต่าง ๆ ให้กับแต่ละ Service ยังไม่นับการกำหนด Scaling Policy อีกสำหรับระบบที่มี Requirement ให้รองรับการ Scale และในแต่ละ Service เอง หากเป็นพวก VM เราจะต้องมานั่งกำหนด ขนาดของเครื่อง และภายในเครื่องเราจะต้องมาบอกอีกว่า มันจะมีโปรแกรม หรือ Runtime อะไรที่ต้องติดตั้งไว้ล่วงหน้าหรือไม่ ซึ่งงานในการ Setup ทั้งหมดนี้ในโปรแกรมขนาดใหญ่ มีจำนวน Service และเครื่องที่เกี่ยวข้องเป็นจำนวนมาก เป็นเรื่องที่กินเวลาเยอะมาก ๆ ต้องมานั่งคลิก ๆ ทีละขั้นตอน อะ รอมัน Deploy Config อีก กว่าจะติดตั้งนั่นนี่เสร็จ ก็จะกินเวลานานมาก ๆ ประกอบกับ บางที เราไม่ได้ทำครั้งเดียว เราอาจจะต้องทำบน Development, Stagging และ Production Site อย่างน้อย 3 ชุด ยังไม่นับว่า ถ้าอยู่ ๆ คุยกันบอกว่า เห้ย Env นี้ไม่เอาละ จะเปลี่ยนสเปกนิดนึง อะชิบหาย ต้องมานั่งระเบิดงานเดิม แล้วสร้างใหม่อีกแบบนี้ไปเรื่อย ๆ DevOps ด่าพ่องแน่นอน
แต่ถ้าเราใช้ IaC เราสามารถเขียน Definition ของแต่ละ Service ขึ้นมาได้ตรง ๆ เลยว่า เราอยากได้แบบไหน อยากได้อะไรบ้าง รวมไปถึงพวก Security Policy และ Scaling Policy ต่าง ๆ ใส่เข้าไปด้วย จากนั้น หากเราต้องการ Env นี้ใน Development ,Stagging และ Production Site สิ่งที่เราต้องทำมีเพียงแค่ กด Deploy เท่านั้น ทุกอย่างที่เรากำหนดไว้ใน Code ก็จะถูก Deploy ขึ้นมาเป็นระบบที่รันได้จริงทันที และหากบอกว่า เราจะเปลี่ยนแปลง เราก็แค่ Redeploy เดี๋ยวมันจะมานั่งคิดเองว่า มันต้องระเบิดอะไร เปลี่ยนอะไรบ้าง แล้วจัดการเอง เราไม่ต้องยุ่ง
พีคกว่านั้นคือ อยู่ ๆ เราอาจจะอยากเอา Application ของเราขึ้น Cloud แทนที่จะเป็น On-Prem ละ ถ้าเป็นเมื่อก่อน เราก็ต้องไปนั่งเข้าเว็บ ไปสร้าง Service ต่าง ๆ แต่ด้วย IaC เราสามารถเอา Code ที่ระบุสภาพแวดล้อมนี่แหละไปใช้ได้เลย แล้วตั้ง Target เป็น Cloud ที่เราต้องการ เราก็จะได้ Infra แบบเดิมที่เราตั้งไว้บน Cloud ได้เลย หรือกระทั่งถ้าเราเปลี่ยน Cloud Provider เราก็แทบไม่ต้องมานั่งเปลี่ยนอะไรมากเลย
การใช้งาน IaC มีหลากหลายประโยชน์ด้วยกัน แต่เราขอแบ่งประโยชน์ที่เราคิดว่ามันได้เต็ม ๆ มาสัก 3 ประโยชน์ด้วยกัน
ทั้ง 3 ข้อ สรุปออกมาเป็นประโยคเดียวสั้น ๆ คือ มันทำให้เรา Treat Infra ได้เหมือน Code รองรับการ Automate ยัดลงไปใน CI/CI Pipeline จะ Spin up กี่รอบก็ใช้เวลาไม่นาน
เอาจริง ๆ นะ เราสนับสนุนให้ทีมทำ IaC จริง ๆ นะ หลังจากเรา Adopt มาใช้งานแล้ว เรารู้สึกว่า มันทำให้การทำงานง่ายขึ้น และลดโอกาสการเกิดข้อผิดพลาดในการ Provision Infra มหาศาลมาก ๆ (เจ็บกับเรื่องนี้มาแล้ว บรรทัดเดียวสยองไป 1 อาทิตย์) นอกจากนั้นยังสามารถลดการหยุมหัวระหว่าง Dev และ DevOps ได้ดีมาก ๆ ส่วน Tools ในท้องตลาดมีให้เราเลือกเลอะมาก ๆ แต่ตัวที่เราทดลองแล้วรู้สึกชอบมี 2 ตัวคือ Terraform ตัวนี้มันยืดหยุ่นในการทำงานมาก ๆ เราสามารถตั้งค่าได้หลากหลายสุด ๆ ตั้งแต่ On-Prem ง่าย ๆ ยัน Cloud ท่ายากนางก็เล่นได้หมดไม่หวั่น เรียกว่าสารพัดท่าเลยทีเดียว สิ่งที่ทำให้เราคิดว่าทั้งมันเริ่ดมาก ๆ คือ มันใช้ลักษณะการกำหนดลักษณะแบบ Declarative กล่าวคือ เราไม่จำเป็นต้องบอกชั้นตอนการสร้าง เราบอกแค่เราอยากได้อะไรที่ปลายทางเท่านั้น แนะนำจริง ๆ ว่าอยากให้ลองมาใช้ดู แล้วชีวิตคุณจะเปลี่ยนไป
หลังจากเมื่อหลายอาทิตย์ก่อน Apple ออก Mac รัว ๆ ตั้งแต่ Mac Mini, iMac และ Macbook Pro ที่ใช้ M4 กันไปแล้ว มีหลายคนถามเราเข้ามาว่า เราควรจะเลือก M4 ตัวไหนดีถึงจะเหมาะกับเรา...
จากตอนก่อน เราเล่าเรื่องการ Host Website จากบ้านของเราอย่างปลอดภัยด้วย Cloudflare Tunnel ไปแล้ว แต่ Product ด้าน Zero-Trust ของนางยังไม่หมด วันนี้เราจะมาเล่าอีกหนึ่งขาที่จะช่วยปกป้อง Infrastructure และ Application ต่าง ๆ ของเราด้วย Cloudflare Access กัน...
ทุกคนเคยได้ยินคำว่า Mainframe Computer กันมั้ย เคยสงสัยกันมั้ยว่า มันต่างจากเครื่องคอมพิวเตอร์ที่เราใช้งานกันทั่ว ๆ ไปอย่างไรละ และ Mainframe ยังจำเป็นอยู่มั้ย มันได้ตายจากโลกนี้ไปหรือยัง วันนี้เรามาหาคำตอบไปด้วยกันเลย...
เคยมั้ยเวลา Deploy โปรแกรมสักตัว เราจะต้องมานั่ง Provision Infrastructure ไหนจะ VM และ Settings อื่น ๆ อีกมากมาย มันจะดีกว่ามั้ยถ้าเรามีเครื่องมือบางอย่างที่จะ Automate งานที่น่าเบื่อเหล่านี้ออกไป และลดความผิดพลาดที่อาจจะเกิดขึ้น วันนี้เราจะพาทุกคนมาทำความรู้จักกับ Infrastructure as Code กัน...