เปลี่ยนสู่ VMware GemFire เพื่อประมวลผลแบบ Distributed in-memory database

เชื่อว่าทุกคนคงคุ้นเคยกับการใช้งานฐานข้อมูลตัวเดียวเพื่อรองรับกับข้อมูลที่เกิดขึ้น ซึ่งวิธีเดิมในการรับมือกับโหลดปริมาณมากคือสร้างเว็บแอปไว้หลายตัว และใช้ Load Balancer กระจายงาน อย่างไรก็ดีสุดท้ายแล้วความรวดเร็วของฐานข้อมูลก็คือคอขวดของระบบอยู่ดี ยิ่งในยุคสมัยใหม่นี้ที่ข้อมูลเกิดขึ้นท่วมท้นพร้อมกับความคาดหวังที่จะได้รับการตอบสนองอย่างทันที ในบทความนี้ทุกท่านจะได้รู้จัก VMware GemFire โซลูชัน Distributed in-memory database ที่จะช่วยให้ท่านเอาชนะความท้าทายของข้อมูล

Credit : VMware

In-memory เกิดขึ้นได้อย่างไร

ตามหลักการประมวลผลทางคอมพิวเตอร์เราทราบดีกันอยู่แล้วการประมวลผลนำข้อมูลออกมาอย่างเป็นลำดับชั้น เช่น Register, SRAM, DRAM และ Disk ซึ่งต้นทุนของการผลิตอุปกรณ์เรียงจากสูงมาหาต่ำตามลำดับ หากเราเทียบระหว่างความจุของ RAM และฮาร์ดดิสก์ทุกท่านจะเห็นภาพได้อย่างชัดเจน 

อย่างไรก็ดีเราต่างทราบดีว่าหากเก็บข้อมูลใน RAM ได้มากย่อมดีกว่าดิสก์แน่นอน โดยข้อจำกัดเหล่านี้เคยเกิดขึ้นเมื่อหลายสิบปีก่อน เพราะเรื่องเหล่านี้ใกล้เคียงความจริงมากขึ้นจากต้นทุนของเทคโนโลยี RAM ในปัจจุบัน ที่จะเห็นได้ว่า RAM มีความสูงถึงระดับเทระไบต์ นั่นจึงเป็นที่มาของแนวคิด In-memory ในแอปพลิเคชันต่างๆ ที่นำข้อมูลมาเก็บไว้พร้อมใช้งานที่ RAM เพื่อการให้เข้าถึงมีประสิทธิภาพมากขึ้น เพราะยังไงเสียการใช้งาน DRAM ย่อมเร็วกว่าดิสก์ แม้ Vendor ด้าน Storage จะชูโรงเรื่อง All flash SSD พร้อมเสริมเทคนิคมากมายก็ตาม

ย้อนกลับมาที่ประเด็นของฐานข้อมูลที่จำเป็นต้องเขียนอ่านกลับดิสก์ แม้จะแลกมาด้วยความคงทนของข้อมูล แต่ข้อเสียคือเรื่องความรวดเร็วที่ไม่เพียงต่อแอปพลิชันหลายประเภทในปัจจุบัน แม้องค์กรพยายามเพิ่มความสามารถของอัตราอ่านเขียนด้วยด้วยการเพิ่มอัตราของ I/O ที่ดิสก์แต่ก็ยังมีข้อจำกัดและค่าใช้จ่ายสูง ดังนั้นจึงถือกำเนิดฐานข้อมูลที่ออกแบบมาเพื่อใช้บนหน่วยความจำที่เรียกว่า In-memory database เพื่อรองรับกับการใช้งานของแอปที่ต้องการตอบสนองได้รวดเร็วเช่น เกม การจัดการข้อมูลเซสชันปริมาณมาก หรือการวิเคราะห์ข้อมูลแบบเรียลไทม์

VMware GemFire

Credit : VMware

GemFire เป็นเรื่องราวที่สืบเนื่องกันมาตั้งแต่หลายปีก่อนของบริษัท Pivotal Software โดยนอกจากที่มีความสามารถของ in-memory แล้วยังครอบคลุมไปถึงสถาปัตยกรรมแบบกระจาย (distributed) อีกด้วย ทั้งนี้ยังมีการส่งไม้ต่อให้กลุ่มโอเพ่นซอร์สภายใต้ชื่อ Apache Geode แต่หากเป็นตัว Commercial ก็จะอยู่ภายใต้ชื่อการค้าที่เรียกว่า GemFire นั่นเอง ต่อมาในปี 2020 Pivotal ก็ได้ถูก VMware เข้าซื้อกิจการและปัจจุบัน GemFire นี้ได้กลายเป็นส่วนหนึ่งภายใต้กลุ่มโซลูชัน Tanzu นั่นเอง

เมื่อพูดถึงการเป็น Distributed นั่นหมายถึงว่าระบบต้องมีกลุ่มก้อนของเครื่องที่ประมวลผลที่ทำงานร่วมกัน (Cluster) โดยสิ่งที่ GemFire ตอบโจทย์การใช้งานในภาคองค์กรก็คือความสามารถในระดับของการ Scale-out ซึ่งสามารถเพิ่มจำนวนโหนดเข้ามาในกลุ่มหรือกำจัดโหนดที่มีปัญหาออกจากกลุ่มได้ แต่ความท้าทายคือจะทำอย่างไรให้กลไกนี้เกิดขึ้นได้อย่างชาญฉลาดและไม่กระทบกับประสิทธิภาพการทำงานของโหนดอื่นๆ 

โดยกลุ่มของการทำงานสมาชิกจะรู้จักกันและเชื่อมต่อกันในรูปแบบของ Peer-to-peer (P2P) แลกเปลี่ยนข้อมูลซึ่งกันและกัน โดย GemFire ใช้ระบบจัดการสมาชิก (Group Membership Service : GMS) ที่ทำให้ขั้นตอนการนำเข้าหรือตัดการเป็นสมาชิกเกิดขึ้นได้อย่างรวดเร็วหากสมาชิกรายนั้นมีปัญหาหรือขาดการติตต่อเกินเวลาที่กำหนด อีกทั้งกระบวนการจะไม่กระทบต่อการทำงานของสมาชิกรายอื่น 

VMware GemFire เป็นฐานข้อมูลประเภท Key-Value Datastore ซึ่งจัดอยู่ในกลุ่มของ noSQL โดยไอเดียก็คือค่าของข้อมูลจะเชื่อมโยงกับ Key ซึ่งมีค่าไม่ซ้ำกัน (คล้ายกับ Primary Key ในระบบ Relational Database แต่รูปแบบการเก็บไม่ได้ถูกนิยามโดยตาราง) จุดเด่นก็คือค่าของข้อมูลเป็นชนิดใดก็ได้และมีความซับซ้อนภายใต้ของข้อมูลได้ ทำให้ใช้งานมีความยืดหยุ่น รองรับกับแอปพลิเคชันที่มักมีการเปลี่ยนโครงสร้าง ต่างกับ Relational Database ที่สร้างแล้วมักแก้ไขเปลี่ยนแปลงยาก

นอกจากนี้เอง GemFire ยังมีคอนเซปต์ของ Regions เป็นขอบเขตของข้อมูลในหนึ่งคลัสเตอร์ โดยสามารถกำหนดได้ว่า Region นี้จะครอบคลุมในคลัสเตอร์ (Distributed), เก็บอยู่บนสมาชิกเพียงตัวเดียว (Non-distributed), สำหรับการสำรองข้อมูล (Replicated) และแบ่งส่วนของข้อมูล (Partition) เหมาะสำหรับการที่มีข้อมูลปริมาณมากให้ทุกคนถือข้อมูลคนละส่วน ตอบโจทย์ด้านประสิทธิภาพในการเข้าถึงและใช้ร่วมกับการทำ HA หรือบันทึกลงบนดิสก์ได้ถาวร

จะเห็นได้ว่า GemFire ได้พยายามรับมือกับความท้าทายของระบบการประมวลผลแบบ Distributed และ in-memory หลายอย่าง ซึ่งนำไปสู่ฟีเจอร์ต่างๆที่ครอบคลุมดังนี้

  • การันตีเรื่อง Persistance ผู้ใช้งานสามารถคอนฟิคให้ GemFire Region ให้เก็บข้อมูลมากกว่า Memory สู่พื้นที่จัดเก็บถาวรได้ไม่ว่าจะเป็นฮาร์ดไดร์ฟหรือสตอเรจภายนอก ด้วยเหตุนี้เองจึงการันตีว่าข้อมูลจะไม่สูญหายแม้เครื่องจะดับไป
  • คอนเซปต์ของ Share Nothing หรือแต่ละเซิร์ฟเวอร์จะมี CPU Memory และ Disk ของตัวเองไม่ต้องมีการแชร์ทรัพยากรร่วมกัน พร้อมทั้งมีชุดข้อมูลสำรองในสตอเรจอื่นจึงรับประกันว่าจะไม่เกิด Single point of failure
  • คอนเซปต์ของ Data Colocation ทำให้เกิดการจัดเก็บข้อมูลที่คล้ายคลึงกันอยู่ในสถาที่เดียวกันทำให้การเรียกใช้มีประสิทธิภาพมากกว่า
  • มีภาษาในการ Query ข้อมูลที่เข้าใจง่ายคล้ายกับ Syntax ของ SQL แต่ยืดหยุ่นมากกว่าที่เรียกว่า Object Query Language (OQL)
  • ความสามารถของ GemFire ยังสร้างการทำงานแบบกระจายข้ามเครือข่าย WAN ได้ ด้วยเหตุนี้จึงตอบสนองกับแอปพลิเคชันที่มีข้อมูลต่างสถานที่หรืออยู่ไกลกันออกไป
  • มีระบบการจัดการที่ชาญฉลาดที่ฝั่ง Client ให้สื่อสารกับสมาชิกได้ในครั้งเดียว และระบบ Local Cache ที่พร้อมกับข้อมูลล่าสุด
  • พร้อมใช้ง่ายได้ง่ายๆผ่าน Spring Framework หรือการใช้ API ช่วยงานนักพัฒนาเริ่มต้นได้โดยง่าย 
  • มีระบบ indexing เพื่อช่วยให้ Query ที่มักเกิดขึ้นบ่อยมีความรวดเร็ว 
  • รองรับการทำ Full-text Search ด้วย Apache Lucene ที่เป็นโอเพ่นซอร์สที่ถูก integrate เข้ามา
  • มีการ Replicate ข้อมูลท่ามกลางสมาชิกตัวอื่นเพื่อเป็นการสำรองข้อมูลซึ่งกันและกัน 
  • สามารถปรับสมดุลย์การทำงานได้อย่างอัตโนมัติเช่น ในการกระจายข้อมูลให้ใกล้กับการใช้งาน หรือไปยังสมาชิกที่เหมาะสม

จะนำ VMware GemFire ไปใช้ในองค์กรได้อย่างไร

อย่างที่ทราบดีแล้วว่า GemFire ได้ถูกออกแบบมาให้ตอบสนองการทำงานที่ต้องการความรวดเร็วด้วยความเป็น in-memory database และกลไกการทำงานร่วมจากกลุ่มของสมาชิก แต่ยังการรันตีเรื่อง ACID ที่ข้อมูลสมบูรณ์ถูกต้อง สมาชิกทำงานร่วมกันได้และทนทางต่อการสูญเสีย ทำให้ GemFire เหมาะกับแอปปัจจุบันตัวอย่างเช่น

1.) GemFire อยู่เบื้องหลังของระบบขนส่งสาธารณะในประเทศที่มีประชากรหนาแน่นอย่างจีนและอินเดีย โดยในกรณีศึกษาแรกปัญกาคือช่วงปีใหม่จีนมีผู้คนจำนวนมากใช้บริการขนส่งเพื่อกลับบ้าน ซึ่งพวกเขาสามารถขยายการซื้อตั๋วได้ถึง 15,000 ใบต่อนาทีและยอดเข้าชมเพจสูงถึง 1,400 ล้านครั้งต่อวัน หรือ 40,000 ครั้งต่อวินาที เช่นกันในรถไฟของอินเดียโปรลดราคาเวลาสายของวันทำให้ความหนาแน่นของยอดผู้ชมพุ่งพรวด ซึ่งระบบเดิมจะประสิทธิภาพตกลงเมื่อมีผู้ใช้งานแตะ 40,000 คนทำให้ต้องผู้ใช้ต้องเผชิญกับความล้าช้า แต่เมื่อทีมไอทีตัดสินใจเข้าสู่ GemFire ระบบของพวกเขาก็รองรับการซื้อตั๋วกระโดดจาก 2,000 ต่อนาทีสู่ 10,000 ต่อนาทีหรือ 120,000 Concurrent 

2.) IoT ได้สร้างปริมาณของข้อมูลเพิ่มขึ้นเป็นอย่างมากเข้ามาในระบบ ซึ่งระบบฐานข้อมูลที่ต้องเขียนอ่านบนดิสก์จะไม่สามารถตอบสนองกับข้อมูลที่พุ่งเข้ามาอย่างรวดเร็วและมหาศาล หากต้องการวิเคราะห์ข้อมูลเพื่อสร้างการตัดสินใจที่ทันท่วงที การใช้งาน GemFire นั้นดูเหมาะสมกว่า

3.) การประมวลผลตามอีเว้นต์เช่น บริษัทบัตรเครดิตที่ต้องการตรวจจับการปลอมแปลง ด้วยฟังก์ชัน Continuous Querying จะทำให้เกิดการแจ้งเตือนผู้เกี่ยวข้องเมื่อเกิดผลลัพธ์ที่เข้าเงื่อนไขที่ตั้งเอาไว้ ในกรณีของบัตรเครดิตอาจส่งข้อมูลการปฏิเสธไปหาเจ้าหน้าที่บริษัทเป็นต้น

4.) GemFire ยังสามารถนำหน้าที่เป็น Cache ของระบบเพื่อขวางหน้าฐานข้อมูลเดิม ลดการเข้าถึงฐานข้อมูลที่ล่าช้ามากกว่า เพื่อประสิทธิภาพการตอบสนองให้เร็วขึ้นของบริการได้

5.) ในยุคของ microservice มักมาพร้อมกับความคาดหวังในการตอบสนองข้อมูลได้ทันสถานการณ์ ซึ่งความเป็น Stateless ของสถาปัตยกรรมทำให้ต้องมีที่เก็บข้อมูล แต่แน่นอนว่าต้องสอดคล้องกับการขยายตัวของแอปพลิเคชันได้ โดย GemFire มีจุดประสงค์หลักเพื่อการ Scale-out อยู่แล้ว จึงสอดคล้องกับแนวทาง microservice ได้เป็นอย่างดี

สนใจศึกษาข้อมูลเพิ่มเติมได้จากวีดีโอด้านล่าง

ท่านใดสนใจผลิตภัณฑ์ VMware GemFire ติดต่อทีมงาน Cloud HM ได้ที่

โทร (0)2-119-7300 หรืออีเมล์ sales@cloudhm.co.th หรือเยี่ยมชมเว็บไซต์ของ Cloud HM ได้ที่ https://www.cloudhm.co.th

ที่มา :

About nattakon

จบการศึกษา ปริญญาตรีและโท สาขาวิศวกรรมคอมพิวเตอร์ KMITL เคยทำงานด้าน Engineer/Presale ดูแลผลิตภัณฑ์ด้าน Network Security และ Public Cloud ในประเทศ ปัจจุบันเป็นนักเขียน Full-time ที่ TechTalkThai

Check Also

พบช่องโหว่ใน Kubernetes ที่อาจถูกใช้ยึดควบคุม Windows Node

พบช่องโหว่ใน Kubernetes ที่อาจถูกใช้ยึดควบคุม Windows Node ทั้งหมดในคลัสเตอร์

SonicWall เตือนช่องโหว่ Zero-day ใน SMA 1000 ให้ผู้ใช้อัปเดตด่วน!

พบการโจมตีในโซลูชัน SonicWall SMA 1000 Appliance Management Console (AMC) และ Central Management Console (CMC) ที่เป็นโซลูชันสำหรับรวมศูนย์การบริหารจัดการ โดยช่องโหว่มีความร้ายแรงที่ …