Cloud
น้องๆ เคยเจอไหม จ่ายค่าไฟบ้านแพงกว่าปกติ? Cloud Cost Optimization ก็เหมือนกันแหละ แต่เป็นค่าไฟของ Server เราบน Cloud แทนที่จะปล่อยให้บิล Cloud บานปลาย เราต้องมาดูกันว่าจะประหยัดได้ยังไงบ้าง
สมัยผมทำร้านเน็ต SiamCafe เนี่ย ค่าไฟนี่ตัวดีเลย กินกำไรไปเยอะมาก ยิ่งตอนเกมออนไลน์บูมๆ เครื่อง client 30-40 เครื่องเปิด 24 ชั่วโมง ลองคิดดูดิว่าค่าไฟเท่าไหร่ Cloud ก็เหมือนกัน ถ้าเราไม่ Optimize มันดีๆ บิลจะแพงหูฉี่
สำคัญยังไงน่ะเหรอ? ก็เพราะว่า Cloud มันยืดหยุ่นไง เราสามารถปรับขนาดเครื่อง Server, ปิดเครื่องที่ไม่ใช้ หรือเลือกใช้ Service ที่เหมาะสมกับงานได้ ถ้าทำได้ดีๆ เนี่ย ประหยัดไปได้เยอะเลยนะ เอาเงินส่วนต่างไปทำอย่างอื่นได้อีกเพียบ SiamCafe Blog มีบทความอื่นๆ เกี่ยวกับ IT ที่น่าสนใจอีกเยอะเลยนะ
น้องๆ ต้องเข้าใจก่อนว่า Cloud Provider แต่ละเจ้า (AWS, Azure, GCP) เค้าคิดเงินเรายังไง มีหลายแบบนะ
สมัยผมทำร้านเน็ต ผมก็ต้องวางแผนการใช้เครื่อง Server ให้ดี ถ้าช่วงไหนคนเล่นเกมเยอะ ก็ต้องเพิ่ม Server แต่ถ้าช่วงไหนคนน้อย ก็ต้องปิด Server เพื่อประหยัดค่าไฟ Cloud ก็เหมือนกัน เราต้องเลือก Pricing Model ที่เหมาะสมกับ workload ของเรา
อีกเรื่องที่ต้องรู้คือการใช้ทรัพยากรของ Cloud เรา เครื่อง Server เราใช้ CPU, Memory, Disk, Network มากน้อยแค่ไหน ถ้าใช้ไม่เต็มที่ ก็เหมือนเราเช่าห้องใหญ่ แต่ใช้แค่เตียงเดียว ที่เหลือก็เสียเงินเปล่า
เราสามารถใช้ Cloud Monitoring Tools (เช่น AWS CloudWatch, Azure Monitor, GCP Monitoring) เพื่อดู Resource Utilization ได้ แล้วเอาข้อมูลมาปรับขนาด Instance ให้เหมาะสม หรือปิด Instance ที่ไม่ได้ใช้
# Example: Checking CPU Utilization in AWS CloudWatch using AWS CLI
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-xxxxxxxxxxxxxxxxx \
--start-time $(date -v-5m +"%Y-%m-%dT%H:%M:%SZ") \
--end-time $(date +"%Y-%m-%dT%H:%M:%SZ") \
--period 60 \
--statistics Average
Code ข้างบนเป็นตัวอย่างการใช้ AWS CLI เพื่อดึงข้อมูล CPU Utilization ของ EC2 Instance จาก CloudWatch เราสามารถเอาข้อมูลนี้ไปวิเคราะห์เพื่อดูว่า Instance ของเราใช้ CPU เต็มที่หรือเปล่า
เริ่มต้นง่ายๆ เลย น้องๆ ต้องเริ่มจากการ Monitor การใช้งาน Cloud ของเราก่อน ดูว่าเราใช้อะไรบ้าง แต่ละอย่างใช้ทรัพยากรมากน้อยแค่ไหน แล้วก็เริ่มหาจุดที่สามารถ Optimize ได้
เหมือนตอนผมทำร้านเน็ต ผมก็จะคอยดูว่าเกมไหนคนเล่นเยอะ เกมไหนคนเล่นน้อย ถ้าเกมไหนคนเล่นน้อย ผมก็จะลดจำนวนเครื่อง Server ที่ให้บริการเกมนั้น เพื่อประหยัดค่าไฟ Cloud ก็เหมือนกัน เราต้องคอย Monitor และปรับปรุงการใช้งาน Cloud ของเราอยู่เสมอ
Right-Sizing คือการปรับขนาด Instance ให้เหมาะสมกับ workload ของเรา ถ้า Instance ใหญ่เกินไป ก็เสียเงินเปล่า ถ้า Instance เล็กเกินไป ก็ทำให้ Application ทำงานช้า
เราสามารถใช้ Cloud Recommendation Tools (เช่น AWS Compute Optimizer, Azure Advisor, GCP Recommender) เพื่อช่วยแนะนำขนาด Instance ที่เหมาะสมได้ หรือเราสามารถใช้ Monitoring Tools เพื่อดู Resource Utilization และตัดสินใจเอง
สมัยผมทำร้านเน็ต ผมก็ต้องคอยดูว่าเครื่อง Server แต่ละเครื่องรับโหลดได้แค่ไหน ถ้าเครื่องไหนรับโหลดไม่ไหว ก็ต้องเพิ่ม CPU หรือ Memory หรือเปลี่ยนไปใช้เครื่อง Server ที่ใหญ่กว่า Cloud ก็เหมือนกัน เราต้องคอยปรับขนาด Instance ให้เหมาะสมกับ workload ของเรา
Automated Scaling คือการปรับขนาด Instance โดยอัตโนมัติตามความต้องการของ workload ถ้า workload เพิ่มขึ้น Instance ก็จะเพิ่มขึ้น ถ้า workload ลดลง Instance ก็จะลดลง
เราสามารถใช้ Auto Scaling Groups (AWS), Virtual Machine Scale Sets (Azure), Instance Groups (GCP) เพื่อทำ Automated Scaling ได้
# Example: Creating an Auto Scaling Group in AWS using AWS CLI
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name my-asg \
--launch-configuration-name my-launch-config \
--min-size 1 \
--max-size 3 \
--desired-capacity 1 \
--vpc-zone-identifier subnet-xxxxxxxxxxxxxxxxx \
--health-check-type EC2 \
--health-check-grace-period 300
Code ข้างบนเป็นตัวอย่างการสร้าง Auto Scaling Group ใน AWS โดยใช้ AWS CLI Auto Scaling Group จะคอย monitor workload และปรับขนาด Instance โดยอัตโนมัติ
Storage ก็เป็นอีกส่วนที่กินเงินเราเยอะ เราต้องเลือก Storage Type ที่เหมาะสมกับข้อมูลของเรา ข้อมูลที่ไม่ค่อยได้ใช้ ก็ย้ายไปเก็บใน Storage ที่ราคาถูกกว่า
Cloud Provider แต่ละเจ้ามี Storage Type ให้เลือกเยอะแยะ เช่น AWS S3, Azure Blob Storage, GCP Cloud Storage แต่ละ Storage Type ก็มีราคาและคุณสมบัติที่แตกต่างกัน
สมัยผมทำร้านเน็ต ผมก็ต้องคอย Backup ข้อมูลลูกค้าอยู่เสมอ ผมก็จะเลือกใช้ Storage ที่ราคาถูก เพื่อประหยัดค่าใช้จ่าย Cloud ก็เหมือนกัน เราต้องเลือก Storage Type ที่เหมาะสมกับข้อมูลของเรา
ดูวิดีโอเพิ่มเติมเกี่ยวกับCloud Cost Optimization Guide:
นอกจาก Cloud แล้ว เรายังมีทางเลือกอื่นอีก เช่น On-Premise (Server ที่ตั้งอยู่ใน Office เรา) หรือ Hybrid Cloud (ผสมผสานระหว่าง Cloud และ On-Premise)
On-Premise เหมาะกับงานที่ต้องการความปลอดภัยสูง หรือมีข้อจำกัดทางกฎหมาย แต่ก็มีค่าใช้จ่ายในการดูแลรักษาที่สูง Hybrid Cloud เหมาะกับองค์กรที่ต้องการความยืดหยุ่นของ Cloud แต่ก็ต้องการความปลอดภัยของ On-Premise
| Feature | Cloud | On-Premise | Hybrid Cloud |
|---|---|---|---|
| Cost | Pay-as-you-go | Capital expenditure | Mix of both |
| Scalability | Highly scalable | Limited scalability | Scalable |
| Security | Shared responsibility | Full control | Mix of both |
| Maintenance | Provider managed | Customer managed | Shared responsibility |
ตารางข้างบนเปรียบเทียบ Cloud, On-Premise และ Hybrid Cloud ในด้านต่างๆ น้องๆ สามารถเอาข้อมูลนี้ไปประกอบการตัดสินใจได้ว่าทางเลือกไหนเหมาะสมกับความต้องการของเรามากที่สุด SiamCafe Blog มีบทความเปรียบเทียบ Cloud Provider แต่ละเจ้าด้วยนะ ลองเข้าไปอ่านดู
เอาล่ะ น้องๆ มาถึงส่วนที่พี่บอมอยากจะแชร์ประสบการณ์ตรง สมัยพี่ทำร้านเน็ต SiamCafe นี่แหละ เรื่อง Cloud Cost Optimization เนี่ย จริงๆ มันก็เหมือนกับการบริหารเงินในกระเป๋านั่นแหละ ถ้าเราไม่วางแผนดีๆ เงินก็หมดไปกับเรื่องไม่จำเป็น
สมัยก่อนร้านเน็ตพี่เนี่ย Server ก็ต้องซื้อเอง ดูแลเอง ค่าไฟบานตะไท พอมา Cloud เนี่ยมันดีตรงที่เราจ่ายเท่าที่เราใช้ แต่ถ้าเราไม่ระวัง มันก็เหมือนคนรวยที่ใช้เงินเกินตัวได้เหมือนกัน
หลายคนชอบคิดว่า "เผื่อไว้ดีกว่า" แล้วก็ไปเช่า Instance ใหญ่ๆ แรงๆ ทั้งๆ ที่จริงๆ แล้ว Application เราไม่ได้ต้องการขนาดนั้น สมัยพี่ทำร้านเน็ตก็เคยพลาดมาแล้ว ซื้อ Server แรงๆ มา แต่ลูกค้าเล่นแค่ Counter Strike อ่ะ คิดดูดิ๊ เสียดายเงินขนาดไหน
ลองใช้ Cloud Provider's Monitoring Tools ดูนะ พวก CloudWatch (AWS), Monitoring (GCP), Azure Monitor เนี่ย มันจะบอกเราว่า Instance เราใช้ CPU, Memory เท่าไหร่ แล้วเราก็ปรับขนาดให้มันพอดีๆ อย่าไปเสียเงินกับ Resource ที่ไม่ได้ใช้เลย
Auto Scaling เนี่ย มันเหมือนมีพนักงานคอยดูว่าลูกค้าเข้าร้านเยอะมั้ย ถ้าน้อยก็ลดพนักงาน ถ้าเยอะก็เพิ่มพนักงาน มันจะช่วยให้เราไม่ต้องจ่ายเงินสำหรับ Instance ที่ไม่ได้ใช้งานในช่วงเวลาที่ Traffic น้อยๆ
พี่เคยเจอเคสที่ลูกค้าทำเว็บ E-commerce แล้วไม่ได้ใช้ Auto Scaling ช่วงกลางคืนนี่ Server แทบจะว่างเปล่า แต่ก็ยังต้องจ่ายเงินเต็มจำนวน พอปรับมาใช้ Auto Scaling นี่ประหยัดค่าใช้จ่ายไปเยอะเลย
ถ้าเรารู้ว่าเราต้องใช้ Instance ตัวเดิมไปอีกนานๆ เนี่ย การซื้อ Reserved Instances (AWS) หรือ Committed Use Discounts (GCP) เนี่ย มันคุ้มค่ามากๆ เลยนะ มันเหมือนเราซื้อตั๋วหนังรายปีอ่ะ จ่ายเงินก้อน แต่ดูได้ทั้งปี
พี่เคยคำนวณดูแล้ว ถ้าเราใช้ Instance ตัวเดิมเกิน 1 ปี การซื้อ Reserved Instances เนี่ยประหยัดเงินได้มากกว่า 50% เลยนะ คุ้มค่ามากๆ
Cloud Provider บางทีก็มี Instance เหลือๆ ที่ไม่ได้ใช้งาน เค้าก็จะเอามาขายในราคาถูกๆ พวกนี้เค้าเรียกว่า Spot Instances (AWS) หรือ Preemptible VMs (GCP) แต่ข้อเสียคือ Instance พวกนี้อาจจะถูกแย่งคืนไปได้ ถ้ามีคนต้องการใช้มากกว่า
ถ้า Application เราสามารถจัดการกับ Instance ที่หายไปได้ (เช่น Batch Processing) การใช้ Spot Instances เนี่ย มันก็เป็นทางเลือกที่น่าสนใจนะ ประหยัดเงินได้เยอะมากๆ
ข้อมูลบางอย่างเราไม่ได้ใช้บ่อยๆ แต่ก็ยังต้องเก็บไว้ (เช่น Log Files) แทนที่จะเก็บไว้ใน Storage ราคาแพง (เช่น SSD) เราก็ย้ายไปเก็บไว้ใน Storage ที่ราคาถูกกว่า (เช่น HDD หรือ Cloud Storage Archive) ได้
พี่เคยเจอเคสที่บริษัทเก็บ Log Files ไว้ใน SSD เป็นปีๆ พอแนะนำให้ย้ายไปเก็บใน Cloud Storage Archive นี่ประหยัดค่าใช้จ่ายไปได้หลายหมื่นเลย
มันไม่ง่าย แต่มันก็ไม่ยากเกินไปหรอก น้องๆ ลองเริ่มจากเรื่องง่ายๆ ก่อน เช่น Right Sizing แล้วค่อยๆ เรียนรู้เทคนิคอื่นๆ ไปเรื่อยๆ ที่สำคัญคือต้อง Monitor การใช้งาน Cloud ของเราอย่างสม่ำเสมอ
Cloud Provider เค้ามี Tools ให้เราใช้ฟรีๆ อยู่แล้ว เช่น CloudWatch (AWS), Monitoring (GCP), Azure Monitor ลองศึกษาการใช้งานดูนะ มันจะช่วยให้เราเห็นภาพรวมของการใช้งาน Cloud ของเราได้ดีขึ้น
ถ้าเราไม่มีความรู้เรื่อง Cloud เลย การจ้าง Consultant ก็เป็นทางเลือกที่ดีนะ เค้าจะช่วยเราวางแผนและ Implement Cloud Cost Optimization Strategy ได้ แต่ถ้าเราพอมีความรู้พื้นฐานอยู่บ้าง เราก็สามารถเรียนรู้และทำเองได้
สำคัญมากๆ เลยนะ ถ้าเราไม่ Optimize ค่าใช้จ่าย Cloud ของเรา เราอาจจะต้องจ่ายเงินมากกว่าที่ควรจะเป็นหลายเท่าตัวเลยนะ ลองคิดดูว่าถ้าเราประหยัดเงินได้ 20-30% เราเอาเงินส่วนนั้นไปลงทุนทำอย่างอื่นได้อีกเยอะเลย
Cloud Cost Optimization เนี่ย มันเป็นเรื่องที่ต้องทำอย่างต่อเนื่อง ไม่ใช่ทำครั้งเดียวแล้วจบ เราต้องคอย Monitor การใช้งาน Cloud ของเราอยู่เสมอ แล้วก็ปรับปรุง Strategies ของเราให้เหมาะสมกับสถานการณ์
จำไว้ว่า "เงินทองของหายาก" เราต้องใช้เงินทุกบาททุกสตางค์ให้คุ้มค่าที่สุด iCafeForex ขอให้ทุกคนประสบความสำเร็จในการทำ Cloud Cost Optimization นะครับ ไปติดตามเรื่องราวอื่นๆ ได้ที่ SiamCafe Blog นะ