Database as a Service ฐานข้อมูลที่อยู่บนคลาวด์ ตอบโจทย์องค์กรอย่างไร

ทุกวันนี้เทคโนโลยีคลาวด์ได้กลายมาเป็นหัวใจสำคัญของการทำธุรกิจในยุคดิจิทัลที่รองรับการเติบโตอย่างรวดเร็วของโลกธุรกิจ ไม่ว่าจะเป็นการเก็บข้อมูล การประมวลผล หรือการบริการต่าง ๆ เกี่ยวกับแอปพลิเคชันที่เราใช้งานกันในทุก ๆ วัน ทุกอย่างถูกขับเคลื่อนไปอย่างรวดเร็ว ด้วยความสามารถจากขุมพลังของเทคโนโลยีคลาวด์ โดยในวันนี้เราจะมาทำความรู้จักกับสิ่งที่เรียกว่า “Database as a Service” หรือ “DBaaS” ฐานข้อมูลที่อยู่บนคลาวด์ มาดูกันว่ามันดียังไง ทำไมถึงเป็นที่นิยมในปัจจุบัน พร้อมทั้งพาไปดูโซลูชันเจ๋ง ๆ ของฐานข้อมูลที่เราคุ้นเคยอย่าง MongoDB, RabbitMQ, MySQL และ PostgreSQL ในรูปแบบ DBaaS กัน ถ้าพร้อมแล้วไปดูกันเลย

Database as a Service คืออะไร?

ก่อนอื่นมาทำความเข้าใจกับ Database as a Service (DBaaS) แบบไว ๆ กันก่อน โดย DBaaS มันคือบริการที่ให้เราสามารถใช้งานฐานข้อมูลผ่านคลาวด์ได้ ทำให้เราไม่จำเป็นต้องมีเครื่องเซิร์ฟเวอร์หรือซอร์ฟแวร์ของฐานข้อมูล แล้วต้องมานั่งจัดการด้วยตัวเอง เราเพียงแค่เชื่อมต่อและใช้บริการได้เลย โดยใน DBaaS มักจะมาพร้อมกับฟีเจอร์ที่ทำให้การจัดการฐานข้อมูลง่ายขึ้น เช่น การสำรองข้อมูลอัตโนมัติ การสเกลได้ตามที่เราต้องการ และการรักษาความปลอดภัยที่เป็นมาตรฐาน

ต่างจาก Database แบบปกติยังไง?

จากภาพด้านบนจะเห็นได้ว่าหากเราต้องมีเซิร์ฟเวอร์เองกว่าจะได้ใช้ฐานข้อมูลจะก็มีขั้นตอนที่ต้องเตรียมค่อนข้างเยอะเลยทีเดียว แถมมีภาระอีกมากมายที่เราต้องดูแล ไม่ว่าจะเป็นเรื่องของการ Backup ฐานข้อมูลเอง อัปเดตซอฟต์แวร์ การจัดการความปลอดภัย ป้องกันเซิร์ฟเวอร์จากการโจมตีต่าง ๆ ทำให้เวลาที่เราจะเอาไปโฟกัส ในการพัฒนาแอปพลิเคชันก็โดนลดลงไปด้วย กลับกันหากเรามาใช้ในรูปแบบ DBaaS เราเพียงแค่ เลือกผู้ให้บริการ สร้างบัญชีผู้ใช้และเลือกแผนบริการ ระบุรายละเอียดฐานข้อมูล เช่น ประเภทฐานข้อมูล ขนาดพื้นที่เก็บข้อมูล เชื่อมต่อกับฐานข้อมูล แค่นี้เราก็สามารถใช้ฐานข้อมูลคุณภาพสูง ปลอดภัย ไม่ต้องดูแลเองเลย

การทำงานของ Database as a Service

DBaaS จะให้ผู้ใช้เชื่อมต่อฐานข้อมูลผ่านอินเทอร์เน็ต ผู้ให้บริการคลาวด์จะเป็นคนดูแลทุกอย่างหลังบ้าน ทั้งการสำรองข้อมูล การอัปเดตซอฟต์แวร์ การจัดการเซิร์ฟเวอร์ ไปจนถึงการรักษาความปลอดภัยของข้อมูล เราสามารถเข้าถึงและจัดการผ่านเครื่องมือที่ผู้ให้เจ้านั้น ๆ มีให้ส่วนใหญ่จะเป็น เว็บคอนโซล หรือ API เป็นต้น

ซึ่งใน DBaaS (Database-as-a-Service) นั้นรองรับการเชื่อมต่อกับฐานข้อมูลหลากหลายประเภท ไม่ว่าจะเป็น MongoDB, RabbitMQ, MySQL และ PostgreSQL ผู้ใช้สามารถเลือกใช้ฐานข้อมูลที่เหมาะสมสำหรับความต้องการของแอปได้ โดยทั้ง 4 ตัวนี้มีทั้งความเหมือนและแตกต่างกันดังนี้

MongoDB, RabbitMQ, MySQL และ PostgreSQL ต่างกันยังไง?

คุณสมบัติMongoDBRabbitMQMySQLPostgreSQL
ประเภทของระบบNoSQL (Document-based)Message BrokerSQL (Relational)SQL (Relational)
รูปแบบข้อมูลJSON-like documents (BSON)MessagesTables, rows, columnsTables, rows, columns
ภาษาในการ QueryMongoDB Query Language (MQL)AMQP (Advanced Message Queuing Protocol)SQLSQL
การใช้งานใช้งานง่ายในกรณีข้อมูลที่ไม่เป็นโครงสร้างใช้งานง่ายในระบบ messagingใช้งานง่ายในระบบที่มีโครงสร้างชัดเจนใช้งานง่ายในระบบที่มีโครงสร้างชัดเจน

จากตารางด้านบนเราจะเห็นได้ว่าการเลือกใช้งานฐานข้อมูลตัวไหนจะขึ้นอยู่กับลักษณะงานและความต้องการของระบบ โดยหากเป็น MongoDb จะเหมาะสำหรับงานที่มีการเปลี่ยนแปลงโครงสร้างบ่อย ๆ ไม่ต้องมากำหนด คอลัมน์ไว้ก่อน ส่วนที่เป็น RabbitMQ เหมาะสำหรับจัดการการคุยกันด้วยข้อความของระบบต่าง ๆ เหมาะสำหรับระบบที่ต้องการการส่งข้อความแบบ asynchronus ส่วน MySQL และ PostgreSQL จะเหมาะสำหรับงานที่ต้องการความสม่ำเสมอ มีโครงสร้างชัดเจน และ มีความสัมพันธ์ของข้อมูล โอเค! เราได้รู้จักกับฐานข้อมูลทั้ง 4 คร่าว ๆ มาแล้ว เราไปดูความสามารถความเจ๋งที่เป็นแบบ Database as a Service กันต่อ!

การใช้งาน MongoDB แบบ Database as a Service

หากเราพูดถึง MongoDB ที่ให้บริการบนคลาวด์จะมีบริการชื่อว่า “MongoDB Atlas” เป็นบริการ DBaaS ที่ช่วยให้เราสามารถใช้งาน MongoDB บนคลาวด์ได้ง่าย ๆ เพียงแค่สมัครใช้งาน และตั้งค่านิดหน่อยเราก็สามารถเชื่อมต่อกับฐานข้อมูลได้แล้ว 

การใช้งาน MongoDB Atlas ในรูปแบบ Database as a Service (DBaaS) มีหลาย use case ที่สามารถนำไปประยุกต์ใช้ได้  ไม่ว่าจะเป็นการทำ E-commerce Application ที่เราสามารถใช้ MongoDB Atlas สำหรับเก็บข้อมูลสินค้า (Product), ข้อมูลการสั่งซื้อ (Order), และข้อมูลลูกค้า (Customer) โดยที่เราไม่ต้องกำหนดโครงสร้างในรูปแบบตารางไว้ก่อน ใช้โครงสร้าง Document Base ที่ยืดหยุ่นกว่าและใช้ร่วมกับ Atlas Search เพื่อค้นหาสินค้าได้อย่างรวดเร็วและมีประสิทธิภาพ

แถมเรายังใช้ฟีเจอร์ sharding ของ MongoDB เพื่อรองรับปริมาณข้อมูลและการเข้าถึงที่เพิ่มขึ้นเรื่อย ๆ ได้อีกด้วย

ต่อมาลองมาดูฝั่ง IoT Data Storage กันบ้างเราสามารถเก็บและวิเคราะห์ข้อมูลที่ส่งมาจากอุปกรณ์ IoT หลายล้านตัวได้แบบเรียลไทม์ ข้อมูลที่มีอยู่บนนี้ได้มีการออกแบบ collection ให้รองรับการเขียน timestamp ข้อมูลได้อย่างรวดเร็ว มี MongoDB Aggregation Framework เพื่อประมวลผลและวิเคราะห์ข้อมูลแบบเรียลไทม์ พร้อมทั้งสามารถเอาไปต่อกับเครื่องมือ data visualization อย่าง Grafana หรือ Tableau ได้

ตัวอย่างสุดท้ายกับระบบ Content Management System (CMS) ที่ต้องมีการจัดการกับเนื้อหาสำหรับเว็บไซต์ที่รองรับเรื่องของการสร้างบทความ รูปภาพ และสื่อมัลติมีเดียต่าง ๆ เราสามารถใช้ MongoDB Atlas ในการจัดการเนื้อหาที่มีโครงสร้างไม่แน่นอนและสามารถเปลี่ยนแปลงได้ตลอดเวลา

พร้อมทั้งใช้ indexing และ replication เพื่อเพิ่มประสิทธิภาพในการเข้าถึงและความเสถียร

หากใครอยากเริ่มต้นใช้งาน MongoDB Atlas แบบไว ๆ Cloud HM ของเราก็มีบทความที่เข้าใจง่ายสามารถอ่านเพิ่มเติมได้ที่ลิงก์นี้ https://blog.cloudhm.co.th/intro-to-mongodb/

การใช้งาน RabbitMQ แบบ Database as a Service

สำหรับ RabbitMQ เป็นระบบ messaging broker ที่ช่วยให้การส่งและรับข้อความระหว่างโปรแกรมที่แตกต่างกันในระบบ microservice เป็นไปได้อย่างมีประสิทธิภาพ โดยมันจะทำงานตามรูปแบบการสื่อสารแบบ asynchronous และช่วยจัดการกับ message queue ทำให้สามารถรับและส่งข้อมูลได้แม้โปรแกรมที่สื่อสารกันจะไม่ได้รันอยู่พร้อมกัน

แต่เมื่อเราพูดถึง RabbitMQ ในรูปแบบของ Database as a Service (DBaaS) มันจะหมายถึงการให้บริการ RabbitMQ ผ่าน cloud service provider โดยสำหรับ RabbitMQ จะมีผู้ให้บริการชื่อว่า CloudAMQP เป็นบริการ RabbitMQ แบบ Database as a Service (DBaaS) ที่ให้บริการโดยบริษัท 84codes AB ซึ่งเชี่ยวชาญในด้านการให้บริการ RabbitMQ บนคลาวด์ CloudAMQP ออกแบบมาเพื่อให้ผู้ใช้งานสามารถใช้งาน RabbitMQ ได้อย่างสะดวกสบายและมีประสิทธิภาพ โดยไม่ต้องกังวลเกี่ยวกับการตั้งค่า การดูแลรักษา และสเกลระบบ RabbitMQ ด้วยตัวเอง ซึ่งมี use case การใช้งาร RabbitMQ ในรูปแบบ Database as a Service (DBaaS) ได้หลายรูปแบบเช่น 

Queueing Task for Background Processing ด้านการทำงานที่ต้องใช้เวลาในการประมวลผลนาน หรือการทำงานที่ไม่จำเป็นต้องทำทันที เช่น การส่งอีเมลยืนยันการสมัครสมาชิก เราจะมี solution ในการทำดังนี้

  1. Producer Service: จะรับ request จากผู้ใช้ในการสมัครสมาชิกและสร้างข้อความที่มีข้อมูลผู้ใช้
  2. RabbitMQ: ทำการจัดเก็บข้อความที่ได้รับใน queue
  3. Consumer Service: ทำงานใน background ดึงข้อความจาก queue และดำเนินการส่งอีเมลยืนยัน

หรือว่าจะเป็น Distributed Systems Coordination การประสานงานระหว่างบริการต่าง ๆ ในระบบที่กระจายกันอยู่ เช่น การประมวลผลข้อมูลที่ต้องผ่านหลายขั้นตอน  เราจะมี solution ในการทำดังนี้

1. Service A ส่งข้อความเมื่อประมวลผลเสร็จสิ้น

2. RabbitMQ: ส่งข้อความต่อไปยัง queue ที่ใช้โดย Service B

3. Service B: รับข้อความและดำเนินการขั้นตอนถัดไป

เหล่านี้จะเป็นตัวอย่างของการใช้ RabbitMQ ในรูปแบบ DBaaS ที่สามารถเอา use case ต่าง ๆ ของระบบที่ต้องการการสื่อสารแบบ asynchronous หรือการทำงานร่วมกันของหลาย ๆ บริการในระบบเดียวกันมาใช้โดยที่เราไม่ต้องมาจัดการ Infrastructure ของ RabbitMQ เองเลย

การใช้งาน MySQL และ PostgreSQL แบบ Database as a Service

MySQL และ PostgreSQL สำหรับการใช้งานในรูปแบบ DBaaS ผมขออธิบายไปพร้อม ๆ กันเลยเพราะทั้งสองตัวเป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ซึ่งใช้ SQL ในการจัดการและคิวรีข้อมูลเหมือนกัน ลักษณะการใช้งานและฟีเจอร์ก็คล้ายกัน ได้รับความนิยมสูงทั้งคู่ โดยในรูปแบบ DBaaS มีผู้ให้บริการ Cloud ที่รองรับ MySQL และ PostgreSQL อยู่หลายเจ้าด้วยกัน ไม่ว่าจะเป็น

1. Amazon Web Services (AWS) ที่มีทั้ง Amazon RDS (Relational Database Service) รองรับทั้ง MySQL และ PostgreSQL

2. Google Cloud Platform (GCP) จะมี Cloud SQL รองรับทั้ง MySQL และ PostgreSQL 

3. Microsoft Azure ที่มีทั้ง Azure Database for MySQL และ Azure Database for PostgreSQL

4. DigitalOcean บริการที่มีคือ DigitalOcean Managed Databases รองรับทั้ง MySQL และ PostgreSQL

5. IBM Cloud จะมีบริการที่ชื่อว่า IBM Cloud Databases รองรับ MySQL และ PostgreSQL

โดยตัวอย่าง solution ที่เราสามารถเอา MySQL และ PostgreSQL มาใช้งานมีดังนี้ 

ในระบบ Social Media Application เราสามารถจัดการโปรไฟล์ผู้ใช้ โพสต์ และการเชื่อมโยงระหว่างผู้ใช้ ได้โดยการใช้ MySQL/PostgreSQL  DBaaS และใช้ฟีเจอร์ Full-Text Search ใน MySQL/PostgreSQL  เพื่อการค้นหาข้อความในโพสต์และโปรไฟล์ หรือจะเป็นด้านการทำ Data Analytics Platform ที่ต้องเก็บรวบรวมและวิเคราะห์ข้อมูลจากแหล่งข้อมูลต่าง ๆ เราสามารถใช้ MySQL/PostgreSQL สำหรับการเก็บข้อมูลจากแหล่งต่าง ๆ ใช้ฟีเจอร์ Partitioning และ Indexing เพื่อเพิ่มประสิทธิภาพในการค้นหาข้อมูลและการวิเคราะห์ เชื่อมต่อกับเครื่องมือ BI เช่น Tableau, Looker, หรือ Power BI เพื่อแสดงผลข้อมูลและทำการวิเคราะห์ได้

ซึ่งนอกจากที่เราจะใช้บริการในรูปแบบ DBaaS ของแต่เจ้าได้แล้ว ปัจจุบันจะมีเรื่องของเทรนด์การทำเว็บแอปให้รองรับรูปแบบของ Cloud Native ที่อาจจะต้องมีการวางระบบ Infrastructure ที่ซับซ้อนมีการใช้เครื่องมือในการจัดการคอนเทนเนอร์อย่าง Kubernetes ที่มีโหนดหลาย ๆ โหนดเพื่อรองรับผู้ใช้งานจำนวนมาก ๆ ได้ แต่การเซ็ตระบบแบบนี้ขึ้นมาไม่ใช่เรื่องง่ายเลย เพราะต้องใช้บุคคลากรที่มีความเชี่ยวชาญสูง ซึ่งการมีคนสกิลระดับนี้อยู่ในองค์กรนั้นหายากมาก ๆ โดยปัญหาเหล่านี้สามารถแก้ได้โดยการเลือกใช้บริการคลาวด์ที่มีผู้ให้บริการครบครันในด้านนี้ ตัวอย่างเช่น เราสามารถใช้ Tanzu Data Services ที่เป็นแพลตฟอร์มที่มีบริการทั้งเรื่องของการ Caching, In-memory Database, Streaming Service รวมถึงรองรับฐานข้อมูล NoSQL อย่าง MongoDB และ SQL อย่าง PostgresSQL/MySQL Database และเมื่อเราใช้ร่วมกับ Tanzu Kubernetes Operation เราสามารถย้าย Workload ได้อย่างง่ายดาย ซึ่งบริการสามารถใช้ได้ทั้งแบบ VM และ Container แต่ทั้งสองแบบจะมีขั้นตอน วิธีการใช้งานที่ต่างกันออกไป แต่แน่นอนว่าใน VMware Tanzu  จะมีบริการ DBaaS แบบ fully-managed ที่รองรับ PostgreSQL, MySQL และ MongoDB เอาไว้ให้เราใช้งาน ทำให้เราสามารถพัฒนาซอฟต์แวร์ deploy และ manage แอปพลิเคชันบนคลาวด์ได้อย่างรวดเร็วและง่ายดาย 

ภาพจาก https://www.techtalkthai.com/cloud-hm-database-as-a-service-by-vmware-tanzu/

ทั้งหมดนี้ไม่ว่าจะเป็นการใช้งาน VMware Tanzu สำหรับบริการแบบ DBaaS และการจัดการแอปพลิเคชันแบบ Cloud Native บน Kubernetes อย่าง Tanzu Kubernetes Operation 

ภาพจาก https://www.techtalkthai.com/cloud-hm-database-as-a-service-by-vmware-tanzu/

จำเป็นต้องใช้บุคคลากรที่มีความเชี่ยวชาญเกี่ยวกับ Kubernetes และ Tanzu SQL ซึ่งในปัจจุบันค่อนข้างหายาก แต่ที่ Cloud HM เราเป็นพาร์ทเนอร์สำคัญของ VMware ในประเทศไทย ที่การันตีคุณภาพด้วยใบรับรองจาก VMware โดยตรง มีการดูแลด้าน Data Privacy หากต้องการให้ข้อมูลของคุณทำงานอยู่แค่ในประเทศ ข้อมูลของคุณก็จะประมวลผลภายในประเทศเท่านั้นภายใต้การดูแลจาก Cloud HM พร้อมทั้งทีม support ที่พร้อมดูแลได้ตลอดแบบ 24*7 ด้วยภาษาไทย การันตีระบบด้วย SLA 99.99% มีการป้องกันในระดับการเก็บข้อมูล การจัดส่งข้อมูล รวมไปถึงการประมวลผลข้อมูล และสุดท้าย Cloud HM

ของเรายังมีหน้า Data Solutions สำหรับการบริหารจัดการ DBaaS ได้อย่างง่ายดายอีกด้วย 

หากสนใจเรื่องของการเพิ่มประสิทธิภาพการทำงานของแอปพลิเคชันด้วย Database as a Service จาก Cloud HM สามารถอ่านเพิ่มเติมได้ที่ https://www.techtalkthai.com/cloud-hm-database-as-a-service-by-vmware-tanzu/

สนใจการใช้บริการฐานข้อมูลบนคลาวด์อย่างมีประสิทธิภาพกับทาง Cloud HM ของเรา สามารถติดต่อเราได้ที่ https://www.cloudhm.co.th/contact/