จ่ายเท่าที่ใช้งานกับ Cloud Virtual Machines

ช่วงนี้ผม deploy ตัวงานขึ้น Windows Azure Virtual Machines ไป 1 ระบบแล้ว และในช่วงวันหยุดนี้กำลังจะมีอีก 1 ระบบ และในอนาคตอีกหลายตัว

เหตุผลที่ตอนนี้ผมแนะนำ Cloud Virtual Machines เยอะขึ้นเรื่อยๆ เพราะค่าใช้จ่ายเริ่มต้นของระบบที่ไม่แพงมาก เมื่อเทียบกับหลายๆ อย่างที่ได้รับมา (ไม่ได้หมายความว่าจะใช้แต่ของ Windows Azure นะ Amazon EC2 ก็ใช้ได้ แล้วแต่ถนัดแล้วกัน)

คือการลงทุนตัว H/W อย่าง Server นั้นมีค่าใช้จ่ายเริ่มต้นที่แพง และสินค้าเทคโนโลยีมีแต่ราคาค่าเสื่อมที่ลดลง เพราะฉะนั้น เราซื้อ H/W ราคาหนึ่งในวันนี้ ใน 18 เดือนต่อมาอาจมีราคาของระบบเพียง 20-60% ของราคาที่ซื้อมาเท่านั้น (แล้วแต่ H/W แต่ละประเภทด้วย) การตั้งต้นระบบที่ไม่แน่ว่าจะทำตลาดได้ดีหรือไม่ หรือมีภาระระบบที่โหลดหนักๆ เพียงไม่กี่ครั้งต่อปีนั้น ดูจะเป็นการลงทุนเผื่ออนาคตที่สูงมากเกินไป

ส่วนตัวแล้วนั้นตอนนี้ผมจึงย้ายระบบที่ Consult หลายๆ ตัวมาไว้บน Cloud เยอะขึ้น เพราะดูที่ค่าใช้จ่ายของลูกค้าที่ต้องจ่ายลงไปแล้วนั้นจะมีค่าใช้จ่ายเริ่มต้นที่ไม่สูงมากนัก

โดยตัวระบบที่ใช้นั้นคือตัว Windows Azure Virtual Machines ซึ่งรองรับ OS หลายตัว ซึ่งมีทั้ง Windows Server 2008 R2, Windows Server 2012, Suse, Ubuntu และ CentOS เป็นต้น โดย Windows Server เราไม่ต้องมาจ่ายเงินค่า Licensing เพิ่มเติม (เหมือนเราจ่ายลงไปเมื่อใช้งานอยู่แล้ว แต่ในจำนวนที่น้อยมากๆ คือจ่ายเฉพาะตอนที่ใช้งาน)

ตัว Windows Azure Virtual Machines เป็น Infrastructure as a Service (IaaS) ที่การคิดเงินของตัว VM นั้น 3 ส่วนหลักๆ คือ
– Compute Time คือจ่ายเฉพาะตอนนี้ VM มันทำงานอยู่เท่านั้น
– Storage Space คือจ่ายเฉพาะพื้นที่ที่ใช้งานจริง
– Data Transfer คือจ่ายเฉพาะที่ใช้ Data ออกจากระบบเท่านั้น

มาดูที่ราคา Compute Time ก่อน จากด้านล่าง

$0.013/hr – Extra small VM (1GHz CPU, 768MB RAM)
$0.08/hr – Small VM (1.6GHz CPU, 1.75GB RAM)
$0.16/hr – Medium VM (2 x 1.6GHz CPU, 3.5GB RAM)
$0.32/hr – Large VM (4 x 1.6GHz CPU, 7GB RAM)
$0.64/hr – Extra large VM (8 x 1.6GHz CPU, 14GB RAM)

ถ้าระบบเราเพิ่งเริ่มต้นก็ใช้ Extra small VM ไปก่อนในการทดสอบระบบ เมื่อ production ไปสักพัก และระบบเริ่มโหลดเยอะจนเริ่มช้า ก็ปรับไปใช้ Small VM และตัวสูงๆ กว่าได้ และเมื่อระบบไม่โหลดก็กลับมาอยู่ที่ Extra small VM ได้ โดยไม่ไม่จำเป็นต้องย้าย Storage ไปมาแต่อย่างใด แค่ restart VM เท่านั้น (ใช้เวลา 5-10 นาที) ก็สามารถย้ายระบบไปใช้ Compute ที่ต่ำหรือสูงกว่าได้ทันที โดยจ่ายเงินเป็นรายชั่วโมงที่ใช้

ในส่วนต่อมาคือ Storage Space ที่เป็น Geo Redundant Storage คือตัว Storage ไม่ได้อยู่ที่เดียว แต่อยู่หลายๆ ที่ โดยวิธีแบ่งไว้ตาม Region โดยมี Primary Region และ Secondary Region ที่ตั้งเป็นค่าเริ่มต้น อย่างที่ผมใช้ก็คือใช้ Primary Region ไว้ที่ Southeast Asia ที่ IDC อยู่ Singapore และระบบมีค่ามาตรฐานที่ทำการตั้งให้ Secondary Region เป็น East Asia ที่มี IDC อยู่ที่ Hong Kong (China) อีกที่ ช่วยป้องกัน link ของ IDC นั้นมีปัญหาจาก Primary Region ซึ่งตัวระบบจะสลับไปอีก IDC ได้ทันที พูดง่ายๆ เหมือนได้ใช้ Server ที่ใส่เว็บไว้สอง IDC โดยจ่ายเงินเท่ากับ IDC เดียว สำหรับราคา Storage Space คิดราคาไว้ 2 แบบคือ Locally Redundant Storage และ Geo Redundant Storage (แบบแรกคือไว้ที่ Region เดียว) โดยราคาเริ่มเต้นที่ 1TB แรกต่อเดือน อยู่ที่ $0.095/GB สำหรับ Geo Redundant และ $0.070/GB สำหรับ Locally Redundant

ต่อมาคือราคา Data Transfer โดย 5GB แรกฟรี ไม่คิดเงิน และราคา GB ต่อไป GB ละ $0.12 แต่ราคา Data Transfer ก็แบ่งตาม Zone ด้วย ตัวอย่างเช่น 10 TB แรก คิดต่อเดือน ที่ $0.12/GB ถ้าใช้ Data Transfer ส่งไปที่ North America และ Europe ส่วนราคา $0.19/GB จะเป็นที่ Zone ของ Asia Pacific, Latin America, Middle East / Africa ถ้าเราทำระบบที่รองรับหลายๆ Zone ก็มีราคาค่าใช้จ่ายที่แตกต่างกันไป

จากที่อธิบายคราวๆ จะเห็นว่าราคานั้นอยู่ที่เราใช้งานเยอะแค่ไหน และจ่ายเท่าที่ใช้งานเท่านั้น ซึ่งจากตัวอย่างที่บอกมานั้น เป็นแค่ Basic เริ่มต้นเท่านั้น ถ้าระบบที่อยาก Scale ออกไปแบบไม่ต้อง downtime ตอน scale up/down ก็จะมีการปรับส่วนของ Load Balancing และเพิ่ม VM เป็น 2-3 ตัวให้ตัวที่กำลัง scale up/down นั้นได้ scale up/down ระบบ และให้ตัว VM ที่ยังไม่ scale up/down นั้นรองรับงานต่อไปก่อนได้ ต้องมีการออกแบบระบบเพิ่มเติมหลายส่วนบน Cloud ซึ่งสามารถทำได้ โดยเราไม่ต้องลงทุนเรื่อง H/W ราคาแพงพวกนี้