เคล็ด (ไม่) ลับในการลดค่าใช้จ่ายในการใช้งาน Azure Virtual Machine

0
1583

หลังจากคราวที่แล้วผมได้พูดถึง ความแหร่มของการสร้าง Virtual Machine ในหน้าตาของ Azure Portal ไปแล้วนั้น จะเห็นได้ว่าในหน้า Portal ได้มีการออกแบบมาให้ใช้งานง่ายขึ้น แต่ทุกอย่างในนั้นล้วนเกี่ยวข้องกับค่าใช้จ่ายที่จะเกิดขึ้นทั้งสิ้น ซึ่งถ้าเราใช้งานแบบไม่คิดอะไรมาก ก็จะนำมาซึ่งค่าใช้จ่ายที่ไม่จำเป็นครับ

ในโพสต์นี้จะได้แนะนำวิธีการในการบริหารจัดการ Virtual Machine ใน Azure ให้ได้ประโยชน์สูงสุด และประหยัดงบประมาณขององค์กรได้เป็นอย่างดีอีกด้วย ทำได้อย่างไรกันบ้าง เดี๋ยวมาดูกันเลยครับ
หลักการที่จะลดค่าใช้จ่ายในการใช้งาน Azure Virtual Machine นั้นมีง่ายๆ ด้วยกันเพียงข้อเดียวคือ “สร้างเท่าที่ใช้”  ครับ ไม่ต้องสร้างเผื่อดังนั้นสิ่งที่เราสามารถลดได้เห็นๆ เลยมีดังนี้ครับ

1. ตัดสินใจให้ดีว่าจะใช้บริการ Azure ในรูปแบบไหน
การทำงานบางอย่างบน Azure นั้นจะมีให้เลือกใน 2 รูปแบบคือ IaaS (Infrastructure as a Service) และ PaaS (Platform as a Service) ซึ่งสามารถใช้แทนกันได้ ยกตัวอย่างดังตาราง

การทำงาน IaaS PaaS
ใช้ฐานข้อมูล Microsoft SQL Server Azure Virtual Machine + SQL Server Azure sQL Database
เว็บไซต์ โดยใช้ Word Press Windows Server + IIS + Word press (ติดตั้งเอง) Azure Web Site

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

  • ความเหมาะสมในการใช้งานในองค์กร เช่นความเข้ากันได้กับแอพลิเคชั่นที่ต้องการ เนื่องจากใน Azure ที่เป็น PaaS อาจจะไม่ครอบคลุมทุกเวอร์ชันของซอฟต์แวร์
  • ความเหมาะสมในการบริหารจัดการ เช่น การ update software, การสำรอง/กู้คืนข้อมูล และการบำรุงรักษาต่างๆ ซึ่งอันนี้หมายความรวมถึง Workload ของ IT Administration เองด้วยนะครับ
  • ค่าใช้จ่าย  ตัวนี้ก็เป็นปัจจัยสำคัญอีกตัวนึง ซึ่งสามารถประเมินล่วงหน้าได้ โดยใช้ Azure Pricing Calculator

แต่ถ้าเราเลือกแล้วว่าจะใช้ท่า Azure Virtual Machine ก็มาดูข้อต่อไปกันครับ แต่ถ้าจะไปใช้ PaaS ก็ข้ามหัวข้อนี้ไปครับ 55555

2. เลือกขนาด (Size) ของ Virtual Machine ที่เหมาะสม

ค่าใช้จ่ายของ Virtual Machine นั้นโดยส่วนใหญ่เป็นค่าใช้จ่ายเกี่ยวกับ Computing Power ของ Virtual Machine นั่นเอง ซึ่งก็หมายถึง CPU กับ RAM ดังนั้นเราจึงควรเลือก Size ของ Virtual Machine ตามความเหมาะสม  โดยผมได้เคยเขียนเรื่องของ Series ต่างๆ ของ Azure Virtual Machine กันไปก่อนหน้านี้ สามารถติดตามอ่านย้อนหลังได้  แต่ถ้า Series เยอะเกินไป ผมขอแนะนำง่ายๆ แบบนี้ครับ

  • B  Series  ตัว Series นี้จะมีราคาค่อนข้างถูกมาก เมื่อเทียบกับ Series อื่นๆ เหมาะกับการใช้งานในการทดสอบแอพลิเคชั่น ที่มีการใช้งาน CPU กับ RAM ไม่มากนัก แต่ไม่เหมาะกับ Production เป็นอย่างยิ่ง เพราะถ้าเรามีการใช้ CPU กับ RAM เกินกว่าที่กำหนด จะมีการชาร์ตค่าใช้จ่ายเพิ่มเติมด้วย ถ้าเป็น Production ผ่านไปที่ Series ถัดไปเลย
  • DSxx_V2  Series   ตัว Series จะมีอัตราส่วน CPU Core:Memery ที่ 1core:3.5 GB นี้จะมีเน้นที่การทำงานที่ใช้ CPU เป็นหลัก มีการใช้งาน RAM น้อย เช่นใช้เป็น Web Server
  • Exx_V3 Series  ตัว Series นี้จะมีอัตราส่วน CPU Core:Memery ที่ 1core:8 GB เหมาะกับการใช้งานที่ต้องการ RAM ค่อนข้างเยอะ ใช้ CPU น้อยหน่อย เช่นพวก SQL Server
ข้อมูลของ DSxx_V2 Series
ข้อมูลของ DSxx_V2 Series
ข้อมูลของ Exx_V3 Series
ข้อมูลของ Exx_V3 Series

ผมได้แสดงตัวอย่างข้อมูลของแต่ละ Series ข้างต้นไว้ให้ดูประกอบกันไว้แล้ว ซึ่งแต่ละ Series จะมีข้อจำกัดในการใช้งานที่ไม่เหมือนกัน อย่าลืมดูรายละเอียดให้ดีก็แล้วกัน

3. ถ้าไม่ใช้งานก็ปิด Virtual Machine ซะ
เนื่องจาก Microsoft Azure นั้นคิดค่าใช้จ่ายตามจริงเป็นวินาทีที่ใช้งานจริง ดังนั้นถ้า Virtual Machine นั้นไม่มีความจำเป็นต้องใช้งาน ก็ปิดมันไปซะ โดยในหน้า Portal ที่ปรับปรุงใหม่นั้นก็จะมีการอนุญาติให้ตั้งเวลาปิดไว้ได้ด้วย

ข้อจำกัดคือมันมีแต่ Auto-Shutdown  ไม่มี Auto-Start 55555 ถ้าอยากได้ Auto Start ต้องไปทำเพิ่มเอาเองตาม Link ข้างล่างนี้เลย
Note: Start/Stop VMs during off-hours solution in Azure Automation

หรือจะใช้วิธีการกด start/stop Virtual Machine ในหน้า Portal ก็ได้เหมือนกัน

ขอบอกเพิ่มอีกนิดนึงว่า การ shutdown Windows / Linux โดยการ Shutdown ที่ระบบปฏิบัติการ ไม่ได้เป็นการหยุดการ charge ค่าใช้จ่าย เนื่องจาก Azure ยังคงสงวนทรัพยากรต่าง ๆ ไว้ให้อยู่ (แต่เราไม่ใช้เอง) เรียกว่าเสียตังค์ฟรีอีกต่างหากนั่นเอง

ข้อจำกัดของการทำ Auto-Shutdown ก็คือว่า ทุกครั้งที่ Virtual Machine มีการ Shutdown แล้วเปิดขึ้นมาใหม่นั้นหมายเลขไอพี (IP Address) ของ Virtual Machine จะมีการเปลี่ยนแปลง ซึ่งมีทางแก้ไข 2 วิธีการคือ

การใช้งาน Reserved IP และ DNS Name
การใช้งาน Reserved IP และ DNS Name
  • วิธีที่ 1 การทำ Reserved IP Address (อันนี้เสียค่าใช้จ่ายเพิ่ม แต่ผมว่าคุ้มกับค่าใช้จ่ายที่ประหยัดได้) เพื่อให้ Azure ทำการ Reserve หมายเลขไอพีไว้ให้กับ Virtual Machine ของเราโดยตรง
  • วิธีที่ 2 การอ้างอิงโดยใช้ DNS Record ซึ่ง Azure จะมีให้ผู้ใช้สามารถเลือก DNS Name ของ Virtual Machine ได้ และสามารถเข้าถึงผ่าน DNS Name นี้ได้ด้วยครับ วิธีการนี้ฟรี ไม่เสียค่าใช้จ่าย และท่านสามารถนำ DNS Name นี้ไปใส่ใน DNS ขององค์กรเพื่อให้สามารถใช้งานเป็นชื่อ DNS ของบริษัทของท่านได้อีกด้วย

4. ใช้ Bring Your Own License (BYOL)
อีกวิธีการหนึ่งที่สามารถลดค่าใช้จ่ายในส่วนของ Azure Virtual Machine ลงได้ คือการนำเอา License ที่มีอยู่ในองค์กรไปใช้บน Azure ก็สามารถทำได้ครับ นั่นคือถ้าองค์กรมี License Windows Server 2016 Datacenter ก็สามารถเลือก Option “Save Money” ตามสร้าง Virtual Machine ได้เลยครับ

ตัวเลือก Save Money ในการสร้าง Virtual Machine
ตัวเลือก Save Money ในการสร้าง Virtual Machine

5. การใช้งาน Reserved Instance
ในกรณีที่เราตัดสินใจแน่วแน่แล้วว่า Azure Virtual Machin ที่เราสร้างขึ้นนั้นเหมาะสมกับแอพลิเคชั่น และการใช้งานของเรา และพร้อมที่จะใช้งานไปอีกยาวๆ ก็เลือกเป็น Reserved Instance ไปเลย เพราะ Azure จะมีส่วนลดให้เราอีกดังรูป

ตัวอย่างส่วนลดของ Reserved Instance

แต่การใช้ Reserved Instance นั้นจะมีเงื่อนไข คือใช้ได้เฉพาะ Subscription ที่เห็น Pay as You Go, Cloud Service Provider (CSP) และ Enterprise Agreement (EA) เท่านั้นครับ  ถ้าองค์กรไหนใช้ Azure Open นั้น ณ ปัจจุบันยังไม่มีส่วนลดนี้

6. เลือก Storage แต่พอดี ไม่เผื่อขนาดพื้นที่มากเกินไป
ค่าใช้จ่ายอีกส่วนหนึ่งของ Azure ก็คือเรื่องของ Storage ครับ ดังนั้นเรื่อง Disk เราจึงควรมีการวางแผนให้ชัดเจนว่าข้อมูลเราจะต้องใช้พื้นที่ในการจัดเก็บเท่าไร และต้องการ Redundancy แบบไหน (LRS, GRS เป็นต้น) ซึ่งเราก็ควรจะเผื่อไว้บ้าง แต่ไม่ใช่เหลือเผื่อไว้แบบไม่ได้ใช้ก็จะเป็นการเสียค่าใช้จ่ายโดยเปล่าประโยชน์

7. การเชื่อมต่อเครือข่าย (Virtual Network)

ค่าใช้จ่ายในส่วนของเครือข่ายนั้นก็เป็นอีกส่วนหนึ่ง และเป็นการยากที่จะประเมินค่าใช้จ่ายในส่วนนี้ครับ  จริงอยู่ว่าการเชื่อมต่อเครือข่ายทุกอย่างที่เข้าสู่ Azure นั้นฟรีหมด  แต่ถ้าขาออกจาก Azure เมื่อไรมีเสียค่าใช้จ่าย ดังนั้นการออกแบบแอพลิเคชั่นจึงควรจะมีการออกแบบให้ดี อย่างเช่น Keep alive connection  ไม่ควรจะถี่เกินไป (ยิ่งถี่ยิ่งมีปริมาณข้อมูลมาก และเสียค่าใช้จ่ายมากเกินความจำเป็น)

ข้อที่อยากจะให้หลีกเลี่ยง คือการตั้ง service ที่เกี่ยวข้องกับ SMTP บน Azure เนื่องจากหมายเลขไอพีของ Azure นั้นมีการใช้งานโดยผู้ใช้บริการเป็นจำนวนมาก ดังนั้นจึงไม่ปลอดภัย และมีความเสี่ยงสูงมากที่จะทำให้เกิดผู้ฉวยโอกาสใช้ service ของเราในการปล่อย spam mail และจะทำให้เกิดค่าใช้จ่ายในส่วนของเครือข่ายมากขึ้น ตามไปด้วย

นอกจากนี้ยังมีเทคนิคอื่นๆ เพิ่มเติมอีกมากมายซึ่งสามารถอ่านเพิ่มเติมได้จาก