19 Feb February 19, 2015 by atcreative in Blog, e-Commerce News ช่วงนี้มีเพื่อนๆมาขอให้ผมเขียนบทความเรื่องการติดตั้งและการประยุกต์ใช้ 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 จุดเด่นการโฮสต์เซิร์ฟเวอร์เสมือนสำหรับผู้ใช้ (ซึ่งเป็นลูกค้า) คือ ติดตั้งระบบปฎิบัติการ (OS) และ kernel ของ OS ที่ต้องการได้ ติดตั้งซอฟต์แวร์ที่ต้องการได้ เลือกสเปคของฮาร์ดแวร์ของเซิร์ฟเวอร์ได้ เช่น เลือกจำนวน CPU core, ขนาดแรม, และขนาดฮาร์ดดิสก์ได้ เป็นต้น ผู้ใช้ได้สิทธิ์เป็น root / admin / owner ในการจัดการเซิร์ฟเวอร์ เช่น จะติดตั้งและทำลายเซิร์ฟเวอร์เมื่อไหร่ก็ได้ และก็เป็นเหตุผลของจุดเด่นในข้อ 1. ถึง 3. ผู้ใช้สามารถติดตั้งเซิร์ฟเวอร์ตัวใหม่ได้ในเวลาสั้น(มากๆ) เช่น คุณสามารถติดตั้งเซิร์ฟเวอร์หนึ่งเครื่อง(หรือมากกว่านั้น)สำหรับรันเว็บและดาต้าเบสเซิร์ฟเวอร์ ได้ในเวลาไม่ถึง 10 นาทีหรือน้อยกว่านั้น เป็นต้น ปกติระยะเวลาในการบู๊ตเซิร์ฟเวอร์เสมือนเร็วกว่าเซิร์ฟเวอร์จริง ดังนั้น การบำรุงรักษาซอฟต์แวร์ของเซิร์ฟเวอร์เสมือนและการสร้างเซิร์ฟเวอร์เครื่องใหม่ขึ้นมาทำงานจึงทำได้อย่างรวดเร็วตามไปด้วย ราคาของเซิร์ฟเวอร์เสมือนคุ้มค่ากว่าเซิร์ฟเวอร์ของจริง ทั้งราคาเช่าเซิร์ฟเวอร์ที่ถูกกว่า อีกทั้งควบคุมงบได้ ใช้มากเท่าไหร่ก็จ่ายตามนั้น และไม่มีราคาบำรุงรักษาฮาร์ดแวร์ (และก็ไม่ต้องกังวลเรื่องค่าไฟและค่าแอร์) โพสต์แนะนำ – (update – August 17, 2012) สำหรับท่านที่สนใจตัวอย่างง่ายๆของการใช้ EC2 คือ ผมใช้ EC2 สำหรับงานวิจัย แต่ก็ไม่ได้ใช้ฟีเจอร์เต็มที่ หากแต่สนองความต้องการเบื้องต้นและแก้ไขปัญหาที่ผมเผชิญกับการใช้คอมพิวเตอร์ที่ออฟฟิศได้มากทีเดียว อ่านตัวอย่างนี้ได้ที่ เช่าคอมแรม 68 กิ๊กบน EC2 มาทำวิจัย มีอะไรใน EC2 เรามาดูกันว่ามีอะไรบ้างในบริการ Amazon EC2 ผมขอสรุปเป็นข้อๆเท่าที่ผมพอจะนึกได้ 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 ว่ามันไม่ใช่เรื่องง่ายในการจัดสรรทรัพยากรคอมพิวเตอร์หากลูกค้าออกแบบเซิร์ฟเวอร์ได้ตามใจ ค่าเช่าเซิร์ฟเวอร์ของ 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 เหรียญ ราคาค่าเช่าเซิร์ฟเวอร์ที่สมเหตุสมผล … จุดนี้ผมไม่ต้องการบอกว่า EC2 มันถูก เพราะถูกหรือแพงนั้นขึ้นกับลักษณะของระบบและต้องอาศัยการวิเคราะห์ เช่น cost-benefit analysis รวมถึงศาสตร์อื่นๆอย่าง risk analysis ร่วมด้วย เป็นต้น ราคาค่าเช่าการประมวลผลของ EC2 เริ่มต้นที่ 0.02 เหรียญต่อชั่วโมง (ประมาณ 60 สตางค์ต่อชั่วโมง หรือ 430 บาทต่อเดือน) อย่างไรก็ดี การคำนวณค่าใช้จ่ายจริงของ EC2 ต้องคิดค่าเช่าพื้นที่จัดเก็บข้อมูล ปริมาณการใช้เครือข่าย และบริการเสริมอื่นๆด้วย ผู้ใช้สามารถเพิ่มขนาดฮาร์ดดิสก์และจำนวนฮาร์ดดิสก์ให้กับเซิร์ฟเวอร์เสมือนได้ โดยฮาร์ดดิสก์ดังกล่าวเป็นฮาร์ดดิสก์เสมือนที่เรียกว่า Elastic Block Storage (EBS) ลูกค้าสามารถเลือกฮาร์ดดิสก์ EBS ขนาด 1 GB ถึง 1 TB ต่อก้อนได้ และมีราคาอยู่ที่ 0.10 เหรียญต่อ 1 GB ต่อเดือน นอกจากนี้ มีค่าใช้จ่ายในการเข้าถึงฮาร์ดดิสก์ด้วย อยู่ที่ 0.10 เหรียญต่อคำสั่ง I/O หนึ่งล้านคำสั่ง นั่นหมายความว่า ถ้าเราใช้ฮาร์ดดิสก์บ่อยมาก เราก็ต้องจ่ายมากไปด้วย ผู้ใช้สามารถสร้างกลุ่มของเซิร์ฟเวอร์เสมือน (หรือคลัสเตอร์) เพื่อใช้ในการประมวลผลแอพพลิเคชันชนิดเดียวกันเพื่อรองรับโหลดงานที่มีจำนวนมากได้ อีกทั้ง EC2 จัดเตรียม load balancer ชื่อ Elastic Load Balancing สำหรับแบ่งเบาภาระระหว่างเซิร์ฟเวอร์ (แต่ไม่ฟรี) ผู้ใช้สามารถเลือก load balancer เจ้าอื่นๆมาใช้ก็ได้ Auto scaling เป็นบริการฟรีใน EC2 เป็นบริการเติมเต็มคุณสมบัติ elasticity และ on-demand ซึ่งเป็นคุณสมบัติหลักของ cloud computing โดย auto scaling ทำให้ลูกค้าสามารถเพิ่มหรือลดจำนวนเซิร์ฟเวอร์ได้อย่างอัตโนมัติ เพื่อตอบสนองต่อปริมาณโหลดของเซิร์ฟเวอร์ที่แกว่งขึ้นๆลงๆได้ … ผมไม่ขอกล่าวถึง auto scaling มากนัก เพราะสักวันคงได้เขียนถึง auto scaling มากกว่านี้ Amazon มี data center อยู่หลายแห่ง และ Amazon แบ่งเขต data center ออกเป็นโซนๆ (หรือ Availability Zone) ทำให้ลูกค้าเลือกได้ว่าจะโฮสต์เซิร์ฟเวอร์ไว้ที่โซนไหน และยังสามารถโฮสต์เซิร์ฟเวอร์หลายเครื่องสำหรับงานเดียวกันไว้ในหลายๆโซนได้ด้วย ซึ่งเป็นประโยชน์มากต่อการเพิ่ม availability ของระบบ (อันเป็นตัวรับประกันความอยู่รอดของระบบ) และยังทำให้เซิร์ฟเวอร์อยู่ใกล้กับกลุ่มเป้าหมายของเซิร์ฟเวอร์มากยิ่งขึ้นด้วย อันทำให้การเข้าถึงเซิร์ฟเวอร์รวดเร็วขึ้นไปด้วย ทั้งนี้ Amazon ยังแบ่งโซนต่างๆออกเป็นภูมิภาคหรือที่เรียกว่า region แต่ละ region ครอบคลุมหลายโซน ตอนนี้รวมแล้วมีทั้งหมด 4 region คือ US – N. Virginia (อเมริกาฝั่งตะวันออก), US – N. California (อเมริกาฝั่งตะวันตก), EU – Ireland (ฝั่งยุโรปที่ไอร์แลนด์), APAC – Singapore (ฝั่งเอเชียแปซิฟิกที่สิงคโปร์) เราสามารถเช่าเซิร์ฟเวอร์บน EC2 แบบติดสัญญาได้ เรียกว่า Reserved Instances ซึ่งเราจะได้ราคารายชั่วโมงที่ถูกกว่า On-Demand Instances หากแต่เราต้องทำสัญญาเช่าเป็นรายปีหรือรายสามปี และต้องจ่ายค่าเช่า (หรือค่าจอง) เป็นเงินก้อนโตก้อนหนึ่งตอนทำสัญญา เช่น Small Instance ที่ US – N. Virginia มีราคาเช่าที่ 227.50 เหรียญสำหรับสัญญาหนึ่งปี และในหนึ่งปี ลูกค้าจะได้ส่วนลดค่ารันเซิร์ฟเวอร์ในราคาเพียง 0.03 เหรียญต่อชั่วโมง (เทียบกับราคาของ On-demand Instances อยู่ที่ 0.085 เหรียญ) นอกจาก 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 ให้เข้าใจก่อนตัดสินซื้อ Amazon มีบริการ Amazon Virtual Private Cloud (VPC) สำหรับเชื่อมบริการ EC2 และบริการอื่นๆของ Amazon เข้ากับ private cloud ขององค์กร (เช่น data center หรือ local network ขององค์กร) โดยเป็นการต่อเชื่อมผ่านทางเครือข่าย VPN (ไม่ฟรีนะ) EC2 มีบริการเสริมอื่นๆมากมาย (ส่วนใหญ่ไม่ฟรี) โดยลูกค้าสามารถเลือกฟีเจอร์ที่ต้องการเสริมให้กับเซิร์ฟเวอร์ตามแต่ต้องการได้ อาทิเช่น Amazon S3 สำหรับจัดเก็บข้อมูลออนไลน์, Amazon CloudFront สำหรับ CDN, Amazon SimpleDB และ RDS สำหรับฐานข้อมูล เป็นต้น คุณสามารถเอา image ของเซิร์ฟเวอร์เสมือนที่สร้างโดย VMware ไปโฮสต์บน EC2 ได้โดยวิธีที่เรียกว่า VM Import เอาแค่นี้ก่อนแล้วกัน ถ้าคิดอะไรเพิ่มได้ ผมค่อยมาต่อเติมทีหลังนะ จากบทความข้างต้นคุณผู้อ่านจะเห็นได้ว่า มีเนื้อหาที่ค่อนข้างซับซ้อนและยุ่งยากในการจัดการ คุณผู้อ่านอาจลองปรึกษาบริษัทที่รับทำเว็บไซต์ e-commerce หรือ เว็บไซต์ ขาย สินค้า ออนไลน์ เพื่อช่วยในการจัดการกับเรื่องเหล่านี้ก็ได้นะครับ ที่มา : javaboom.wordpress.com