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

Gross Margin ที่ CFO เห็นผิดมาตลอด

ค่า AWS ทั้งก้อนไม่ใช่ COGS ทั้งหมด ต้องแยกต้นทุนที่ให้บริการลูกค้าโดยตรง (COGS) ออกจากค่าใช้จ่ายภายใน (OpEx) ถึงจะเห็น Gross Margin ที่แท้จริง จัดประเภทผิดตั้งแต่ต้น = ตัดสินใจผิดทั้งหมด

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

ยังไม่มีเวลาอ่าน? แชร์เก็บไว้ก่อนสิ!
TL;DR
  • ค่า AWS ทั้งก้อน ≠ COGS ต้องแยกต้นทุนที่ให้บริการลูกค้า (COGS) ออกจากค่าใช้จ่ายภายใน (OpEx)
  • วิธีแยกง่ายๆ: ถ้าปิด service นี้แล้วลูกค้าใช้แอปไม่ได้ → COGS / ถ้าปิดแล้วลูกค้าไม่รู้ → OpEx
  • HotelGO แยกแล้ว Gross Margin จริงสูงกว่าที่ CFO คิด 2.9% ผลต่างนี้เปลี่ยนการตัดสินใจทั้งเรื่อง Pricing, Fundraising และ Product

Tag ครบแล้ว ถึงเวลาแยก COGS

หลังจากติด Tag ครบทุก resource ในตอนที่แล้ว ตอนนี้ FinOps Practitioner พร้อมแยก COGS ออกจาก OpEx แล้ว

วันนี้ FinOps Practitioner นั่งคุยกับ CFO ถามคำถามสำคัญ

ค่า AWS แยก COGS กับ OpEx หรือยังครับ?

CFO ตอบว่า

AWS ทั้งก้อน 2.1 ล้านบาท อยู่ในบรรทัดเดียว เขียนว่า ‘ค่า IT’ ไม่ได้แยกอะไร

FinOps Practitioner พยักหน้า

นั่นแหละครับปัญหา ถ้าไม่แยก เราจะไม่มีทางรู้เลยว่า Gross Margin จริงๆ ของ HotelGO เป็นเท่าไหร่ แต่ตอนนี้เรามี Tag ครบแล้ว แยกได้เลยครับ

COGS vs OpEx: ความแตกต่างที่สำคัญมาก

CFO ถามกลับว่า “COGS กับ OpEx ต่างกันยังไง?”

FinOps Practitioner อธิบายว่า ค่าใช้จ่ายของบริษัทแบ่งได้เป็น 2 กลุ่มใหญ่ๆ ตามหลักการบัญชี

COGS (Cost of Goods Sold) คืออะไร?

ต้นทุนขาย หรือ ต้นทุนสินค้าที่ขาย คือค่าใช้จ่ายที่เกิดขึ้นโดยตรงจากการผลิตสินค้าหรือให้บริการลูกค้า

ลักษณะสำคัญ:

  • ถ้าไม่มี COGS → ลูกค้าใช้บริการไม่ได้เลย
  • ยิ่งขายเยอะ → COGS ยิ่งสูง (Variable Cost)
  • แสดงใน งบกำไรขาดทุน ก่อน Gross Profit

ตัวอย่างในธุรกิจต่างๆ:

  • ร้านอาหาร: วัตถุดิบ, แก๊สหุงต้ม
  • โรงงาน: วัตถุดิบ, ค่าแรงคนงานผลิต
  • SaaS/Cloud: Server ที่รัน production, Database ที่เก็บข้อมูลลูกค้า

OpEx (Operating Expenses) คืออะไร?

ค่าใช้จ่ายในการดำเนินงาน คือค่าใช้จ่ายที่ช่วยให้บริษัททำงานได้ แต่ไม่ได้เกี่ยวกับการผลิตสินค้าหรือให้บริการลูกค้าโดยตรง

ลักษณะสำคัญ:

  • ถ้าไม่มี OpEx → ลูกค้ายังใช้บริการได้ (อย่างน้อยในระยะสั้น)
  • มักเป็น Fixed Cost ที่จ่ายเท่าเดิมไม่ว่าจะขายได้เท่าไหร่
  • แสดงใน งบกำไรขาดทุน หลัง Gross Profit

ตัวอย่างในธุรกิจต่างๆ:

  • ร้านอาหาร: กล้องวงจรปิด, โปรแกรมบัญชี
  • โรงงาน: ค่าเช่าออฟฟิศ, เงินเดือนฝ่ายบัญชี
  • SaaS/Cloud: Monitoring, CI/CD, Security tools

เปรียบเทียบให้เห็นภาพ

ถ้า HotelGO เป็นร้านอาหาร:

ประเภทร้านอาหารHotelGO (Cloud)
COGSวัตถุดิบ, แก๊สหุงต้ม, จานLambda, RDS, CloudFront
OpExกล้องวงจรปิด, โปรแกรมบัญชีCloudWatch, CI/CD, Security
ถ้าไม่มีทำอาหารขายไม่ได้ vs บริหารร้านลำบากลูกค้าใช้ไม่ได้ vs ทีมทำงานลำบาก

วิธีทดสอบง่ายๆ

ลองถามว่า “ถ้าปิด service นี้ทิ้ง ลูกค้าใช้แอปไม่ได้เลยใช่ไหม?”

  • ✅ ใช่ → COGS (ต้นทุนขาย)
  • ❌ ไม่ ลูกค้ายังใช้ได้ปกติ → OpEx (ค่าใช้จ่ายดำเนินงาน)

แยก AWS ทีละรายการ

FinOps Practitioner เปิดบิล AWS แล้วไล่ทีละ service ใช้คำถามเดิมว่า “ปิดแล้วลูกค้าใช้แอปไม่ได้ใช่ไหม?”

COGS: ต้นทุนที่ให้บริการลูกค้าโดยตรง

จากยอดบิล AWS รวม 2.1 ล้านบาท เมื่อใช้ Tag Environment ที่ติดไว้ในตอนที่แล้ว กรองเฉพาะ Production จะเห็นว่าต้นทุนที่ให้บริการลูกค้าจริงๆ มีดังนี้:

Service (Production Only)Cost/เดือนทำไมเป็น COGS
Lambda4.5 แสนบาทรัน search, booking, payment logic ปิดแล้วจองไม่ได้
RDS PostgreSQL4.2 แสนบาทเก็บข้อมูลโรงแรมและการจอง ปิดแล้วไม่มีข้อมูล
ElastiCache Redis2.5 แสนบาทCache ข้อมูลโรงแรม ปิดแล้วหน้า search ช้ามาก (เห็นแล้วจากตอนที่ 2)
CloudFront1.8 แสนบาทส่งหน้าเว็บให้ลูกค้า ปิดแล้วเปิดเว็บไม่ได้
S3 (รูปโรงแรม)8 หมื่นบาทเก็บรูปที่แสดงให้ลูกค้า ปิดแล้วไม่เห็นรูป
API Gateway7 หมื่นบาทรับ request จากลูกค้า ปิดแล้วเรียก API ไม่ได้
รวม COGS1.45 ล้านบาท

ทำไมตัวเลขน้อยกว่าตอนที่ 4?

ตอนที่ 4 เราเห็น RDS รวม 6 แสนบาท แต่ตอนนี้เหลือ 4.2 แสนบาท เพราะเราใช้ Tag Environment กรองเฉพาะ Production ส่วนที่เหลือ 1.8 แสนบาทคือ Staging/Dev ซึ่งจะถูกจัดเป็น OpEx แทน เช่นเดียวกับ Lambda, ElastiCache, CloudFront, S3 และ API Gateway ที่ก็มี Dev/Staging แยกออกไปด้วย

OpEx: ค่าใช้จ่ายภายในที่ลูกค้าไม่สัมผัส

ServiceCost/เดือนทำไมเป็น OpEx
RDS (Dev/Staging)1.8 แสนบาทฐานข้อมูลสำหรับทดสอบ ลูกค้าไม่ได้ใช้
CloudWatch (Monitoring + Logs)1.5 แสนบาททีม DevOps ใช้ดู metrics ปิดแล้วลูกค้ายังจองได้
S3 (backups + logs)1 แสนบาทเก็บ backup กับ log ลูกค้าไม่ได้ใช้
Lambda (Dev/Staging)5 หมื่นบาทLambda สำหรับทดสอบ
ElastiCache (Dev/Staging)5 หมื่นบาทCache สำหรับทดสอบ
API Gateway (Dev/Staging)3 หมื่นบาทAPI สำหรับทดสอบ
CloudFront (Dev)2 หมื่นบาทCDN สำหรับทดสอบ
อื่นๆ (Support, Security, CI/CD)7 หมื่นบาทAWS Support, GuardDuty, WAF, CodeBuild
รวม OpEx6.5 แสนบาท

รวมทั้งหมด: 1.45 ล้านบาท (COGS) + 6.5 แสนบาท (OpEx) = 2.1 ล้านบาท ตรงกับบิล AWS

ข้อควรระวัง: บาง Service อาจเป็นได้ทั้ง COGS และ OpEx

ตัวอย่างเช่น S3:

  • S3 ที่เก็บ รูปโรงแรม = COGS (ลูกค้าต้องเห็น)
  • S3 ที่เก็บ backup และ logs = OpEx (ลูกค้าไม่เกี่ยว)

หรือ Lambda:

  • Lambda ที่รัน Production = COGS (ลูกค้าใช้โดยตรง)
  • Lambda ที่รัน Dev/Staging = OpEx (ทีมใช้ทดสอบ)

ต้องแยกตาม การใช้งานจริง ไม่ใช่แยกตาม service

CFO มองตารางแล้วพูดว่า

ผมรวมค่า Monitoring กับ CI/CD เข้าไปในต้นทุนขายด้วยตลอดเลย

FinOps Practitioner ตอบว่า

ใช่ครับ 6.5 แสนบาทต่อเดือนที่ไม่ใช่ต้นทุนขาย ถูกนับเป็นต้นทุนขายมาตลอด ทำให้ Gross Margin ที่เห็นต่ำกว่าความเป็นจริง

มาดูสัดส่วนกัน

สัดส่วนค่า AWS: COGS vs OpEx

จาก Donut Chart จะเห็นว่าค่า AWS ส่วนใหญ่ (~69%) เป็น COGS จริง แต่อีก ~31% เป็น OpEx ที่ไม่ควรนับเป็นต้นทุนขาย ถ้ารวมทั้งก้อน ตัวเลข Gross Margin จะผิดไปทันที

Gross Margin: ก่อน vs หลังแยก

FinOps Practitioner อธิบายต่อว่า

ทีนี้มาดูกันว่า ตัวเลขที่แยกผิดมันส่งผลยังไง

Gross Margin (อัตรากำไรขั้นต้น) คืออะไร?

ตัวเลขที่บอกว่า หลังหักต้นทุนขายแล้ว เหลือกำไรกี่เปอร์เซ็นต์

สูตร: Gross Margin = (Revenue − COGS) ÷ Revenue × 100%

ตัวอย่าง:

  • Revenue = 22.5 ล้านบาท
  • COGS = 1.45 ล้านบาท
  • Gross Profit = 22.5 − 1.45 = 21.05 ล้านบาท
  • Gross Margin = 21.05 ÷ 22.5 × 100% = 93.6%

ยิ่งสูงยิ่งดี เพราะแปลว่าธุรกิจเก็บกำไรได้เยอะจากทุกบาทที่ขายได้

ผลกระทบจากการแยกผิด

ถ้าใส่ COGS ผิด Gross Margin ก็ผิดตาม

วิธีคำนวณCOGSGross ProfitGross Margin
❌ รวม AWS ทั้งก้อน2.1 ล้านบาท20.4 ล้านบาทGross Margin 90.7%
✅ แยกเฉพาะต้นทุนขาย1.45 ล้านบาท21.05 ล้านบาทGross Margin 93.6%
Gross Margin (คำนวณผิด) 90.7% รวม AWS ทั้งก้อนเป็น COGS
Gross Margin (คำนวณถูก) 93.6% แยก COGS ออกจาก OpEx แล้ว

สูงกว่า 2.9% ฟังดูอาจไม่เยอะ แต่ที่ Revenue 22.5 ล้านบาทต่อเดือน ผลต่างนี้คิดเป็น 6.5 แสนบาทต่อเดือน หรือ 7.8 ล้านบาทต่อปี ซึ่งก็คือค่า Monitoring, CI/CD, Security และ Support ทั้งก้อนที่ถูกจัดผิดประเภทมาตลอด

ทำไมสำคัญ: ตัวเลขผิด = ตัดสินใจผิด

FinOps Practitioner อธิบายให้ CFO ฟังว่า Gross Margin ที่ผิดไม่ใช่แค่ตัวเลขในงบ แต่มันส่งผลต่อการตัดสินใจสำคัญ 3 เรื่อง

1. Pricing: ตั้งราคาผิด

ปัญหา: ถ้าคิดว่า Gross Margin ต่ำกว่าจริง อาจตั้ง Commission สูงเกินไปเพื่อชดเชย

ผลกระทบ: แข่งกับ OTA รายอื่นไม่ได้ ทั้งที่จริงๆ แล้วมี margin เหลือเฟือ

ตัวอย่าง:

  • คิดว่า Gross Margin = 90.7% → ตั้ง Commission 18% เพื่อให้ปลอดภัย
  • จริงๆ Gross Margin = 93.6% → Commission 15% ก็เหลือเฟือแล้ว
  • ผลคือตั้งราคาแพงกว่าคู่แข่ง 3% โดยไม่จำเป็น

2. Fundraising: Valuation ต่ำกว่าที่ควร

ปัญหา: Investor ดู Gross Margin เป็น key metric ของ SaaS/OTA

ทำไม Investor สนใจ Gross Margin?

  • Gross Margin สูง = ธุรกิจ scale ได้ โดยต้นทุนไม่โตตาม
  • Gross Margin ต่ำ = ยิ่งขายเยอะ ยิ่งต้องจ่ายเยอะ (ไม่น่าลงทุน)

ผลกระทบ:

  • นำเสนอ 90.7% แทนที่จะเป็น 93.6%
  • Investor อาจให้ Valuation ต่ำกว่าที่ควร 10-20%
  • ถ้า Valuation ควรเป็น 500 ล้านบาท อาจได้แค่ 400-450 ล้านบาท

3. Product Decision: ไม่รู้ว่า feature ไหนกำไร

ปัญหา: ถ้าไม่แยก COGS ตามบริการ จะไม่มีทางรู้ว่า feature ไหนมีต้นทุนสูงกว่า

ตัวอย่าง:

  • Search feature ใช้ Lambda + ElastiCache เยอะ → COGS สูง
  • Booking feature ใช้ RDS เป็นหลัก → COGS ต่ำกว่า

ถ้าไม่แยก:

  • ไม่รู้ว่าควรลงทุน optimize feature ไหน
  • ไม่รู้ว่า feature ไหนควรตั้งราคาสูงกว่า
  • ตัดสินใจแบบมั่วๆ

วิธีแยก COGS ใน AWS: ใช้ Cost Allocation Tags

FinOps Practitioner แนะนำวิธีแยก COGS อย่างเป็นระบบ

AWS Cost Allocation Tags คืออะไร?

ระบบติดป้าย (Tag) ให้ทุก AWS resource เพื่อแยกค่าใช้จ่ายตามหมวดหมู่ที่ต้องการ

วิธีใช้:

  1. เปิด AWS Billing Console → Cost Allocation Tags
  2. สร้าง Tag เช่น CostType มีค่าเป็น COGS หรือ OpEx
  3. ติด Tag ให้ทุก resource
  4. รอ 24 ชั่วโมง → เริ่มเห็นค่าใช้จ่ายแยกตาม Tag

ข้อดี:

  • แยกค่าใช้จ่ายได้อัตโนมัติ ไม่ต้องมานั่งแยกเอง
  • ดูย้อนหลังได้ (หลังจากติด Tag แล้ว)
  • Export ไป Excel หรือ BI tools ได้

สรุป: จัดประเภทผิด = ตัดสินใจผิดทั้งหมด

FinOps Practitioner สรุปให้ CFO ฟังว่า

ค่า Cloud ไม่ใช่ก้อนเดียว ต้องแยกว่าอะไรเป็นต้นทุนขาย อะไรเป็นค่าดำเนินงาน ถึงจะเห็นกำไรขั้นต้นที่แท้จริง

บทเรียนจากตอนนี้:

บทเรียนรายละเอียด
ใช้คำถามง่ายๆ แยก COGS”ปิด service นี้แล้วลูกค้าใช้แอปไม่ได้ใช่ไหม?”
Gross Margin ที่ผิดส่งผลต่อทุกการตัดสินใจPricing, Fundraising, Product ล้วนใช้ตัวเลขนี้
ติด Tag ตั้งแต่วันนี้ใช้ AWS Cost Allocation Tags แยก service ตามประเภท

Action Item สำหรับแต่ละ Role

  • CFO/บัญชี: ตรวจสอบว่างบกำไรขาดทุนแยก Cloud COGS ถูกต้องหรือไม่
  • DevOps/Cloud: ติด Cost Allocation Tags ให้ทุก resource
  • FinOps: สร้าง Dashboard แยก COGS vs OpEx ให้ทุกคนเห็น
  • Manager: ใช้ Gross Margin ที่ถูกต้องในการตัดสินใจ

ตอนนี้ HotelGO เห็น Gross Margin จริงแล้ว แต่ยังมีปัญหาอีกอย่าง ไม่มีใครรู้ว่าทีมตัวเองใช้ค่า Cloud เท่าไหร่ ทุกครั้งที่ประชุมเรื่อง Cloud Cost ทุกทีมพูดเหมือนกันว่า “ทีมอื่นน่าจะใช้เยอะกว่า” ตอนหน้า FinOps Practitioner จะเริ่ม Showback ให้แต่ละทีมเห็นตัวเลขของตัวเอง

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

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

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