กระแสของ Cloud Computing กำลังมาแรงมาก และทำให้บริษัทซอฟต์แวร์ต้องเริ่มปรับรูปแบบของซอฟต์แวร์ตัวเองจาก Product เป็น Service และเริ่มที่จะให้บริการเป็นแบบ SaaS (Software as a Service) แต่จริงๆแล้ว SaaS เป็นเพียง Business Model ของ Cloud Computing แต่ในแง่ทางด้านเทคนิคการพัฒนาซอฟต์แวร์ให้เป็น Cloud Application ไม่ใช่เป็นแค่การทำซอฟต์แวร์ตัวเองให้เป็น Web Application แล้วก็คิดค่าใช้จ่ายแบบ SaaS
ในทางเทคนิคการพัฒนาซอฟต์แวร์ขึ้น Cloud Platform จะมีจุดที่ต้องพิจารณาหลายด้านอาทิเช่น
- Reliability ระบบ Server จะต้องมีความน่าเชื่อถือ สามารถรองรับ SLA ทีเหมาะสมได้ ดังนั้นการทำ Web Application โดยไม่คำนึงถึง Hosting ที่เหมาะสม ไม่ใช่การทำ Cloud App ที่ถูกต้อง
- Redundancy ระบบ Cloud จะต้องระบบสำรองที่ดี (DR Site) ซึ่งโดยมากมักจะเป็นระบบที่ให้บริการและติดตั้งบน Data Center ขนาดใหญ่
- Elastic ระบบ Cloud Server จะต้องมีความยืดหยุ่น กล่าวคือเมื่อมีผู้ใช้มากระบบก็จะมีทรัพยากรเพียงพอ และสามารถที่จะทำ Virtualization และ Multi-Tenancy ได้
- Scalability : ประเด็นนี้จะเป็นเรื่องยากที่สุด เพราะการทำ Web Server หรือ Hosting เอง จะไม่สามารถรองรับผู้ใช้จำนวนมากได้ ลองคิดดูว่าถ้าผู้พัฒนาซอฟต์แวร์เปลี่ยนรูปแบบการคิดราคาเป็นแบบ SaaS แล้วมีผู้ใช้เข้ามาใช้จำนวนมาก แต่การออกระบบไม่ได้รองรับไว้ก็จะทำให้ระบบล่มได้
ดังนั้นการพัฒนาซอฟต์แวร์ขึ้น Cloud Platform ที่ดี จะต้องไปใช้บริการของ Cloud Provider ที่เป็น IaaS (Infrastructure as a Service) หรือ PaaS (Platform as a Service) อย่างเช่น Amazon EC2, Microsoft Azure, Google App Engine, Heroku, OpenShift, Force.com หรืออาจใช้ผู้บริการในประเทศอย่าง True IDC เป็นต้น
การพัฒนาซอฟต์แวร์ขึ้น Cloud โดยใช้บริการ IaaS และ PaaS จะมีความแตกต่างกันดังนี้
- การพัฒนาซอฟต์แวร์โดยใช้ IaaS ผู้พัฒนาจะต้องบริหารจัดการหลายๆอย่างเองหมด อาทิเช่น การติดตั้ง Web Server และ Database Server, การทำ Load Balance, การบริหารจัดการ VMware หรือ DBMS และ การพัฒนา Application ดังรูป

- การพัฒนาบน PaaS นักพัฒนาซอฟต์แวร์จะสามารถที่จะมุ่งเป้าไปที่การพัฒนาและติดตั้ง Application ได้อย่างเดียว โดยการทำงานและบริหารระบบอื่นๆทาง Cloud Provider จะเป็นผู้ดำเนินการให้ดังรูป

แต่การพัฒนาบน PaaS ก็จะมีข้อจำกัดตามที่ Cloud Provider กำหนดเช่น ภาษาที่ใช้ หรือการกำหนด Web Server หรือ Database Server ข้อสำคัญในปัจจุบันเรายังไม่มีผู้ให้บริการ PaaS ภายในประเทศจึงยังต้องพึี่งการให้บริการจากต่างประเทศ ก็อาจมีปัญหาเรื่องของการสื่อสารและการชำระเงิน
สำหรับนักพัฒนาซอฟต์แวร์ที่สนใจการพัฒนา Cloud Application ก็สามารถที่จะเลือก Platform ต่างๆได้ดังนี้
- Amazon Web Services (AWS) : เป็น IaaS ที่น่าสนใจเพราะผู้พัฒนาสามารถที่จะติดตั้ง Middleware ต่างๆได้ และทดลองใช้งานได้ฟรี จึงเหมาะกับนักพัฒนาที่ใช้ภาษาต่างๆเช่น PHP, Java, Python ที่ต้องการความคล่องตัว
- Microsoft Azure: เป็นทั้ง IaaS และ PaaS จึงทำให้นักพัฒนาสามารถที่จะพัฒนาโปรแกรมทั้งภาษาที่เป็นของ Microsoft หรือภาษาอื่นๆเช่น PHP หรือ Java ก็้ได้ แต่อยากจะแนะนำให้พัฒนาด้วย .NET และใช้ Tool อย่าง Visual Studio จะง่ายกว่า (ซึ่งถ้าสนใจศึกษาเพิ่มเติม ทาง IMC Institute ได้เปิด Course อบรม Windows Azure for .NET Quick Start)
- Google App Engine: เป็น PaaS ที่ทำงานบน Infrastructure ของ Google ที่นักพัฒนาสามารถเลือกใช้ภาษาอย่าง Java หรือ Python มาพัฒนาได้ โดยสามารถจะเลือกใช้ฐานข้อมูลที่เป็น BigTable ของ Google หรือ MySQL หรือแม้แต่จะเชื่อมต่อกับ Database ของตัวเองก็ได้ (ซึ่งถ้าสนใจศึกษาเพิ่มเติม ทาง IMC Institute ได้เปิด Slideshare ให้ Download เอกสารการบรรยายและแบบฝึกหัดภาษาไทยให้ทดลองทำ และยังมี Course อบรม Google App Engine for Java Developers )
- OpenShift: เป็น PaaS ของ RedHat ที่นักพัฒนาสามารถจะเลือกพัฒนา Application โดยใช้ภาษาอย่าง Java, Ruby, Node.JS, Python, PHP และ Perl โดยรันบน JBoss Server ซึ่งเมื่อ 2012 OpenShift ได้รับเลือกเป็น PaaS ที่ดีที่สุด
- Heroku: เป็น PaaS อีกอันหนึ่งที่สามารถใช้ภาษาที่หลากหลายในการพัฒนาได้อาทิเช่น Ruby, Node.js, Clojure, Java, Python, and Scala ซึ่ง Cloud Platform นี้ได้ถูกซื้อไปโดย Salesforce (ซึ่งถ้าสนใจศึกษาเพิ่มเติม ทาง IMC Institute ได้เปิด Course อบรมการพัฒนา Java Web Application เป็นมีตัวอย่างการพัฒนา App ขึ้น Heroku ใน course Java Web Programming Using Cloud Platform)
- Force.com : เป็น PaaS รายแรก ที่ใช้ Platform ของ SalesForce เหมาะสำหรับนักพัฒนาที่ต้องการพัฒนาระบบ CRM หรือ ERP อย่างรวดซึ่งผู้พัฒนาสามารถนำ App ที่พัฒนาขึ้นไปขายใน AppExchange ของ SalesForce ได้ (ทาง IMC Institute จะเปิดการอบรม Training of The Month ในเดือนเมษายน เพื่อให้ผู้สนใจการพัฒนา Force.com เป็นพิเศษ)
ดร.ธนชาติ นุ่มนนท์
5 thoughts on “การพัฒนาซอฟต์แวร์ขึ้น Cloud Platform โดยใช้ PaaS/IaaS”