ข้ามไปยังเนื้อหาหลัก

Cloud Visibility คือจุดเริ่มต้นของทุกอย่าง

FinOps Practitioner เปิด Cost Explorer ให้ทุกคนเห็นว่าค่า AWS 2.1 ล้านบาทไปอยู่ที่ไหนบ้าง RDS กิน 29%, Lambda 24%, ElastiCache 14% แต่ยังตอบไม่ได้ว่า 'ทีมไหน' ใช้เท่าไหร่ เพราะไม่มี Tag

14 ก.พ. 2569 | 10 นาที

ยังไม่มีเวลาอ่าน? แชร์เก็บไว้ก่อนสิ!
TL;DR
  • Visibility คือขั้นแรกของ FinOps ต้องเห็นก่อนถึงจะ optimize ได้
  • Cost Explorer แสดงภาพรวม, CUR ให้ข้อมูลละเอียดระดับ resource, Cost Categories จัดกลุ่มตาม business logic
  • เห็นตัวเลขแล้ว แต่ยังตอบไม่ได้ว่า 'ใคร' ใช้ เพราะไม่มี Tag

งานแรกของ FinOps Practitioner

หลังจากวาง Roadmap ไปในตอนที่แล้ว FinOps Practitioner ก็เริ่มงานแรก นั่นก็คือการส่องไฟให้ทุกคนเห็นว่าค่า Cloud ไปอยู่ที่ไหนบ้าง

ก่อนหน้านี้ มีแค่ CFO คนเดียวที่เห็นบิล AWS และเห็นแค่ตัวเลขรวม 2.1 ล้านบาท/เดือน ไม่รู้ว่าแยกเป็นอะไรบ้าง

สำหรับผู้อ่านที่ใช้ Azure หรือ Google Cloud

บทความนี้ใช้ AWS เป็นตัวอย่าง แต่ทุก Cloud มีเครื่องมือที่ทำหน้าที่เหมือนกัน

หน้าที่AWSAzureGoogle Cloud
ดู CostCost ExplorerCost ManagementCloud Billing Reports
ข้อมูลละเอียดCURUsage Details ExportBigQuery Billing Export
จัดกลุ่ม CostCost CategoriesCost Allocation RulesLabels + Reports
ตั้ง BudgetAWS BudgetsAzure BudgetsCloud Billing Budgets

หลักการ FinOps ใช้ได้กับทุก Cloud เพียงแค่ชื่อเครื่องมือต่างกัน

ภาพรวม Cost คือสิ่งที่ทุกคนต้องเห็น

FinOps Practitioner เปิด AWS Cost Explorer ขึ้นมา แล้วเชิญ CFO, CTO และ DevOps Engineer มาดูด้วยกัน

ค่า AWS แยกตาม Service (ต่อเดือน)

CFO ถามว่า

RDS กินเยอะสุดเลย เกือบ 30% ลดได้อีกไหม?

CTO หน้าซีดทันที

ไม่ได้ครับ เราเพิ่งเจอบทเรียนราคาแพงไปตอนที่แล้ว

FinOps Practitioner พูดว่า

เราลดสเปคดื้อๆ ไม่ได้ครับ ต้องหาต้นเหตุก่อนว่า RDS หนักเพราะอะไร เช่น Query ที่ไม่ดี หรือ Index ที่ขาดหายไป ซึ่งต้องดูจาก Performance Insights ไม่ใช่แค่ Tag

CFO พยักหน้า

โอเค งั้นรอดู Tag ก่อน

FinOps Practitioner ถามต่อว่า

คำถามคือ RDS 6.3 แสนบาทนี้ ทีมไหนใช้เท่าไหร่?

CTO เงียบไป ตอบไม่ได้

FinOps Practitioner พูดว่า

นั่นแหละปัญหา เราเห็นตัวเลขแล้ว แต่ยังตอบไม่ได้ว่าใครใช้เท่าไร

Tag ช่วยได้แค่ไหน?

CFO ถามว่า

ถ้าติด Tag แล้ว เราจะรู้ได้เลยไหมว่าทีมไหนใช้อะไรไปเท่าไหร่?

FinOps Practitioner อธิบายว่า

ต้องแยกเป็น 2 กรณีครับ

กรณีที่ 1: Dedicated Resources (แยกกันใช้)

Lambda function แต่ละตัวแยกกันชัดเจน เช่น search-hotels, create-booking, process-payment พวกนี้ติด Tag ได้ตรงๆ เลย

  • Lambda: search-hotels → Tag: team=search
  • Lambda: create-booking → Tag: team=booking
  • Lambda: process-payment → Tag: team=payment

แบบนี้ดู Cost Explorer แยกตาม Tag ได้เลยว่าทีมไหนใช้ Lambda เท่าไหร่

กรณีที่ 2: Shared Resources (ใช้ร่วมกัน)

RDS instance เดียวรับ query จากทุกทีม ติด Tag ได้แค่ระดับ instance ไม่ใช่ระดับ query

CFO ถามว่า

งั้นจะรู้ได้ยังไงว่าทีมไหนใช้ RDS หนักแค่ไหน?

FinOps Practitioner ตอบว่า

ต้องใช้ Allocation Key ครับ คือกำหนดสูตรแบ่ง cost ของ Shared Resource

วิธีแบ่งตัวอย่างเหมาะกับ
แบ่งตาม % QuerySearch 60%, Booking 30%, Payment 10%มี query metrics
แบ่งตาม % Revenueตาม Revenue ที่แต่ละทีมสร้างทีมที่สร้าง Revenue
แบ่งเท่าๆ กัน33% ต่อทีมไม่มี metrics อื่น

CFO ถามว่า

แปลว่าต้องตกลงกันก่อนว่าจะแบ่งยังไง?

FinOps Practitioner ตอบว่า

ใช่ครับ นี่คือเรื่องที่จะคุยกันในตอน Showback/Chargeback แต่ตอนนี้ขอ Tag ของที่แยกได้ก่อน แค่นั้นก็เห็นภาพชัดขึ้นเยอะแล้ว

Cost Explorer ดูอะไรได้บ้าง?

มุมมองตัวอย่างคำถามที่ตอบได้
By ServiceLambda vs RDS vs S3 ใครกินเยอะสุด?
By Regionap-southeast-1 vs us-east-1 ใช้เท่าไหร่?
By Usage TypeData Transfer vs Compute vs Storage?
By Linked Accountถ้ามีหลาย Account แยกได้
Daily/Monthly Trendเดือนนี้เทียบเดือนที่แล้วเป็นยังไง?

Cost Explorer ตอบไม่ได้

“ทีม Search ใช้ Lambda เท่าไหร่?” เพราะไม่มี Tag หรือ “Feature จองโรงแรมใช้ RDS เท่าไหร่?” เพราะต้องดู query ต่างหาก

CUR: ข้อมูลละเอียดระดับ Resource

FinOps Practitioner ตั้ง Cost and Usage Report (CUR) ส่งไปเก็บใน S3 ทุกวัน

CUR คืออะไร?

CUR (Cost and Usage Report) คือ report ที่ AWS generate ให้ทุกวัน มีข้อมูลละเอียดระดับ resource เช่น Lambda function ไหนใช้เท่าไหร่, RDS instance ไหนใช้เท่าไหร่ เป็น CSV/Parquet file ที่ query ด้วย Athena ได้

CUR ให้ข้อมูลที่ Cost Explorer ไม่มี:

ข้อมูลCost ExplorerCUR
Cost by Service
Cost by Resource ID
Hourly granularity
Savings Plans amortizationบางส่วน✓ ครบ
Tag values✓ (ถ้ามี Tag)✓ (ถ้ามี Tag)

DevOps Engineer ถามว่า

แปลว่าผมดูได้เลยว่า Lambda function search-hotels ใช้เท่าไหร่?

FinOps Practitioner ตอบว่า

ถูกต้อง แต่ CUR ไม่ได้มีไว้อ่านด้วยตาครับ มันเป็น CSV หรือ Parquet ที่มีเป็นล้านบรรทัด ต้อง query ด้วย Athena

DevOps Engineer ตกใจ

ล้านบรรทัด!?

FinOps Practitioner อธิบายว่า

ใช่ครับ ข้อมูลมันดิบมาก แต่ละเอียดที่สุด ถ้าไม่มี Tag การ query CUR ก็เหมือนงมเข็มในมหาสมุทร

Cost Categories: จัดกลุ่มตาม Business Logic

FinOps Practitioner สร้าง Cost Categories ใน AWS Billing Console เพื่อจัดกลุ่ม cost ตาม business logic

Cost Category: Environment
├── Production → Tag:Environment = prod
├── Staging → Tag:Environment = staging
├── Development → Tag:Environment = dev
└── Uncategorized → ที่เหลือทั้งหมด

ปัญหาคือ…

Resources ที่มี Tag 23%
Resources ที่ไม่มี Tag 77%

FinOps Practitioner พูดว่า

77% ของ resource ไม่มี Tag แปลว่า Cost Categories แทบไม่มีประโยชน์ เพราะส่วนใหญ่จะตกไปอยู่ใน Uncategorized

ปัญหา: เห็นตัวเลข แต่ไม่รู้ว่าใครใช้

หลังจากเปิด Visibility ได้ 2 สัปดาห์ FinOps Practitioner สรุปสถานการณ์

สิ่งที่ตอบได้แล้ว:

  • ค่า AWS รวม 2.1 ล้านบาท/เดือน
  • RDS กินเยอะสุด 30% (6.3 แสนบาท)
  • Lambda อันดับ 2 ที่ 25% (5.25 แสนบาท)
  • Trend เดือนต่อเดือน

สิ่งที่ยังตอบไม่ได้:

  • ทีม Search ใช้เท่าไหร่?
  • ทีม Booking ใช้เท่าไหร่?
  • ทีม Payment ใช้เท่าไหร่?
  • Production vs Staging vs Dev ใช้เท่าไหร่?
  • Feature ไหนกิน cost เยอะสุด?

Visibility ≠ Allocation

Visibility คือการ “เห็น” ตัวเลข แต่ Allocation คือการ “แยก” ว่าใครใช้เท่าไหร่ ต้องมี Tag ก่อนถึงจะ allocate ได้

Quick Win: AWS Budgets Alert

ระหว่างรอทีม DevOps ไปจัดการเรื่อง tag ให้ครบถ้วน FinOps Practitioner ก็ได้ตั้ง AWS Budgets ไว้ด้วยเช่นกัน

Budget: Monthly AWS Cost
├── Amount: 2,100,000 บาท (เท่ากับเดือนที่แล้ว)
├── Alert 1: 80% → Email to CFO, CTO
└── Alert 2: 100% → Email to CFO, CTO, DevOps

CFO พูดว่า

อย่างน้อยถ้าบิลจะพุ่ง เราจะรู้ก่อนสิ้นเดือน

FinOps Practitioner ตอบว่า

ใช่ครับ แต่นี่แค่ early warning ยังไม่ใช่ solution ที่ดีพอ

Quick Win แรก: เก็บเงินที่หล่นเรี่ยราด

ระหว่างดู Cost Explorer อยู่ FinOps Practitioner เหลือบไปเห็นค่า CloudWatch และ RDS ที่น่าสงสัย

CloudWatch Logs ไม่มี Retention

FinOps Practitioner ถามว่า

CloudWatch กิน 1.47 แสนบาท/เดือน ปกติไหม?

DevOps Engineer เปิดดู CloudWatch Logs แล้วหน้าซีด

Lambda function ทุกตัวไม่มี retention policy เลย Logs เก็บตลอดกาลมา 2 ปี รวมกันประมาณ 2TB

FinOps Practitioner ถามต่อว่า

แปลว่าเราจ่ายค่าเก็บ Logs เก่าๆ ที่ไม่มีใครดูอีกแล้ว?

DevOps Engineer ตอบว่า

ใช่ครับ ผมตั้ง retention 30 วันให้ทุก Log Group เลยนะ

หลังจากตั้ง retention policy และลบ Logs เก่า ประหยัดได้ 2,000 บาท/เดือน

RDS Manual Snapshots ที่ลืมลบ

FinOps Practitioner ถามต่อว่า

ผมเห็นค่า Snapshot ของ RDS สูงผิดปกติ เราเก็บ Backup ไว้นานแค่ไหนครับ?

DevOps Engineer ตอบว่า

Automated Backup เก็บ 7 วันครับ… อ๋อ แต่ผมชอบกด Manual Snapshot ไว้ก่อน Deploy แล้วอาจจะลืมลบ

FinOps Practitioner เปิดดู RDS Console

Manual Snapshot 50 ตัวจากปีที่แล้ว Database 200GB แต่ละ snapshot เฉลี่ย 50GB รวมเก็บอยู่ 2.5TB

หลังจากลบ Snapshots เก่าที่ไม่จำเป็น ประหยัดได้ 8,000 บาท/เดือน

CFO ยิ้มออก

ดี แค่สัปดาห์แรกก็ประหยัดได้หมื่นบาทแล้ว

FinOps Practitioner ตอบว่า

นี่แค่ขยะที่เห็นชัดครับ ถ้ามี Tag เราจะเจออีกเยอะ

สรุป

สัปดาห์แรกของ FinOps Practitioner:

สิ่งที่ทำผลลัพธ์
เปิด Cost Explorerทุกคนเห็นภาพรวม
ตั้ง CURมีข้อมูลละเอียดระดับ resource
สร้าง Cost Categoriesยังใช้ไม่ได้เพราะไม่มี Tag
ตั้ง AWS Budgetsมี early warning
ตั้ง CloudWatch Logs retentionประหยัดได้ 2,000 บาท/เดือน
ลบ RDS Manual Snapshots เก่าประหยัดได้ 8,000 บาท/เดือน

บทเรียน: Visibility คือจุดเริ่มต้น แต่ไม่พอ ต้องมี Tag ถึงจะตอบคำถามว่า “ใครใช้เท่าไหร่” ได้

ตอนหน้า FinOps Practitioner จะออกแบบ Tagging Strategy และบังคับให้ทุก Resource ต้องมี Tag

ชอบบทความนี้? แชร์ให้เพื่อนด้วยสิ!

รับบทความผ่านทางอีเมล

บทความที่เกี่ยวข้อง