ผู้ผลิตซอฟต์แวร์ในปัจจุบันจำนวนมากต่างก็พยายามบอกว่า ซอฟต์แวร์ของตัวเองเป็น Cloud และให้บริการบน Cloud แล้ว พอถามไปถามมาบางทีก็เป็นเพียงแค่ Web Application รันอยู่บน Server ของบริษัท บางรายก็แค่เปลี่ยนรูปแบบการคิดราคาซอฟต์แวร์จากการขาย License เป็นการเช่าแบบ Subscription ที่จ่ายเป็นรายปี แต่รูปแบบ Architecture ของซอฟต์แวร์ยังเป็นแบบเดิม ซึ่งจากที่พบมาซอฟต์แวร์ส่วนใหญ่มักจะไม่ใช่ซอฟต์แวร์บน Cloud ที่เป็น SaaS อย่างแท้จริง
SaaS (Software as a Service) คือหนึ่งในสามรูปแบบของการให้บริการบน Cloud (อีกสองบริการคือ IaaS และ PaaS) หลักการของ Cloud ส่วนหนึ่งคือ On-Demand และ Resource Pooling ซึ่งซอฟต์แวร์แบบเดิมที่เป็น Client/Servcer Architecture หรือ Web Architecture มักจะไม่ได้ออกแบบมาในลักษณะแบบนี้ การทำซอฟต์แวร์แบบ SaaS ที่สำคัญที่สุดเรื่องหนึ่งคือการมีคุณสมบัติ Multi-Tenant ซึ่งจะช่วยในเรื่องของการทำ Demand Poolingโดย SaaS ที่แท้จริง (true-SaaS) จะต้องให้ผู้ใช้สามารถทำ configuration สำหรับใช้ซอฟต์แวร์ที่ต่างกันได้ แต่ฟังก์ชั่นของซอฟต์แวร์จะต้องเหมือนกันสำหรับผู้ใช้ทุกคน แต่ผู้ใช้แต่ละรายมีที่เก็บข้อมูลที่ต่างกัน การมี configuration ที่แตกต่างกัน ไม่ได้หมายความว่าผู้ใช้แต่ละรายจะสามารถปรับซอฟต์แวร์ (customization) ให้มีฟังก์ชั่นต่างกัน ข้อสำคัญอีกอย่าง true-SaaS จะทำงานอยู่บนกลุ่มของ Instance ชุดเดียวกัน ไม่ใช่แยก Instance ในแต่ละผู้ใช้ ซึ่งการมีสถาปัตยกรรมแบบ Multi-Tenant on same instance group จะทำให้ง่ายต่อการขยายระบบ (scalability) และทำให้เกิด Economy of Scale
ดังนั้นการพัฒนาซอฟต์แวร์เดิมขึ้น Cloud จึงจำเป็นต้องมีการปรับปรุงโปรแกรมเดิมหรือเรียกว่า Re-engineering เพื่อให้รองรับการทำ Multi-tenant ซึ่งนักพัฒนาซอฟต์แวร์จำนวนมากก็จะเลือกที่จะใช้ PaaS (Platform as a Sevice) อย่างบริการของ Microsoft Azure, IBM Bluemix, Google App Engine, Heroku หรือ Openshift เพราะ PaaS จะช่วยทำให้การพัฒนา SaaS เป็นไปได้โดยง่าย เมื่อเทียบกับการใช้ IaaS (Infastructure as a Sevice) หรือการใช้ Private Cloud ของตัวเองที่จะต้องไปหาวิธีจัดการซอฟต์แวร์ให้รองรับ Multi-tenant
แต่เนื่องจากการปรับซอฟต์แวร์เป็นเรื่องยากบริษัทซอฟต์แวร์ที่มีซอฟต์แวร์แบบ Client/Server หรือ Web Architecture จึงเลือกที่จะย้ายซอฟต์แวร์ตัวเองไปรันบน IaaS ทีมีผู้ให้บริการอย่าง Amazon Web Services, Window Azure, IBM SoftLayer หริอ Digital Ocean ที่คิดค่าบริการแบบ Pay-as-you-go ซึ่งผู้ให้บริการเหล่านี้มักจะมีบริการพร้อมที่จะรองรับการติดตั้งซอฟต์แวร์ที่มีสถาปัตยกรรมเป็น Client/Server และสามารถทำงานแบบ Auto-scale ได้ แต่ลักษณะการติดตั้งของบริษัทจะเป็นในรูปแบบที่ลูกค้าที่จะใช้ซอฟต์แวร์แต่ละรายจะมี instance ที่ต่างกันถ้าบางรายใช้งานเยอะก็อาจจะมีหลาย Instance ระบบแบบนี้จะเป็น Multi-instance มากกว่าที่จะเป็น Multi-tenant ทำให้การขยายซอฟต์แวร์เป็นไปได้ยาก และบริษัทซอฟต์แวร์จะต้องใช้บริการของผู้ให้บริการ IaaS รายใหญ่ๆเท่านั้นเพราะจะต้องสามารถรองรับ Instance จำนวนมากที่แปรผันตามจำนวนผู้ใช้ได้ เราเรียกการบริการแบบนี้ว่า SoSaaS (Same old Software, as a Service) ซึ่งแน่นอนราคาของ SoSaaS ถึงได้สูงกว่า true SaaS เพราะบริษัทซอฟต์แวร์ต้องมีต้นทุนการเช่า instance ที่สูงกว่า (ระบบ Multi-tenant อาจมีผู้ใช้ 1,000 รายที่รันบน 100 instance แต่ระบบ SoSaaS จะต้องมีอย่างน้อย 1,000 instance สำหรับผู้ใช้ 1,000 ราย)
SoSaaS ก็มีข้อดีในการที่ทำให้ซอฟต์แวร์แบบเก่าสามารถขึ้นมาให้บริการบน Cloud ได้ ซึ่งถ้าพิจารณากันจริงๆแล้ว ระบบนี้เป็นแบบ Managed Hosting มากกว่า SaaS แต่ก็มีข้อดีรายประการเช่น
- ผู้ใช้สามารถที่จะใช้ Application เดิมได้โดยไม่ต้องมาเรียนรู้ Application ใหม่
- บริษัทซอฟต์แวร์สามารถที่จะย้ายซอฟต์แวร์ขึ้น Cloud ได้โดยไม่ต้องเรียนรู้ทักษะการพัฒนาโปรแกรมใหม่ เป็นเพียงการติดตั้ง Middleware และ Software เดิมบน IaaS
- ผู้ใช้สามารถเลือกที่จะให้ผู้ให้บริการปรับซอฟต์แวร์ (customization) ตามความต้องการได้
- ระบบเสมือนเป็นแบบ on-premise ที่ผู้ให้บริการสามารถที่จะบริหารจัดการเสมือนติดตั้ง server บนระบบ DataCenter ของตัวเองได้
- ผู้ใช้สามารถจะวางแผนการ Upgrade ซอฟต์แวร์เองได้ ซึ่งต่างกับการ upgrade ซอฟต์แวร์ SaaS ที่ผู้ให้บริการจะต้อง Upgrade ให้ผู้ใช้ทุกคนพร้อมๆกันเพราะเป็นระบบแบบ Multi-tenant
- การบริหารระบบความปลอดภัยจะดีกว่าแบบ SaaS ที่ผู้ใช้รายจะใช้กลุ่มของ Instance ชุดเดียวกัน
แต่ SoSaaS ก็มีข้อด้อยหลายประการเมื่อเทียบกับ true SaaS อาทิเช่น
- ต้นทุนของผู้ให้บริการจะสูงกว่ามาก
- การขยายระบบเป็นไปได้ยาก เพราะต้องขยายให้กับลูกค้าแต่ละราย ยกเว้นจะมีระบบ Auto-Scaling แต่ก็จะเพียงการเพิ่มหรือลด instance ตามที่ผู้ใช้กำหนด ซึ่งยังไม่ยิดหยุ่นแบบ true SaaS ที่ผู้ใช้รายๆหลายอาจใช้ instance แต่ละตัวร้วมกัน
- การบำรุงรักษายากกว่ามากเพราะบริษัทซอฟต์แวร์จะต้องมาดูแยกดูแลลูกค้าแต่ละรายแยกตาม instance)
จากที่กล่าวมาทั้งหมดผู้ที่จะใช้บริการ SaaS คงต้องตรวจสอบให้ดีว่าให้ว่า SaaS ที่จะเรียกใช้เป็นซอฟต์แวร์แบบใด true-SaaS หรือ SoSaaS ถ้าเป็น SoSaaS ก็คงต้องถามต่อว่าแล้ว Server ใช้บริการของ IaaS ที่ใด ถ้าบอกว่าติดตั้งเอง ฟันธงนะตรงนี้ได้เลยครับว่าระบบแบบนั้นขยายไม่ได้ ไม่สามารถรองรับลูกค้าจำนวนมากได้ เว้นเสียแต่ว่าบริษัทจะต้องลงทุนค่า Infrastructure มหาศาล
ธนชาติ นุ่มนนท์
IMC Institute
One thought on “SoSaaS (Same old Software, as a Service) บริการซอฟต์แวร์บน Cloud แบบเดิมๆ ที่เราเข้าใจผิดว่าคือ true SaaS”