วันนี้อยากมาเล่าเรื่องการใช้ Virtual Server บน Cloud Platform ของ Provider ต่างๆทั้งผู้ให้บริการภายในและต่างประเทศ จากประสบการณ์ที่ผมเคยเล่นมาหลายๆรายแล้วอยากเปรียบเทียบกันเพื่อให้เราได้พิจารณาว่าบริการเฉพาะส่วน Virtual Server แต่ละรายเป็นอย่างไร โดยจะไม่เน้นถึงบริการอื่นๆมากนัก
คงเป็นรายที่ผมคุ้นเคยที่สุดเพราะผมใช้ Services ต่างๆของเขาค่อนข้างเยอะ ทั้ง Storage (S3), Database (RDS), Identity management (IaM), NoSQL (Dynamo DB), Hadoop (EMR) หรือ Application container (Beanstalk) และเมื่อกล่าวถึง Virtual Server คงนึกถึงบริการที่ชื่อ EC2 (Elastic Cloud Computing) ซึ่งให้เราสามารถสร้าง instance ได้ตั้งแต่ขนาดเล็กอย่าง t2.micro (1 vCPU, 1 GB Memory) ไปจนถึงขนาดใหญ่มากๆอย่าง d2.8xlarge (36 vCPU, 244 GB Memory, 24 x 2000 SSD) ซึ่งโดยปกติถ้าเราจะเลือกหา Virtual Server สำหรับทำ Database ขนาดกลางหรือทำ Web App เราอาจเลือกเครื่องกลุ่ม M3 ที่มีขนาดตั้งแต่ 1 vCPU ไปจนถึง 8 vCPU แต่ถ้าต้องการหาเครื่องสำหรับการทำ Development ก็อาจเลือกกลุ่ม T2
AWS จะมี instance ให้เราเลือกได้หลายแบบและสามารถที่จะเลือก OS ได้ทั้งที่เป็น Linux และ Windows ซึ่งราคาค่าบริการก็จะแตกต่างกันตามชนืดของ OS หรือ Location ของ Server เช่นการใช้ Cloud Server ที่ Singapore จะมีราคาสูงกว่าที่ Oregon นอกจากนี้ AWS ยังมี marketplace ในกรณีที่ผู้ใช้ต้องการ Server ที่ลง Middleware มาพร้อมเช่น Oracle Database, SAP, Peoplesoft, หรือ Tomcat โดยค่าบริการก็จะรวมค่า License ของซอฟต์แวร์เหล่านี้ไปแล้ว
AWS จะมี instance ให้เลือกสามแบบคือ instance ปกติ ที่ราคาคิดเป็นรายชั่วโมง, reserve instance ที่เหมาะกับการใช้ระยะยาวเป็นปีที่อาจจ่ายเป็นรายเดือน และ spot instance ที่ราคาสามารถประมูลราคาได้แต่ไม่รับประกันว่าจะได้ virtual server ตามราคาที่ต้องการหรือไม่ ซึ่งหากไม่มี server ในราคาที่ต้องการก็อาจทำให้ระบบล่มลงไปได้ เพื่อให้เห็นราคาการใช้งานของ EC2 ขอยกตัวอย่างราคาเครื่องที่ Oregon ที่เป็น Linux ดังรูปที่ 1
รูปที่ 1 ราคาการใช้งานเครื่องของกลุ่ม T2 และ M3 ที่ Oregon
โดยปกติการทำ Auto-scaling ของ Cloud Server จะเป็นลักษณะของ Horizontal scaling กล่าวคือเป็นการเพิ่มเครื่องขึ้นมาและต้องใช้บริการอย่าง Load Balancer และระบบ Cloud Watch ที่ช่วยตรวจสอบโหลดการใช้งานของเครื่องแล้วสามารถเพิ่มเครื่องโดยอัตโนมัติ แต่ถ้าจะเปลี่ยนให้เครื่องมีขนาดใหญ่ขึ้นที่เป็น Vertical Scaling เราก็จะทำการย้าย Image ของเครื่องเก่าไปสู่ instnace ที่จะสร้างขึ้นมาใหม่ ซึ่ง AWS จะมี feature ต่างๆรองรับการทำงานนี้ได้เป็นอย่างดี และสามารถจะจัดการเรื่อง security policy การปิดเปิด port ต่างๆของ virtual server ได้โดยง่าย
อนึ่งแม้ AWS จะระบุว่ามี Free Trial เป็นเวลาหนึ่งปี แต่ก็จะจำกัดไว้แค่เครื่องขนาดเล็กกลุ่ม T2 และไม่ได้ครอบคลุมทุกบริการ ผู้ทดลองใช้ต้องมีความระมัดระวังในการใช้งานอย่าทดลองเล่นบริการอื่นๆที่ไม่ได้อนุญาตให้ใช้ฟรี มิฉะนั้นจะตามมาด้วยค่าใช้จ่ายที่สูงมาก
Google มีบริการ IaaS ที่ให้เราสามารถใช้ Infrastructure ของเขาในการสร้าง Virtual Server ได้โดยบริการนี้ชื่อว่า Google Compute Engine ภายใต้ Google Cloud Platform โดยจะมี Feature คล้ายกับ EC2 ของ AWS ที่ให้เราสามารถสร้าง Virtual Server ที่เป็น Linux หรือ Windows ก็ได้ และก็มีเครื่องหลายขนาดให้เรา ตาม Location ต่างๆ แต่การคิดราคาจะดีกว่าของ AWS จะสามารถคิดการใช้งานเป็นทุกสิบนาทีแทนที่จะเป็นรายชั่วโมง โดยตัวอย่างของราคาการใช้เครื่อง Linux ที่ US จะเป็นดังรูปที่ 2
รูปที่ 2 ราคาการใช้งานเครื่อง Standard ของ Google ที่ US
Google Compute Engine จะมี Feature ในก่ารทำ Auto-scaling และสามารถที่จะเก็บ image และย้ายไปยัง instance ใหม่เพื่อทำ vertical scaling ได้เหมือน AWS แต่ Feature ในการใช้งานอาจจะสู้ของ AWS ไม่ได้มากนัก และก็มี Marketplace อยู่จำนวนหนึ่งดังตัวอย่างในรูปที่ 3 ที่อาจไม่หลากหลายเท่า AWS
รูปที่ 3 ตัวอย่าง Marketplace ของ Google Compute Engine
จุดเด่นอีกด้านของการใช้ Google Cloud Platform คือมี Free Trial ให้ทดลองใช้ $300 จำนวน 60 วันที่สามารถทดลองใช้ได้เกือบทุกบริการ ซึ่งแตกต่างจาก AWS ที่จำกัดบริการในการทดลองใช้ฟรี และไม่ต้องห่วงว่าจะถูกเก็บเงินมายังบัตรเครดิต เพราะเราต้องทำการเปลี่ยนสถานะจาก Free Trial ก่อนถึงจะถูกเก็บเงินจากการใช้บริการนอกเหนือจากการทดลองใช้ฟรี
เมื่อพูดถึง Microsoft Cloud หลายๆคนอาจคิดว่า IaaS หรือ PaaS ของ Microsoft น่าจะผูกติดกับ Windows, ASP.NET, SQL Server หรือ middleware ต่างๆของ Microsoft แต่วันนี้ Microsoft เปลี่ยนไปแล้วเมื่อเข้าสู่ยุคของ Cloud ที่ต้องใช้ระบบที่หลากหลาย เราสามารถที่จะใช้ Microsoft Azure สร้าง virtual server ที่รัน OS ต่างๆที่เป็น Linux ได้นอกเหนือจาก Windows ผมเองเคยใช้ VM ของ Azure ที่เป็น ubuntu และใช้ remote login เข้ามาใช้งานเหมือน AWS
Virtual server ของ Azure ก็มี features ในการเก็บ image หรือทำ scaling คล้ายๆกับ AWS และมี marketplace เพื่อติดตั้งซอฟต์แวร์ต่างๆดังตัวอย่างในรูปที่ 4 จุดเด่นการใช้ Azure อาจไม่ได้อยู่ที่การใช้ virtual server ที่อาจมีฟังก์ชั่นไม่เด่นเท่า AWS แต่ Azure จะมีบริการเด่นๆอีกหลายที่เหมาะกับการทำ PaaS อาทิเช่น Web Service, App Services, SQL Service หรือ HDinsight รวมถึงบริการการทำ Analytics อย่าง Machine Learning สำหรับตัวอย่างการคิดราคาของ Linux server ของ Azure ที่อยู่ใน Central-US จะเป็นดังรูปที่ 5
รูปที่ 4 ตัวอย่าง Marketplace ของ Microsoft Azure
ผู้ใช้สามารถทดลองใช้บริการฟรีของ Azure ได้มูลค่า $200 ในหนึ่งเดือน และสามารถที่ใช้บริการเกือบทุกบริการคล้ายๆกับ Google Cloud Platform
รูปที่ 5 ราคาการใช้งานเครื่องของ Azure ที่ US-central
Cloud Provider ในประเทศไทย
ผมเองเคยใช้บริการเปิด Virtual Server ของผู้ให้บริการ Cloud ในประเทศอยู่สองรายคือของ iNET และ True IDC จุดเด่นก็คือ Latency ที่ค่อนข้างต่ำเนื่องจาก Server อยู่ในประเทศ และข้อมูลก็จะอยู่ในประเทศซึ่งก็อาจจะเหมาะกับองค์กรที่ต้องการเน้นเรื่องความเร็วและต้องปฎิบัติตามกฎระเบียบที่อาจห้ามเก็บข้อมูลไว้นอกประเทศ และอีกอย่างที่น่าสนใจคือการบริการที่ค่อนข้างจะรวดเร็วและสามารถติดต่อได้ตลอดเวลา เมื่อเทียบกับ Cloud Provider ต่างประเทศที่ต้องเหมาะกับผู้เชี่ยวชาญที่สามารถศึกษาด้วยตนเอง นอกจากนี้ผู้ให้บริการอย่าง True IDC ยังมี Free Trial ให้เราทดลองใช้ได้ 30 วัน โดยสามารถเข้าไปทดลองได้ที่ http://public.truecloudservice.com:18881/freetrial/
แต่การเปิดใช้บริการ Server ในประเทศค่อนข้างจะยุ่งยากต้องการเอกสารมากมาย อาจเป็นเพราะเป็นกฎระเบียบที่มาจากภาครัฐ ซึ่งแตกต่างกับ Cloud Provider ต่างประเทศรายใหญ่อย่าง AWS, Google หรือ Microsoft ที่มีเพียงบัตรเครดิตก็เปืดได้แล้ว นอกจากนี้การปรับเปลี่ยนการใช้งาน Virtual Server ต่างๆยังไม่สามารถทำได้โดยง่าย เช่นการปรับ Security policy การเปลี่ยน OS ซึ่งการทำ server provisioning ยังไม่ค่อยเป็นแบบอัตโนมัติเท่าไร คงไม่ต้องพูดถึงเรื่อง Auto-scaling ที่คงไม่สามารถทำได้เองโดยง่าย และไม่มี marketplace แบบต่างประเทศ นอกจากนี้ราคาอาจค่อนข้างสูงกว่า Cloud ของต่างประเทศพอควร อีกอย่างอาจไม่เหมาะที่จะใช่ในการตืดตั้ง Middleware บางอย่าง เคยติดต่อ Cloud Provider ในประเทศบางรายว่าจะใช้ SQL Server ปรากฎว่าผู้ใช้ต้องซื้อ License เองและคิดมารวมในค่าบริการ ซึ่งต่างกับของต่างประเทศที่เป็นการเช่าใช้ ตัวอย่างของราคา Cloud สำหรับ True IDC เป็นดังรูปที่ 6
รูปที่ 6 ราคาการใช้บริการ Cloud ของ True IDC
แนวทางการเลือก Cloud Virtual Server
ในมุมมองของผมตอนพัฒนาและทดสอบต่างๆ ที่ต้องการความรวดเร็วในการติดตั้งซอฟต์แวร์หรือ middleware ต่าง การต้อง provisioning หรือ de-provisioning server บ่อยๆควรจะเลือกใช้ Cloud ต่างประเทศอย่างของ AWS หรือ Azure แต่ถ้าต้องการทดลองใช้งานที่ไม่ต้องการ feature เยอะก็ค่อยมาใช้ระบบของ Google
หลักจากอยู่ในขั้น Development และ Testing แล้ว หากต้องการทำ Production Server ที่ต้องติดตั้งระยะยาว ไม่เปลี่ยนระบบบ่อยๆ ผมอาจแนะนำให้มาใช้ระบบในประเทศอย่างของ iNET หรือ True IDC เพราะตอนนั้นเราจะทราบ configuration ที่แน่นอนแล้ว และอาจต้องการเครื่องที่อยู่ประเทศซึ่งจะลดปัญหาเรื่อง Latency และเราอาจต้องการระบบ support ทีดี
แต่ถ้าคำนึงถึงเรื่องราคาหรือผู้ใช้ส่วนใหญ่อยู่ต่างประเทศเราก็อาจต้องขึ้น Production โดยใช้ Cloud Provider ของต่างประเทศ และถ้าต้องการระบบที่มี Auto-scaling ที่ดีอาจต้องใช้บริการของต่างประเทศที่สามารถทำได้เองโดยง่าย หรือติดต่อกับ Provider ในประเทศเพื่อช่วยจัดทำให้
ธนชาติ นุ่มนนท์
IMC Institute
Orkut Designer Blog – Discover Adjustments, apis and occasions associated with the Orkut designer platform.
Open Source Blog site – Open up source at Google with information regarding Google’s open source jobs as well as programs.