Cloud
น้องๆ เคยปวดหัวกับการ setup database server เองไหม? สมัยผมทำร้านเน็ต SiamCafe เนี่ย ต้องมานั่งลง OS, ติดตั้ง MongoDB, config firewall โอ๊ย! ปวดหัวสุดๆ Mongodb Atlas เนี่ยแหละ คือพระเอกขี่ม้าขาวมาช่วยเรา
Mongodb Atlas มันคือ Cloud Database Service ที่จัดการทุกอย่างให้เราหมดเลย ตั้งแต่เรื่อง Server, Security, Backup, Scaling ไม่ต้องปวดหัวอะไรทั้งนั้น แค่คลิกๆ ก็ได้ Database พร้อมใช้ แถมยังเข้าถึงได้จากทุกที่ที่มี Internet นี่แหละคือความสำคัญของมัน ชีวิตง่ายขึ้นเยอะ!
ก่อนจะไปลุยกัน น้องๆ ต้องเข้าใจศัพท์พื้นฐานพวกนี้ก่อนนะ จะได้คุยกับพี่รู้เรื่อง
JSON เนี่ยสำคัญนะ ลองดูตัวอย่าง:
{
"name": "น้องบอม",
"age": 20,
"city": "กรุงเทพ"
}
เห็นไหม? มันคือ Key-Value Pair ง่ายๆ นี่แหละ
Atlas มีให้ลองใช้ฟรีนะ แต่ก็มีข้อจำกัดอยู่บ้าง ถ้า project น้องใหญ่ขึ้น ก็ค่อย upgrade เอาตามความเหมาะสม
มาๆ เดี๋ยวพี่สอนวิธีเริ่มต้นใช้งาน Mongodb Atlas แบบ Step-by-Step เลย
ตัวอย่าง Connection String:
mongodb+srv://<username>:<password>@<cluster-name>.mongodb.net/<database-name>?retryWrites=true&w=majority
อย่าลืมเปลี่ยน <username>, <password>, <cluster-name>, และ <database-name> ให้ถูกต้องนะ
พี่จะยกตัวอย่างการใช้งานผ่าน Node.js นะ น้องๆ ต้องติดตั้ง mongodb package ก่อน:
npm install mongodb
แล้วก็เขียน Code แบบนี้:
const { MongoClient } = require('mongodb');
const uri = "mongodb+srv://<username>:<password>@<cluster-name>.mongodb.net/<database-name>?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
async function run() {
try {
await client.connect();
const database = client.db("testdb");
const collection = database.collection("users");
// Insert a document
const doc = { name: "น้องบอม", age: 20, city: "กรุงเทพ" };
const result = await collection.insertOne(doc);
console.log(`A document was inserted with the _id: ${result.insertedId}`);
} finally {
await client.close();
}
}
run().catch(console.dir);
Code นี้จะ Connect ไปที่ Database, Insert Document ใหม่, แล้วก็ Close Connection
Atlas ไม่ได้มีเจ้าเดียวในตลาดนะ มี Database as a Service (DBaaS) เจ้าอื่นๆ อีกเยอะ แต่ละเจ้าก็มีข้อดีข้อเสียต่างกัน
| DBaaS Provider | ข้อดี | ข้อเสีย | เหมาะกับใคร |
|---|---|---|---|
| Mongodb Atlas | ใช้งานง่าย, Scale ได้ดี, มี Free Tier | ราคาแพงเมื่อ Scale, Vendor Lock-in | มือใหม่, Startup, Project ที่ต้องการความรวดเร็ว |
| Amazon RDS | Integration กับ AWS ecosystem ดี, มี Database ให้เลือกเยอะ | ซับซ้อน, ต้องมีความรู้เรื่อง AWS พอสมควร | คนที่ใช้ AWS อยู่แล้ว, ต้องการ Database ที่หลากหลาย |
| Google Cloud SQL | Integration กับ Google Cloud Platform ดี, ราคาค่อนข้างถูก | Feature น้อยกว่า RDS, Vendor Lock-in | คนที่ใช้ Google Cloud Platform อยู่แล้ว, ต้องการความคุ้มค่า |
เลือกอันที่เหมาะกับ Project ของน้องๆ นะ แต่ถ้าไม่รู้จะเริ่มยังไง พี่แนะนำ Atlas ก่อนเลย ง่ายดี
อย่าลืมแวะไปอ่าน Blog ของเรานะ SiamCafe Blog มีบทความดีๆ อีกเยอะเลย
หวังว่าบทความนี้จะเป็นประโยชน์นะ ถ้ามีคำถามอะไร ถามมาได้เลย
และอย่าลืมติดตาม SiamCafe Blog เพื่ออัพเดทข่าวสาร IT ใหม่ๆ นะครับ
เอาล่ะน้องๆ มาถึงส่วนที่สำคัญที่สุดแล้ว จากประสบการณ์ทำร้านเน็ตมาตั้งแต่ยุค dial-up ยัน fiber optic พี่ขอบอกเลยว่าเรื่อง Cloud เนี่ยมันไม่ได้ง่ายอย่างที่คิดนะ มันมีอะไรที่ต้องระวังเยอะแยะ
สมัยก่อนตอนทำร้านเน็ต Server พังทีนึงนี่แทบจะลงไปดิ้นกับพื้น แต่พอมาใช้ Cloud มันก็ไม่ได้แปลว่าทุกอย่างจะปลอดภัย 100% นะเว้ยเฮ้ย! มันก็ยังมีเรื่องให้ปวดหัวอยู่ดี แต่ปวดหัวแบบคนรวยอ่ะนะ (ฮา) มาดูกันว่ามีอะไรที่ต้องระวังบ้าง
ย้ำกันสามรอบเลยน้อง! เรื่อง Backup นี่สำคัญสุดๆ อย่าคิดว่า "เอาน่า Cloud มันคงไม่พังง่ายๆ หรอก" เพราะพี่เคยเจอมาแล้ว Server ของ Amazon (ใช่ Amazon เลย!) เจ๊งไปเฉยๆ ข้อมูลหายเกลี้ยง โชคดีที่พี่ Backup ไว้ เลยรอดตัวไป
ดังนั้น ทำ Backup เป็นประจำ และเก็บ Backup ไว้หลายที่ ทั้งใน Cloud (คนละ Region ด้วยนะ) และ Offsite (เช่น External Harddisk ที่บ้าน) จะช่วยเซฟชีวิตน้องได้เยอะ
อย่าคิดว่า Cloud มันจะดูแลตัวเองได้ เราต้องคอย Monitoring ดูตลอดว่า CPU, Memory, Disk I/O มันเป็นยังไงบ้าง ถ้ามันเริ่มผิดปกติ เราจะได้รู้ตัวทัน
สมัยก่อนตอนทำร้านเน็ต พี่ใช้โปรแกรม NetLimiter ดูว่าเครื่องไหนโหลดบิทอยู่ (ฮา) แต่ตอนนี้เรามีเครื่องมือ Monitoring เจ๋งๆ เยอะแยะ เช่น Prometheus, Grafana หรือ CloudWatch ของ AWS เอง เลือกใช้ตามสะดวกเลย
เรื่อง Security นี่สำคัญไม่แพ้ Backup เลยนะน้อง! Cloud เนี่ยมันเปิดให้คนทั้งโลกเข้ามาได้ ถ้าเราไม่ป้องกันให้ดี Hacker ก็พร้อมจะบุกเข้ามาขโมยข้อมูลของเราได้ทุกเมื่อ
ดังนั้น ตั้ง Password ให้แข็งแรง (ใช้ Password Manager เถอะ), เปิด Two-Factor Authentication, Update Software เป็นประจำ, และใช้ Firewall ให้เป็นประโยชน์
ตัวอย่างการตั้งค่า Firewall ใน MongoDB Atlas:
// Allow access from specific IP address only
db.createUser(
{
user: "myUser",
pwd: "mySecretPassword",
roles: [ { role: "readWrite", db: "myDatabase" } ],
authenticationRestrictions: [ { clientSource: [ "192.168.1.100/32" ] } ]
}
)
Cloud เนี่ยมันสะดวกก็จริง แต่มันก็กินเงินเราเก่งมาก ถ้าเราไม่ระวัง อาจจะโดนบิลค่า Cloud เป็นหมื่นเป็นแสนได้ง่ายๆ
ดังนั้น หมั่นตรวจสอบการใช้งาน CPU, Memory, Disk I/O, Network Traffic เป็นประจำ ถ้าเราไม่ได้ใช้งานอะไร ก็ปิดมันซะ หรือปรับขนาด Instance ให้เล็กลง
พี่เคยเจอเคสน้องคนนึง ลืมปิด Instance ทิ้งไว้ โดนบิลไปหลายหมื่นบาท ร้องไห้ขี้มูกโป่งเลย ดังนั้น ระวังกันด้วยนะน้อง!
MongoDB Atlas มีระบบ Security ที่แข็งแกร่ง แต่ก็ไม่ได้แปลว่ามันจะปลอดภัย 100% เราต้องตั้งค่า Security ให้ดีด้วย เช่น ตั้ง Password ให้แข็งแรง, เปิด Two-Factor Authentication, และใช้ Firewall ให้เป็นประโยชน์
เหมาะมาก! เพราะเราไม่ต้องลงทุนซื้อ Server เอง และไม่ต้องดูแล Server เอง MongoDB Atlas จัดการให้หมด เราแค่จ่ายเงินตามที่เราใช้งานจริง
ขึ้นอยู่กับการใช้งานของเรา ถ้าเราใช้งานน้อย ก็ไม่แพง แต่ถ้าเราใช้งานเยอะ ก็อาจจะแพงได้ ดังนั้น ต้องวางแผนการใช้งานให้ดี และหมั่นตรวจสอบค่าใช้จ่ายเป็นประจำ
ไม่ยากอย่างที่คิด MongoDB Atlas มีเครื่องมือช่วย Migration ให้เราใช้งานได้ง่ายๆ แต่ก็ต้องศึกษาขั้นตอนการ Migration ให้ดีก่อน เพราะถ้าทำผิดพลาด อาจจะทำให้ข้อมูลเสียหายได้
MongoDB Atlas เป็น Cloud Database ที่น่าสนใจมากๆ เหมาะสำหรับธุรกิจทุกขนาด ตั้งแต่ธุรกิจขนาดเล็ก ไปจนถึงธุรกิจขนาดใหญ่ แต่เราต้องศึกษาการใช้งานให้ดี และต้องระวังเรื่อง Security และ Cost Optimization ด้วย
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะ ถ้ามีคำถามอะไรเพิ่มเติม ถามพี่ได้เลย!
อย่าลืมแวะไปอ่านบทความอื่นๆ ใน SiamCafe Blog นะน้อง และถ้าสนใจเรื่อง Forex ก็ลองดู iCafeForex ได้นะ