ใช้ EC2 ทำอะไรดี และมีอะไรใน EC2

ช่วงนี้มีเพื่อนๆมาขอให้ผมเขียนบทความเรื่องการติดตั้งและการประยุกต์ใช้ Amazon Web Services โดยเฉพาะ Amazon EC2 คำถามประมาณว่า “เอา EC2 ไปทำอะไรได้บ้าง?” … แต่เนื่องจากผมไม่มีเวลาเขียนน่ะ มันไม่ใช่แค่เวลา แต่มันต้องใช้อารมณ์ในการเขียนด้วย (ช่วงนี้ไร้อารมณ์) ดังนั้น โพสต์นี้ไม่ได้เขียนขึ้นมาเพื่อตอบคำถามว่า “ใช้ EC2 ทำอะไรดี” หากแต่ผมจะเขียนถึงเรื่องอื่น ซึ่งเป็นเรื่องที่ผมเขียนค้างไว้นานเป็นปีแล้ว  เป็นเรื่องฟีเจอร์ของ EC2 โดยผมขอตอบคำถามว่า “มีอะไรบ้างใน EC2?” ซึ่งรวมๆแล้วมันก็เป็นอะไรที่ผู้ให้บริการ cloud computing รายอื่นๆก็มีหรือพยายามมี

บางท่านกล่าวว่า “ไม่รู้ว่าจะประยุกต์ EC2 ไปทำอะไรได้บ้าง?” … คำถามนี้ผมตอบแบบมักง่าย ก็คือ “คุณต้องการหรือไม่ต้องการฟีเจอร์ของ cloud computing หรือไม่ก็ตาม เซิร์ฟเวอร์บน EC2 มันก็ยังเป็นเซิร์ฟเวอร์ ดังนั้น คุณใช้เซิร์ฟเวอร์ไปทำอะไรได้ คุณก็ใช้ EC2 ทำงานนั้นได้เช่นกัน (อาจจะไม่ทั้งหมดก็ตาม)” ผมอยากเกริ่นแบบสรุปสั้นๆว่า EC2 มันไม่มีอะไรมาก คือ มันเป็นบริการโฮสต์เซิร์ฟเวอร์(เสมือน) ดังนั้น คุณเคยตั้งเซิร์ฟเวอร์ที่บ้านหรือที่บริษัทยังไง เคยเอาเซิร์ฟเวอร์ไปทำอะไรได้บ้าง บน EC2  มันก็ไม่ได้ต่างกันมาก วิธีสร้างเซิร์ฟเวอร์อาจแปลกนิดๆ แต่ที่เพิ่มมานั้นคือ EC2 มีฟีเจอร์บางอย่างเพิ่มเข้ามาเพื่อทำให้เกิดบริการที่เรียกว่า cloud computing

หมายเหตุ บทความนี้ไม่ได้รับการสนับสนุนจาก Amazon หรือผู้ใด ทั้งนี้ ผมไม่มีจุดประสงค์โฆษณาผลิตภัณฑ์และบริการใดๆทั้งสิ้น

ภาพกว้างๆของ EC2

EC2 หรือ Elastic Compute Cloud เป็นบริการโฮสต์เซิร์ฟเวอร์ของ Amazon โดยเซิรฟ์เวอร์ที่ว่านี้ เป็นเซิร์ฟเวอร์เสมือน (virtual machine / virtual server) ที่ทำงานบนซอฟต์แวร์ชื่อ Xen hypervisor

จุดเด่นการโฮสต์เซิร์ฟเวอร์เสมือนสำหรับผู้ใช้ (ซึ่งเป็นลูกค้า) คือ

  1. ติดตั้งระบบปฎิบัติการ (OS) และ kernel ของ OS ที่ต้องการได้
  2. ติดตั้งซอฟต์แวร์ที่ต้องการได้
  3. เลือกสเปคของฮาร์ดแวร์ของเซิร์ฟเวอร์ได้ เช่น เลือกจำนวน CPU core, ขนาดแรม, และขนาดฮาร์ดดิสก์ได้ เป็นต้น
  4. ผู้ใช้ได้สิทธิ์เป็น root / admin / owner ในการจัดการเซิร์ฟเวอร์ เช่น จะติดตั้งและทำลายเซิร์ฟเวอร์เมื่อไหร่ก็ได้ และก็เป็นเหตุผลของจุดเด่นในข้อ 1. ถึง 3.
  5. ผู้ใช้สามารถติดตั้งเซิร์ฟเวอร์ตัวใหม่ได้ในเวลาสั้น(มากๆ) เช่น คุณสามารถติดตั้งเซิร์ฟเวอร์หนึ่งเครื่อง(หรือมากกว่านั้น)สำหรับรันเว็บและดาต้าเบสเซิร์ฟเวอร์ ได้ในเวลาไม่ถึง 10 นาทีหรือน้อยกว่านั้น เป็นต้น
  6. ปกติระยะเวลาในการบู๊ตเซิร์ฟเวอร์เสมือนเร็วกว่าเซิร์ฟเวอร์จริง ดังนั้น การบำรุงรักษาซอฟต์แวร์ของเซิร์ฟเวอร์เสมือนและการสร้างเซิร์ฟเวอร์เครื่องใหม่ขึ้นมาทำงานจึงทำได้อย่างรวดเร็วตามไปด้วย
  7. ราคาของเซิร์ฟเวอร์เสมือนคุ้มค่ากว่าเซิร์ฟเวอร์ของจริง ทั้งราคาเช่าเซิร์ฟเวอร์ที่ถูกกว่า อีกทั้งควบคุมงบได้ ใช้มากเท่าไหร่ก็จ่ายตามนั้น และไม่มีราคาบำรุงรักษาฮาร์ดแวร์ (และก็ไม่ต้องกังวลเรื่องค่าไฟและค่าแอร์)

โพสต์แนะนำ – (update – August 17, 2012) สำหรับท่านที่สนใจตัวอย่างง่ายๆของการใช้ EC2 คือ ผมใช้ EC2 สำหรับงานวิจัย แต่ก็ไม่ได้ใช้ฟีเจอร์เต็มที่ หากแต่สนองความต้องการเบื้องต้นและแก้ไขปัญหาที่ผมเผชิญกับการใช้คอมพิวเตอร์ที่ออฟฟิศได้มากทีเดียว อ่านตัวอย่างนี้ได้ที่ เช่าคอมแรม 68 กิ๊กบน EC2 มาทำวิจัย

มีอะไรใน EC2

เรามาดูกันว่ามีอะไรบ้างในบริการ Amazon EC2  ผมขอสรุปเป็นข้อๆเท่าที่ผมพอจะนึกได้

  1. EC2 มีตัวเลือกของเซิร์ฟเวอร์อยู่มากมาย (ตามข้อมูลล่าสุดของวันที่ 24 ธันวา 2553 มีทั้งหมด 11 ชนิด) เราเรียกคำว่า “ชนิดของเซิร์ฟเวอร์เสมือน” ของบริการ EC2 ว่า instance type โดยแต่ละ instance type เหมาะสำหรับงานหรือแอพพลิเคชันที่แตกต่างกันไป เช่น High-CPU Medium Instance เหมาะสำหรับการประมวลผลหนักๆ, High-Memory Extra Large เหมาะกับแอพพลิเคชันที่ต้องการแรมเยอะๆ, Micro Instance เหมาะกับงานที่มีโหลดไม่มาก, และ Cluster GPU Quadruple Extra Large เหมาะกับงานที่ต้องประมวลผลบนหน่วยประมวลผลกราฟิก เป็นต้น อย่างไรก็ดี ประเด็นนี้อาจจะเป็นจุดด้อยของ EC2 ก็ได้ เพราะ instance type ทั้ง 11 ชนิดก็ยังไม่สามารถตอบโจทย์ลูกค้าได้ทุกกลุ่ม ถ้าจะให้ดี EC2 น่าจะยอมให้ลูกค้าออกแบบเซิร์ฟเวอร์เสมือนตามต้องการได้เองด้วย แต่ผมเข้าใจ Amazon ว่ามันไม่ใช่เรื่องง่ายในการจัดสรรทรัพยากรคอมพิวเตอร์หากลูกค้าออกแบบเซิร์ฟเวอร์ได้ตามใจ
  2. ค่าเช่าเซิร์ฟเวอร์ของ EC2 คิดตามการใช้งานจริง (หรือ pay-per-use) และไม่ต้องติดสัญญาผูกมัดกับการใช้บริการ ใช้เท่าไหร่ก็จ่ายตามจริง และอยากเลิกใช้บริการเมื่อไหร่ก็ได้ ทาง Amazon เรียกการคิดราคาดังกล่าวว่า On-Demand Instances ยกตัวอย่างเช่น ถ้าเรารันเซิร์ฟเวอร์บน EC2 แบบ Small Instance จำนวนหนึ่งเครื่องเป็นเวลา 2 ชั่วโมง จากนั้นเราก็เลิกใช้บริการ EC2 ทาง Amazon เขาจะคิดค่าเช่าเพียง 2 ชั่วโมงเท่านั้น หากคิดแค่ค่าเช่าซีพียูอย่างเดียว Small Instance มีราคาเริ่มต้นที่ 0.085 เหรียญต่อชั่วโมง ดังนั้น ถ้ารัน 2 ชั่วโมง ก็จ่ายเพียง 0.085 x 2 = 0.17 เหรียญ
  3. ราคาค่าเช่าเซิร์ฟเวอร์ที่สมเหตุสมผล … จุดนี้ผมไม่ต้องการบอกว่า EC2 มันถูก เพราะถูกหรือแพงนั้นขึ้นกับลักษณะของระบบและต้องอาศัยการวิเคราะห์ เช่น cost-benefit analysis รวมถึงศาสตร์อื่นๆอย่าง risk analysis ร่วมด้วย เป็นต้น ราคาค่าเช่าการประมวลผลของ EC2 เริ่มต้นที่ 0.02 เหรียญต่อชั่วโมง (ประมาณ 60 สตางค์ต่อชั่วโมง หรือ 430 บาทต่อเดือน) อย่างไรก็ดี การคำนวณค่าใช้จ่ายจริงของ EC2 ต้องคิดค่าเช่าพื้นที่จัดเก็บข้อมูล ปริมาณการใช้เครือข่าย  และบริการเสริมอื่นๆด้วย
  4. ผู้ใช้สามารถเพิ่มขนาดฮาร์ดดิสก์และจำนวนฮาร์ดดิสก์ให้กับเซิร์ฟเวอร์เสมือนได้ โดยฮาร์ดดิสก์ดังกล่าวเป็นฮาร์ดดิสก์เสมือนที่เรียกว่า Elastic Block Storage (EBS) ลูกค้าสามารถเลือกฮาร์ดดิสก์ EBS ขนาด 1 GB ถึง 1 TB ต่อก้อนได้ และมีราคาอยู่ที่ 0.10 เหรียญต่อ 1 GB ต่อเดือน นอกจากนี้ มีค่าใช้จ่ายในการเข้าถึงฮาร์ดดิสก์ด้วย อยู่ที่ 0.10 เหรียญต่อคำสั่ง I/O หนึ่งล้านคำสั่ง นั่นหมายความว่า ถ้าเราใช้ฮาร์ดดิสก์บ่อยมาก เราก็ต้องจ่ายมากไปด้วย
  5. ผู้ใช้สามารถสร้างกลุ่มของเซิร์ฟเวอร์เสมือน (หรือคลัสเตอร์) เพื่อใช้ในการประมวลผลแอพพลิเคชันชนิดเดียวกันเพื่อรองรับโหลดงานที่มีจำนวนมากได้ อีกทั้ง EC2 จัดเตรียม load balancer ชื่อ Elastic Load Balancing สำหรับแบ่งเบาภาระระหว่างเซิร์ฟเวอร์ (แต่ไม่ฟรี) ผู้ใช้สามารถเลือก load balancer เจ้าอื่นๆมาใช้ก็ได้
  6. Auto scaling เป็นบริการฟรีใน EC2 เป็นบริการเติมเต็มคุณสมบัติ elasticity และ on-demand ซึ่งเป็นคุณสมบัติหลักของ cloud computing โดย auto scaling ทำให้ลูกค้าสามารถเพิ่มหรือลดจำนวนเซิร์ฟเวอร์ได้อย่างอัตโนมัติ เพื่อตอบสนองต่อปริมาณโหลดของเซิร์ฟเวอร์ที่แกว่งขึ้นๆลงๆได้ … ผมไม่ขอกล่าวถึง auto scaling มากนัก เพราะสักวันคงได้เขียนถึง auto scaling มากกว่านี้
  7. Amazon มี data center อยู่หลายแห่ง และ Amazon แบ่งเขต data center ออกเป็นโซนๆ (หรือ Availability Zone) ทำให้ลูกค้าเลือกได้ว่าจะโฮสต์เซิร์ฟเวอร์ไว้ที่โซนไหน และยังสามารถโฮสต์เซิร์ฟเวอร์หลายเครื่องสำหรับงานเดียวกันไว้ในหลายๆโซนได้ด้วย ซึ่งเป็นประโยชน์มากต่อการเพิ่ม availability ของระบบ (อันเป็นตัวรับประกันความอยู่รอดของระบบ) และยังทำให้เซิร์ฟเวอร์อยู่ใกล้กับกลุ่มเป้าหมายของเซิร์ฟเวอร์มากยิ่งขึ้นด้วย อันทำให้การเข้าถึงเซิร์ฟเวอร์รวดเร็วขึ้นไปด้วย ทั้งนี้ Amazon ยังแบ่งโซนต่างๆออกเป็นภูมิภาคหรือที่เรียกว่า region แต่ละ region ครอบคลุมหลายโซน ตอนนี้รวมแล้วมีทั้งหมด 4 region คือ US – N. Virginia (อเมริกาฝั่งตะวันออก), US – N. California (อเมริกาฝั่งตะวันตก), EU – Ireland (ฝั่งยุโรปที่ไอร์แลนด์), APAC – Singapore (ฝั่งเอเชียแปซิฟิกที่สิงคโปร์)
  8. เราสามารถเช่าเซิร์ฟเวอร์บน EC2 แบบติดสัญญาได้ เรียกว่า Reserved Instances ซึ่งเราจะได้ราคารายชั่วโมงที่ถูกกว่า On-Demand Instances  หากแต่เราต้องทำสัญญาเช่าเป็นรายปีหรือรายสามปี และต้องจ่ายค่าเช่า (หรือค่าจอง) เป็นเงินก้อนโตก้อนหนึ่งตอนทำสัญญา เช่น Small Instance ที่ US – N. Virginia มีราคาเช่าที่ 227.50 เหรียญสำหรับสัญญาหนึ่งปี และในหนึ่งปี ลูกค้าจะได้ส่วนลดค่ารันเซิร์ฟเวอร์ในราคาเพียง 0.03 เหรียญต่อชั่วโมง (เทียบกับราคาของ On-demand Instances อยู่ที่ 0.085 เหรียญ)
  9. นอกจาก On-demand Instances กับ Reserved Instances ทาง EC2 ยังมี Spot Instances ซึ่งเป็นการเช่าเซิร์ฟเวอร์ในราคาที่เปลี่ยนแปลงรวดเร็ว ราคานี้สามารถเปลี่ยนแปลงได้ทุกๆ 30 นาที  โดยปกติราคาของเซิร์ฟเวอร์ประเภทนี้จะถูกกว่า On-demand และ Reserved ทั้งนี้ ลูกค้าที่อยากเช่าเซิร์ฟเวอร์แบบ Spot Instances จะต้องแข่งขันเสนอราคากับลูกค้าท่านอื่นๆ และ Amazon จะพิจารณาราคาที่ลูกค้าทั้งหลายเสนอก็ต่อเมื่อ Amazon มีทรัพยากรเหลือพอที่จะให้เช่าในราคาที่ถูก จากนั้น Amazon จะเลือกราคาที่เหมาะสมที่สุด เช่น เป็นราคาที่ลูกค้าส่วนใหญ่ต้องการและเป็นราคาที่ Amazon พึงพอใจ เป็นต้น ตัวอย่างเช่น Small Instances ที่ US – N. Virginia มีราคาประมาณ 0.30 เหรียญต่อชั่วโมง (อาจแกว่งขึ้นลงจากนี้ได้)  ซึ่งสังเกตได้ว่าราคาไม่ต่างจาก Reserved Instances หากแต่ว่าลูกค้าไม่ต้องจ่ายสัญญาเช่าผูกมัดอย่างที่ต้องทำกับ Reserved Instances อย่างไรก็ดี Spot Instances ก็มีข้อจำกัด (อาจเป็นจุดด้อย) ตรงที่ว่า เซิร์ฟเวอร์ประเภทนี้สามารถถูก shut down โดย Amazon เมื่อไหร่ก็ได้ เพราะอย่าลืมว่า ราคาของ Spot Instances เปลี่ยนแปลงถี่มาก ถ้าหากลูกค้าเสนอราคาที่ต่ำกว่าราคาล่าสุด จะทำให้ Spot Instances หยุดตัวเองกระทันหัน ดังนั้น เพื่อรับประกัน availability ของระบบ ลูกค้าจำเป็นต้องเสนอราคาสูงเท่าที่จะจ่ายได้อย่างสม่ำเสมอ และควรมีระบบ backup ที่มีประสิทธิภาพในกรณีที่ราคาเสนอนั้นต่ำไป ผมขอแนะนำว่าไม่ควรรันระบบที่สำคัญกับ Spot Instances และควรอ่านคำแนะนำการใช้ Spot Instances ที่ Amazon ให้เข้าใจก่อนตัดสินซื้อ
  10. Amazon มีบริการ Amazon Virtual Private Cloud (VPC)  สำหรับเชื่อมบริการ EC2 และบริการอื่นๆของ Amazon เข้ากับ private cloud ขององค์กร (เช่น data center หรือ local network ขององค์กร) โดยเป็นการต่อเชื่อมผ่านทางเครือข่าย VPN (ไม่ฟรีนะ)
  11. EC2 มีบริการเสริมอื่นๆมากมาย (ส่วนใหญ่ไม่ฟรี) โดยลูกค้าสามารถเลือกฟีเจอร์ที่ต้องการเสริมให้กับเซิร์ฟเวอร์ตามแต่ต้องการได้  อาทิเช่น Amazon S3 สำหรับจัดเก็บข้อมูลออนไลน์, Amazon CloudFront สำหรับ CDN, Amazon SimpleDB และ RDS สำหรับฐานข้อมูล เป็นต้น
  12. คุณสามารถเอา image ของเซิร์ฟเวอร์เสมือนที่สร้างโดย VMware ไปโฮสต์บน EC2 ได้โดยวิธีที่เรียกว่า VM Import

เอาแค่นี้ก่อนแล้วกัน ถ้าคิดอะไรเพิ่มได้ ผมค่อยมาต่อเติมทีหลังนะ

โดยรวมผมอยากชี้ให้ท่านเห็นถึงสิ่งที่ EC2 จัดเตรียมไว้ให้ลูกค้า ต่อจากนั้น ถ้าท่านมีคำถามว่าจะใช้ EC2 ไปทำอะไรดี ผมก็ตอบได้เลยว่าเอาไปโฮสต์เซิร์ฟเวอร์ และถ้าท่านอยากได้ฟีเจอร์อะไรเพิ่มเติม ก็ลองพิจารณาสิ่งที่ผมเขียนไว้ด้านบน สำหรับท่านที่อยากหากรณีศึกษาว่า คนเขาเอา EC2 หรือบริการ Amazon Web Services ตัวอื่นๆไปทำอะไรกันบ้าง ท่านลองอ่านได้ที่ Amazon ครับ

ป.ล. ท่านใดคิดจะเอาบทความผมไปโพสต์ไว้ที่อื่น โปรดให้เครดิตด้วยว่าใครเป็นคนเขียน (เรียกผมว่า ศิวดล หรือ javaboom ก็ได้) และกรุณาใส่ link ต้นฉบับของบทความด้วยครับ … ผมเห็นคนที่คัดลอกไปแปะที่อื่นโดยไม่ให้เครดิต จนเหมือนเขาเป็นคนเขียนบทความนั้นเอง ผมอยากให้เขาเหล่านั้นเข้าใจด้วยว่า การไม่ให้เครดิต ถือว่าเป็นการขโมยอย่างหนึ่งครับ แม้ว่าการขโมยเช่นนี้ ผมจะไม่สามารถเอาผิดทางกฎหมายได้ก็ตามที

42 thoughts on “ใช้ EC2 ทำอะไรดี และมีอะไรใน EC2

  1. ดีใจที่วันนี้ค้นเจอข้อมูลนี้กำลังศึกษาพอดตั้งใจจะสอยมาใช้งานแต่ยังไม่ค่อยเข้าใจมากนักตอนนี้พอคลำทางไปได้บ้างแล้วล่ะ ขอบคุณมากสำหรับข้อมูลดีๆอย่าลืมมา upข้อมูลอีกนะคะจะรออ่านค่ะ

    • ไม่ได้มาตอบตั้งนาน เกือบจะค่อนปีแล้ว ต้องขอโทษด้วยครับ … จะพยายามอัพนะครับ🙂

  2. xeniz says:

    ไม่ทราบว่ามีขั้นตอนการสมัครและขั้นตอนการใช้งานมั๊ยค๊ะ

  3. Tikky says:

    สุดยอดเลยครับ อาจารย์ จะขึ้น present พรุ้งนี้แล้ว ยัง ทัน เยี่ยมจริงๆ บทความนี้ บางทีผมอาจต้องแนะนำ blog นี้ต่อๆไป

  4. ได้ความรู้มากเลยครับคุณ javaboom พึ่งรู้ว่า amazon มีบริการเจ๋งๆแบบนี้ด้วย

  5. ขอบคุณ บทความดีๆ ครับ
    กำลังศึกษา อยู่
    ผม บุกมารค์ บล็อกนี้ แล้ว
    แล้วผมจะแวะอ่านบ่อยๆ ครับ

    • ด้วยความยินดีครับ แล้วผมจะกลับมาอัพเดทบลอกอีกนะครับ🙂

  6. ขอบคุณสำหรับบทความนะคะ T^T เนื้อหาดีมากจริงๆ เข้าใจง่าย คนไม่รู้อะไรเลย(อย่างข้าพเจ้า) ศึกษาแล้วเข้าใจเป๊ะๆๆเลยค่าาา :)) ขอบพระคุณอย่างสูงยิ่งๆๆ

  7. ขอบคุณมากๆ เลยครับ ตอนนี้บริษัทมีแผนจะทำเว็บในระดับสเกลที่ใหญ่ขึ้นเลยกำลังมอง EC2 นี่แหละครับ แต่ยังไม่ค่อยเข้าใจ ได้บทความนี้ก็ช่วยได้เยอะเลยครับ ขอบคุณมากๆ ครับ

  8. paiboon says:

    ขอบคุณมากครับ สำหรับคนไม่เคยแตะต้อง aws มาก่อนมีประโยชน์มากๆ🙂

  9. aee says:

    หากทำ server บน EC2 บน Amazon ต้องทำอย่างไรบ้างค่ะ ตอนนี้มีแต่จดชื่ออย่างเดียว และอยากใช้ server ที่ EC2 โดยเวลาที่คนคีย์ ชื่อเว็บที่จดเข้าไปที่ server นี้ทำอย่างไรค่ะ ขอคำแนะำนำด้วยค่ะ หากต้องใช้ฐานข้อมูลเช่น postgres หรือใช้ภาษา perl ทำที่นี่ได้ไหมค่ะ สวัสดีปีใหม่ค่ะ ขอบคุณล่วงหน้าหากตอบ ส่งเมล์มารอคำตอบค่ะ

  10. ขอบคุณมากๆครับ กำลังหาบทความดีๆ อธิบายเกี่ยวกับ Amazon Cloud สำหรับผู้เริ่มต้นอยู่พอดีเลยครับ อ่านแล้วเข้าใจภาพรวมของ EC2 เพิ่มขึ้นได้ดีเลยทีเดียว ^^b

  11. ขอบคุณมากครับ มีประโยชน์มาก อยากลอง asia region ทาง amazon นี่แหละ แต่ยังงไม่ชัวร์เรื่องค่าใช้จ่ายว่าจะกี่บาทแน่

    ขอบคุณอีกครั้งครับ

  12. Numpol says:

    มีประโยชน์กับผู้ที่จะเริ่มใช้ AWS ครับ เยี่ยมจริง ๆ ครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s