หากพูดถึงระบบ caching ประสิทธิภาพสูงสำหรับเว็บเซิฟร์เวอร์ แอปพลิเคชัน หรือฐานข้อมูล ตัวเลือกหนึ่งที่หลายท่านคงคุ้นหูกันดี ต้องปรากฏชื่อของ ‘Memcached’ ขึ้นมาอย่างแน่นอน เพราะตอบโจทย์ในเรื่องของความรวดเร็ว ใช้ง่าย เป็นโอเพ่นซอร์สที่เปิดกว้าง อีกด้านหนึ่ง Memcached เองก็ยังมีจุดอ่อนอยู่หลายประการ ที่ยังสามารถพัฒนาเพิ่มเติมได้ในหลายด้าน
VMware Gemcahced เป็นหนึ่งในแนวทางนั้น ซึ่งมีกลไกหลายรูปแบบที่ช่วยปิดข้อจำกัดของ Memcached แบบเดิม โดย VMware Gemcachced ก็คือส่วนภาคต่อของ VMware GemFire หรือ Distributed in-memory database นั่นเอง ในบทความนี้ทุกท่านจะได้รู้จักกับที่มาที่ไปของ VMware Gemcachced แบบเจาะลึก และแนวทางที่จะช่วยยกระดับประสบการณ์แบบเดิมๆ
รู้จักกับ Memcached
Memcached เป็นระบบ Caching ประสิทธิภาพสูงในรูปแบบ in-memory ที่มีการทำงานแบบกระจาย (distributed) โดยเป็นซอฟต์แวร์โอเพ่นซอร์ส ซึ่งถูกคิดค้นขึ้นในปี 2003 ผ่านภาษา Perl จากการที่คุณ Brad Fitzpatrick ที่พยายามหาวิธีเพิ่มประสิทธิภาพให้เว็บของตนที่ชื่อ LiveJournal ในเวลาต่อมาก็มีการพัฒนาสู่ภาษา C จนกระทั่งมีผู้สนใจนำไปใช้เป็นเบื้องหลังระบบการทำงานอย่างแพร่หลาย เช่น YouTube, Twitter(X), Reddit, Facebook, Wikipedia และอื่นๆ แม้กระทั่งผู้ให้บริการ Public Cloud ทุกรายก็มีบริการ Memcached
Memcached มีระบบการจัดเก็บข้อมูลในรูปแบบ Key-Value Store และทำงานในรูปแบบของ Client-Server โดยมีองค์ประกอบเพียง 4 ส่วนคือ
1.) Client Software – ทำหน้าที่รับลิสต์รายการเซิร์ฟเวอร์ในระบบทั้งหมด กล่าวคือ Client จะรู้จักกับ Server ในระบบทั้งหมด
2.) Client-Based Hashing Algorithm – ทำหน้าที่เลือกเซิร์ฟเวอร์จากค่า Key
3.) Server Software – จัดเก็บข้อมูลและ Key ใน Hash Table
4.) Server Algorithm – คอยจัดการกับข้อมูลเก่า โดยจะมีการคืนหน่วยความจำข้อมูลในส่วนที่ถูกใช้น้อยที่สุด (Least Recently Used : LRU) ในกรณีที่หน่วยความจำเต็ม
ไอเดียการทำงานของ Memcached ก็เหมือนระบบแคชทั่วๆไปก็คือ เมื่อระบบได้รับคำสั่งร้องขอข้อมูลมาแล้วก็จะทำการตรวจสอบว่ามีข้อมูลอยู่หรือไม่ และข้อมูลนั้นต้องอยู่ในระยะเวลาที่กำหนด หากพบข้อมูลก็จะส่งผลลัพธ์กลับไป แต่หากไม่มีหรือไม่อัปเดตก็จะร้องขอข้อมูลจาก Server จริงแทน
จุดแข็ง-จุดอ่อนของ Memcached
สิ่งต่างๆย่อมมีจุดเด่นและจุดด้อย ซึ่ง Memcached เองก็เช่นกัน ในหัวข้อนี้เราจะพาทุกท่านไปเรียนรู้ทั้ง 2 มุมมอง
จุดแข็ง
1.) ตอบสนองได้รวดเร็ว เพราะเก็บข้อมูลในหน่วยความจำ แน่นอนว่าเมื่อเทียบกับฐานข้อมูลที่ต้องอาศัยหน่วยความจำถาวรแล้ว ย่อมไม่มีทางรวดเร็วได้เทียบเท่ากับ RAM ทั้งนี้การปฏิบัติการนับล้านสามารถเกิดขึ้นในเพียงแค่หลักวินาที
2.) ใช้งานง่าย แม้ Memcached จะเกิดขึ้นมานานมากก็ตาม แต่กลับยังเป็นที่นิยมอยู่เสมอ แม้จะมีคู่แข่งใหม่เกิดขึ้น แต่ด้วยความง่ายในวิธีการทำงาน ทำให้ Memcached ยังอยู่ในใจของผู้ใช้งานจำนวนมาก โดยเฉพาะงานที่ไม่ต้องการรูปแบบที่ซับซ้อนนัก และเน้นความรวดเร็วเป็นหลัก ในทางปฏิบัติที่ยืนยันความง่ายของ Memcached ก็คือผู้ใช้สามารถเขียน API ในรูปแบบง่ายๆ เข้ามาใช้งานได้ทันที ทั้งยังรองรับภาษาโปรแกรมได้หลากหลาย เช่น Java, Python, C, C#, JavScript, Node.js. Go และอื่นๆ
3.) โอเพ่นซอร์ส การเปิดเผยโค้ดทำให้นักพัฒนาทั่วโลกสามารถร่วมกันพัฒนาต่อยอดให้ Memcached ให้มีฟังก์ชันใหม่อยู่เสมอ ในขณะที่ก็มีแนวทางพัฒนาเพื่อต่อยอดในเชิงธุรกิจ ด้วยฟังก์ชันขั้นสูงที่ตัวโอเพ่นซอร์สไม่มี ซึ่ง VMware Gemcached ก็เป็นอีกหนึ่งในแนวทางนี้
4.) ขยายตัวได้ทั้งแนวราบและแนวดิ่ง คุณสมบัติทำงานร่วมกันแบบกระจาย(distributed) ทำให้ผู้ใช้งานสามารถแบ่งปริมาณของข้อมูลด้วยการเพิ่มโหนดใหม่เข้ามาในคลัสเตอร์ ในกรณีที่มีโหลดการใช้งานเพิ่มขึ้นได้ อย่างไรก็ดี Memcached ยังมีการประมวลผลแบบ Multithread ทำให้ผู้ดูแลสามารถเพิ่มจำนวนคอร์ในแต่ละโหลดได้
5.) มีระบบจัดการข้อมูลที่หมดอายุและพื้นที่ ผู้ใช้งาน Memcached สามารถกำหนดอายุข้อมูลได้ โดยระบบมีกระบวนการลบข้อมูลที่เกินกำหนดออกโดยอัตโนมัติ ช่วยให้ข้อมูลมีความสดใหม่เสมอ อย่างไรก็ดีหากพื้นที่จัดเก็บเต็ม ระบบจะลบข้อมูลด้วยอัลกอริทึม LRU
จุดอ่อน
1.) แม้ Memcached จะทำความเร็วได้อย่างยอดเยี่ยม แต่ด้วยคอนเซปต์ของ in-memory ที่เป็นการจัดเก็บเพียงชั่วคราวย่อมไม่การันตีการสูญหายของข้อมูล
2.) Key มีขนาดสูงสุดเพียง 1 MB หรือ 250 ตัวอักษรเท่านั้น นอกจากนี้ยังรองรับข้อมูล (Data Types) ได้ไม่หลากหลายนักเช่น lists, sets, sorted sets, hashes, bit arrays และ hyperloglogs
3.) ไม่มีระบบ Redundancy หรือ failover ที่ช่วยเมื่อเกิดความผิดพลาดขึ้นกับโหนดหรือ Cluster
4.) ขาดฟีเจอร์ช่วยเหลือในมาตรการด้านความมั่นคงปลอดภัย ซึ่งในอดีตมีการโจมตี DDoS Amplification ที่เกิดขึ้นกับ Memcached มาแล้ว นอกจากนี้ผู้ใช้เองยังต้องระมัดระวังสิทธิ์ในการอ่านเขียนข้อมูลแคชด้วยตนเอง
จะนำ Memcached ไปใช้งานได้อย่างไร
หัวข้อที่ผ่านมาผู้อ่านคงได้ทราบข้อมูลคุณสมบัติ องค์ประกอบ ข้อดี-ข้อเสีย ของ Memcached กันแล้ว แต่หลายท่านอาจจะยังสงสัยว่า ในทางปฏิบัติจริง ท่านจะนำ Memcached ไปใช้ในสถานการณ์ใดได้บ้าง ซึ่งมักพบได้ใน 2 ลักษณะคือ
1.) Caching
Memcached สามารถช่วยแบ่งเบาโหลดจากเว็บหรือฐานข้อมูลของท่านได้ ไม่ว่าจะเป็น HTML Code, API Caching, image, file, session caching และอื่นๆ แม้กระทั่งผลลัพธ์ของ Database Query เดิมๆ ลดการประมวลผลของฐานข้อมูล ทำให้ผู้ใช้มีประสบการณ์ใช้งานดีขึ้น
2.) Session Store
ในกรณีที่ระบบต้องทำงานอย่างต่อเนื่องด้วยการติดตาม Session ระบบ Memcached ก็สามารถถูกนำมาใช้เพื่อจัดเก็บข้อมูลของ Session ได้ เช่น Username, Credential และ ค่าสถานะของ Session ซึ่งหากจัดเก็บข้อมูลบนเซิร์ฟเวอร์แล้วเกิดระบบล่ม Session เหล่านั้นก็จะได้รับผลกระทบตามด้วย ในขณะที่การมีระบบจัดเก็บ Session แบบกระจายตัวก็จะช่วยลดความเสียหายลง ทั้งยังเร็วกว่าการบริหารจัดการ Session ด้วยฐานข้อมูลปกติหรือ file system ที่เข้าถึงข้อมูลดิสก์ที่ช้ากว่า
รู้จักกับ VMware Gemcached
VMware Gemcached เป็นส่วนเชื่อมต่อของ GemFire ที่ทำให้ Memcached Client สามารถสื่อสารกับ GemFire Cache Server ด้วยโปรโตคอลปกติที่ภายในมี Gemcached Server ฝังอยู่ด้วย ไม่ต้องมีการแก้ไขโค้ดฝั่ง Client แต่อย่างใด โดย GemFire จะคอยจัดการระบบข้อมูลแบบกระจายและการเข้าถึงสู่ Gemcached เหล่านี้ มาถึงตรงนี้หลายคนคงสงสัยว่าแล้ว GemFire เกี่ยวข้องกับระบบ in-memory caching นี้ได้อย่างไร เราขอพาทุกท่านย้อนกลับไปเริ่มต้นที่ VMware GemFire ซึ่งเราเคยเขียนอธิบายในบทความ https://www.techtalkthai.com/vmware-gemfire-distributed-in-memory-database-by-cloudhm/
VMware GemFire เป็นระบบ Distribute in-memory database ซึ่งเพียงแค่คำจำกัดความสั้นๆนี้ ผู้อ่านคงพอจะเชื่อมโยงได้ว่าระบบ in-memory และ distribute นั้นสอดคล้องกับระบบ Memcached อยู่แล้ว แม้ว่าจะถูกนำเสนอในรูปแบบของ Database แต่หากพิจารณาดีๆ การจัดเก็บข้อมูลแคชก็ต้องอาศัยระบบจัดการข้อมูลเบื้องหลังเช่นกัน เพียงแต่ว่าจะเป็นอย่างไร ซึ่ง GemFire ยังใช้รูปแบบการทำงานแบบ Key-Value Datastore เช่นกัน และท้ายที่สุด จึงไม่ยากเกินไปที่จะต่อยอด GemFire สู่ GemCached
อีกเรื่องหนึ่งที่ผู้อ่านควรรู้คือ GemFire ได้มาจากการเข้าซื้อกิจการ Pivotal Software เมื่อหลายปีก่อน ซึ่งในรูปแบบโอเพ่นซอร์สจะรู้จักภายใต้ชื่อ Apached Geode แต่หากเป็นตัว Commercial ก็จะอยู่ภายใต้ชื่อการค้าที่เรียกว่า GemFire นั่นเอง ซึ่งหัวข้อหนึ่งภายใต้เว็บไซต์ของ Apache Geode ก็มีชื่อของ Gemcached อยู่ด้วย
ยกระดับประสบการณ์ ปิดทุกช่องว่างด้วย VMware Gemcached
เมื่ออาศัยความสามารถของ GemFire ที่เป็นซอฟต์แวร์ระดับ Commercial เข้ามาแล้ว VMware Gemcache จึงถูกอัปเกรตระบบบริหารจัดการให้มีฟีเจอร์ที่เหนือกว่า Memcached แบบเดิม หลายด้านคือ
1.) Data Consistency
ปกติแล้ว Memcached Client จะมีรายการเซิร์ฟเวอร์ทั้งหมดที่กระจายตัวกันเก็บไว้ ซึ่งต้องขั้นตอนสำหรับรักษาลิสต์ให้สอดคล้องกัน หากลิสต์ไม่ถูกต้องก็จะทำงานได้ไม่มีประสิทธิภาพ โดยภายใน GemFire Cluster สมาชิกทุกตัวจะคุยกันเองเพื่อรักษาความถูกต้องของข้อมูล ทำให้ไม่จำเป็นต้องเขียนโค้ดเพื่อรักษาความสอดคล้องนี้เอง
2.) High Availability
เนื่องจาก Memcached ไม่มีการดูแล Cluster เมื่อโหนดเกิดล่ม Client จะต้องร้องขอไปยังปลายทางเอง แต่สำหรับ GemFire ที่มีการทำงานในลักษณะของ Database กลไกส่วนนี้พร้อมสำหรับการใช้งานอยู่แล้ว ไม่จำเป็นต้องเขียนแอปเข้าช่วย
3.) Faster Cluster Startup Time
เมื่อ Cluster เกิดล่มขึ้นมาจริงๆ หลังจากระบบถูกบูตขึ้นใหม่ จะต้องมีการกระจายข้อมูลไปหาสมาชิกในกลุ่มและประมวลผล Request ไปพร้อมกัน ซึ่งเป็นเรื่องที่เสียเวลา แต่ในกรณีของ GemFire Cluster จะสามารถโหลดข้อมูลกลับมาจากแหล่งอื่นเช่น in-memory หรือ disk โดยไม่ต้องเสียเวลาไปกับการร้องขอฐานข้อมูลอีกครั้ง
4.) Automatic Scalability
การเพิ่มพื้นที่ให้ Memcached หมายถึงการอัปเดตรายชื่อใหม่ของเซิร์ฟเวอร์ให้ Client ทุกตัว หาก Client อาจมองเห็นข้อมูลไม่สอดคล้องกันอาจนำไปสู่ปัญหาได้ แต่ GemFire มีกระบวนการค้นหาสมาชิกของเซิร์ฟเวอร์โดยอัตโนมัติ ฝั่ง Client จึงไม่จำเป็นต้องมีลิสต์ของเซิร์ฟเวอร์อย่างสมบูรณ์
5.) Scalable Client Connection
Memcached Client อาจร้องขอการเชื่อมต่อ TCP จำนวนมากไปหากลุ่มของเซิร์ฟเวอร์ ในกรณีที่ต้องการเข้าถึงข้อมูลหลายส่วน จากเซิร์ฟเวอร์เหล่านั้น แต่ในการปฏิบัติการของ Gemcached การร้องขอไปยังเซิร์ฟเวอร์จะเกิดขึ้นครั้งเดียว เพราะ GemFire มีระบบจัดการกระจายการทำงานเหล่านี้อยู่แล้ว
6.) Network Segmentation
ในการใช้งานจริงอาจมีการใช้กลุ่มของเซิร์ฟเวอร์จำนวนมากถึงหลายร้อยตัว ประเด็นคือถ้าจัดการ Network Segmentation ได้ไม่เหมาะสม Client บางตัวอาจเข้าถึงส่วนของข้อมูลไม่ได้ และต้องไปเรียกข้อมูลจากเซิร์ฟเวอร์จริงแทน ซึ่งผิดจากความคาดหวังของงาน Caching อย่างไรก็ดีใน GemFire มีกลไกการจัดการ Network Segmentation ที่จะช่วยการันตีว่า Client จะได้รับการตอบสนอง
VMware Gemcached โดย Cloud HM
มาถึงตรงนี้ผู้อ่านคงได้ทราบแล้วว่า Gemcached จะช่วยยกระดับประสบการณ์ขององค์กรได้อย่างไร ทั้งนี้มีผู้ให้บริการคลาวด์หลายรายได้นำเสนอบริการ Memcached ในรูปแบบของแต่ละคน ซึ่ง Cloud HM เป็นผู้ให้บริการ Local Cloud เพียงรายเดียวของประเทศไทยที่พร้อมให้บริการ VMware Gemcached ในส่วนหนึ่งของบริการ Tanzu ที่ดูแลโดย Cloud HM ที่จะมอบประสบการณ์สุดพิเศษให้ผู้ใช้ดังนี้
1.) ไร้ต้นทุนแฝง
บริการคลาวด์หลายค่ายมักนำเสนอว่าการใช้จ่ายจะเกิดขึ้นตามจริง ซึ่งผู้ใช้งานส่วนใหญ่มักพบว่าเมื่อถึงคราวใช้งานจริง ค่าบริการกลับมีต้นทุนแฝงเกิดขึ้นนอกเหนือจากการเช่าใช้ทรัพยากรหลักๆ ยกตัวอย่างเช่น มีค่าบริการนำข้อมูลออก หรือ ค่าใช้จ่ายที่เกิดขึ้นจาก Transaction ที่ผ่านเข้ามา แต่นี่จะไม่เกิดขึ้นกับบริการของ Cloud HM ที่ออกแบบมาให้ราคาเป็นมิตรกับลูกค้ามากที่สุด ให้ธุรกิจสามารถวางแผนค่าใช้จ่ายได้ตั้งแต่ต้น ไม่เจอเรื่องเซอร์ไพร์สในภายหลัง
2.) เชื่อมต่อได้รวดเร็วกว่า
การใช้บริการ Caching ใดๆ นั่นหมายถึงธุรกิจของท่านต้องการลดระยะเวลาให้มีประสิทธิภาพในการได้รับข้อมูลด้วยความรวดเร็ว ดังนั้นหากผู้ใช้งานส่วนใหญ่อยู่ในประเทศไทย บริการ Cloud HM จะสามารถให้บริการได้อย่างรวดเร็ว เพราะอยู่ใกล้กับผู้ร้องขอข้อมูลมากที่สุด ต่างกับเวลาที่ต้องใช้บริการออกสู่นอกประเทศ
3.) ทีมงานคุณภาพพร้อมดูแลตลอด 24×7
นอกเหนือจากการได้ตัวบริการที่มีคุณภาพสูงแล้ว ท่านยังจะได้รับบริการจากมืออาชีพแบบ 24×7 โดยปกติแล้วการสื่อสารกับทีมงาน Local ที่พูดภาษาเดียวกันอยู่โซนเวลาเดียวกันมักตอบสนองได้รวดเร็วและตรงจุดมากกว่า เรื่องเล็กน้อยเหล่านี้มักมีผลในยากฉุกเฉิน
4.) ตอบโจทย์ Sovereign Cloud
ปฏิเสธไม่ได้ว่าบริการคลาวด์ช่วยเสริมศักยภาพให้แก่ธุรกิจอย่างมีนัยสำคัญ ทั้งเรื่องประสิทธิภาพในการทำงาน ค่าใช้จ่ายตามจริง ไม่ต้องดูแลฮาร์ดและอัปเดตระบบด้วยตนเอง อย่างไรก็ดีถึงจะรับทราบว่า Cloud มีข้อดีมากมาย แต่ในหลายธุรกิจมีระเบียบข้อบังคับหรือกังวลกับอธิปไตยทางข้อมูล ซึ่งแน่นอนว่าหากท่านเลือกใช้บริการ Caching ย่อมต้องเกี่ยวข้องกับข้อมูลจำนวนมาก เช่นนี้ความน่ากังวลด้าน Data Privacy ยิ่งเป็นเรื่องสำคัญ ที่ Cloud นอกประเทศไม่สามารถตอบโจทย์ได้ ต่างกับ Cloud HM ที่ทุกข้อมูลของท่านจะถูกเก็บและประมวลผลภายในประเทศเท่านั้น นอกจากนี้ยังตอบโจทย์ข้อบังคับของอุตสาหกรรมอีกด้วย
รูปตัวอย่างหน้าจอบริการ Cloud HM Gemcached
บทส่งท้าย
ในบทความนี้เราได้พาทุกท่านไปเรียนรู้ถึงซอฟต์แวร์ยอดนิยมสำหรับงาน Caching ที่ชื่อว่า Memcached ซึ่งด้วยคุณสมบัติข้อดีหลายข้อ ทำให้ซอฟต์แวร์ยังได้รับความสนใจจนถึงทุกวันนี้ เมื่อมีกลุ่มผู้ใช้จำนวนมากและเข้าถึงได้ฟรีจากการเป็นโอเพ่นซอร์ส Memcached จึงยังได้รับการอัปเดตอยู่เรื่อยๆ
อย่างไรก็ดีซอฟต์แวร์ยังมีความไม่สมบูรณ์อยู่หลายจุด ที่สามารถพัฒนาได้ และ VMware Gemcached คือหนึ่งในหนทางนั้น ด้วยความสามารถของ GemFire ได้ทำให้ Memcached โอเพ่นซอร์สติดปีกกลายเป็นโซลูชันระดับองค์กรอย่างแท้จริง ที่ Cloud HM ได้นำความสามารถนั้น มาผนึกอยู่บนการให้บริการคลาวด์ในประเทศ ที่ช่วยยกระดับการให้บริการขึ้นอีกระดับ
สนใจผลิตภัณฑ์ VMware Gemcached ติดต่อทีมงาน Cloud HM ได้ที่ โทร (0)2-119-7300 หรืออีเมล์ sales@cloudhm.co.th หรือเยี่ยมชมเว็บไซต์ของ Cloud HM ได้ที่ https://www.cloudhm.co.th
ที่มา :
- https://docs.vmware.com/en/VMware-GemFire/10.0/gf/tools_modules-gemcached-chapter_overview.html
- https://aws.amazon.com/memcached/
- https://aws.amazon.com/caching/session-management/
- https://www.dragonflydb.io/guides/memcached
- https://medium.com/@abhiruchigupta16/redis-and-memcached-explained-ce8d722c50b7
- https://memcached.org/about
- https://kinsta.com/blog/memcached-vs-redis/
- https://geode.apache.org/docs/guide/114/tools_modules/gemcached/chapter_overview.html
- https://en.wikipedia.org/wiki/Memcached