เจาะลึกเทคโนโลยี Storage Virtualization สำหรับ Cloud Application (ตอนที่ 1)
ในเวลานี้ คำว่า Cloud ได้กลายมาเป็นหนึ่งในคำมาตรฐานสำหรับวงการไอทีบ้านเราไปแล้ว วันนี้เราจะมาดูกันครับ ว่าคุณสมบัติของ Storage ที่เหมาะสมจะนำมาใช้ในระบบ Cloud Application ต่างๆ จะมีอะไรกันบ้าง
หัวใจของคำว่า Cloud
คำว่า Cloud หรือที่บางครั้งมักจะถูกเรียกเป็นภาษาไทยว่า กลุ่มเมฆ นั้น จริงๆ แล้วไม่ใช่คำที่เกิดมาจากทาง Technology แต่เกิดมาจากการตลาดเสียมากกว่า โดยในความหมายรวมๆ นั้น ไม่ว่าจะนำคำว่า Cloud ไปใช้กับอะไรก็ตาม มักจะหมายถึง ”การที่เทคโนโลยีนั้นๆ สามารถเพิ่มขยายได้แบบทันทีและง่ายดาย เพื่อรองรับต่อการปริมาณความต้องการใช้งานที่เพิ่มมากขึ้น” ยกตัวอย่างเช่น Cloud Application ก็จะหมายถึง “Application ที่สามารถขยายระบบเพื่อรองรับปริมาณผู้ใช้งานที่เพิ่มมากขึ้น” ดังนั้นเราจึงสามารถกล่าวได้ว่า หัวใจของคำว่า Cloud ก็คือ “มีความสามารถในการขยายได้อย่างง่ายดาย” นั่นเอง
Storage สำหรับ Cloud Application
เมื่อเรารู้แล้วว่าหัวใจของคำว่า Cloud คืออะไร และ Cloud Application คืออะไร คราวนี้เรามาลองดูกันบ้าง ว่าในเทคโนโลยีทางด้านการจัดเก็บข้อมูลต่างๆ ไม่ว่าจะเป็น Storage หรือ Database ก็ตาม จะมีทางเลือกไหนที่สามารถตอบโจทย์ของคำว่า Cloud ได้บ้าง
1. Scale-Up and Scale-Out SAN Storage
สำหรับผู้ที่ต้องการใช้ SAN Storage เป็นฐานสำหรับระบบงานของตัวเอง SAN Storage นั้นๆ ควรจะสนับสนุนการขยายพื้นที่และประสิทธิภาพได้ด้วยวิธีการที่หลากหลาย เหมาะสมกับค่าใช้จ่าย และความต้องการของระบบในเวลานั้นๆ โดยในการใช้งาน SAN Storage นั้น คีย์เวิร์ดหลักๆ ที่มักจะพบก็จะหนีไม่พ้นการขยายแบบ Scale Up และ Scale Out นั่นเอง
Scale Up: แนวคิดของการขยายแบบ Scale Up คือการขยายระบบ Storage เดิมที่มีอยู่ผ่าน Expansion Port ต่างๆ ไม่ว่าจะเป็น Fibre Channel 4Gbps หรือ SAS2 6Gbps โดยวัตถุประสงค์หลักๆ คือการเพิ่มขยายพื้นที่เป็นหลัก ไม่ใช่การแก้ปัญหาเรื่องคอขวดของระบบ หรือปัญหาทงด้านประสิทธิภาพ ดังนั้นข้อดีของการขยายระบบ Storage แบบ Scale Up คือสามารถเพิ่มพื้นที่ของระบบได้ ในงบประมาณที่ไม่สูงนั่นเอง
Scale Out: แนวคิดของการขยายแบบ Scale Out คือการขยายระบบ Storage ในระดับ Logical โดยการเพิ่ม Storage Controller ให้ทำงานร่วมกันผ่าน SAN Networking ซึ่งจะมีวัตถุประสงค์ที่แตกต่างไปจากการขยายแบบ Scale Up คือการเพิ่มประสิทธิภาพโดยรวมของระบบ Storage นั่นเอง เนื่องจากการขยายระบบแบบ Scale Out นี้ จะทำให้ระบบ Storage ของเรามี Host Interface สำหรับเชื่อมต่อกับเครื่อง Server มากขึ้น อีกทั้งยังช่วยเพิ่มขนาดของ Cache ในระบบให้มากขึ้นอีกด้วย แต่การขยายระบบแบบ Scale Out นี้จะมีค่าใช้จ่ายค่อนข้างสูง เพราะจริงๆ แล้วมันคือการลงทุนซื้อ Storage Hardware ใหม่หมดอีกชุดนั่นเอง
สำหรับข้อเสียของการใช้ SAN Storage สำหรับระบบงานแบบ Cloud ก็คือ SAN Storage ไม่สามารถ Share File ระหว่างหลายๆ Server เข้าด้วยกันได้ ซึ่งเราอาจจะต้องพึ่งพาความสามารถของ File System ต่างๆ ในการทำหน้าที่นี้ และทำให้การติดตั้งระบบมีความยุ่งยากมากขึ้น หรือต้องยึดติดกับบางแบรนด์มากขึ้นนั่นเอง
2. Parallel NAS Storage
สำหรับผู้ที่ต้องการความสามารถในการ Share File ระหว่างหลายๆ Server พร้อมๆ กัน ซึ่ง SAN Storage ไม่สามารถทำได้ ทางเลือกที่ดีสำหรับกรณีนี้คือการหนีมาใช้ NAS Storage นั่นเอง แต่ NAS Storage ทั่วๆ ไปที่เราใช้กันนั้น จริงๆ แล้วไม่ได้ถูกออกแบบมาให้ใช้กับระบบงานระดับ Cloud เลย เนื่องจาก NAS มักจะมีปัญหาทางด้านประสิทธิภาพ และเกิดคอขวดของระบบได้ง่ายมาก ดังนั้น Parallel NAS Storage จึงได้เกิดขึ้นมาเพื่อแก้ปัญหานี้ และตอบโจทย์ของ Cloud Application อย่างเต็มตัว
สิ่งที่ Parallel NAS Storage ทำนั้น มีแนวคิดคล้ายๆ กับการทำงานของ Bit Torrent คือให้ NAS Storage หลายๆ ชุด ช่วยกันส่งข้อมูลมาให้ผู้ใช้งานในลักษณะ Parallel เพื่อให้มีประสิทธิภาพสูงสุด, ได้ปริมาณ Cache สูงสุด, ได้ Throughput สูงสุด และได้ Redundancy Level ที่สูงสุดนั่นเอง โดย Parallel NAS Storage นี้ มักจะถูกสร้างมาให้เป็น Object-based Storage ด้วย
ในการลงทุนกับ NAS ประเภทนี้ ในระยะเริ่มต้นอาจจะถือว่ามีราคาค่อนข้างสูง แต่เมื่อเทียบค่าใช้จ่ายและความง่ายในภาพรวม ตั้งแต่เรื่องการติดตั้ง การดูแลระบบ และความง่ายในการใช้งานแล้ว ถือว่าเป็น Storage ที่เหมาะสมกับ Cloud Application ที่ต้องการ Server หลักพันจนถึงหลักหมื่นเครื่องได้เลย
3. NoSQL
สำหรับเทคโนโลยี NoSQL ที่กำลังมาแรงมากในช่วงนี้ จริงๆ แล้วก็จัดได้ว่าน่าจะได้กลายเป็นเทคโนโลยีพื้นฐานในการ Implement ระบบขนาดใหญ่ได้อย่างไม่ยากนัก โดย NoSQL เองเกิดขึ้นมาเพื่อแก้ปัญหาคอขวดของระบบ Database และมีความสามารถในการรองรับงานเฉพาะทางที่สูงกว่า SQL มาก โดยทั่วๆ ไปแล้ว NoSQL เกือบทุกตัวจะสามารถทำ Replication และการทำ Sharding ได้ เพื่อให้เราสามารถสร้างระบบฐานข้อมูลแบบ Distributed และรองรับการ Scale Out ในระดับของ Application ฐานข้อมูลได้อย่างไม่ยากเย็นนัก
ข้อดีของ NoSQL ก็คือเรื่องของประสิทธิภาพในการรับโหลดจากผู้ใช้งานจำนวนมากตั้งแต่หลายหมื่นไปจนถึงหลายล้านคนพร้อมๆ กัน ซึ่งบริการบน Cloud ใหญ่ๆ เกือบทั้งหมดที่เราใช้ก็มักจะเป็น NoSQL ทั้งสิ้น แต่ข้อเสียหลักๆ ก็คงเป็นเรื่องของการรับประกันและสนับสนุนเทคโนโลยีเหล่านี้ในบ้านเรานั่นเอง เนื่องจากยังไม่มีเจ้าไหนที่เข้ามาให้บริการในลักษณะ Commercial มากนัก และผู้ให้บริการ Cloud ใหญ่ๆ ก็มักจะพัฒนาระบบ NoSQL ของตัวเองขึ้นมาใช้กันเป็นส่วนมาก
จริงๆ แล้วถ้าพูดถึงเรื่องของคำว่า Cloud กับคำว่า Storage นั้น ยังมีอีกหลายแง่มุมให้เราพิจารณากันอีกมากมาย ไม่ว่าจะเป็น Cloud Storage, Cloud Tiering และอื่นๆ อีกมากมาย ก็คงต้องขอหยิบยกไว้พูดกันในคราวหน้า สำหรับวันนี้ก็ต้องขอลากันไปก่อน สวัสดีครับ