Serverless เหมาะสำหรับนักพัฒนาที่ต้องการสร้างแอปพลิเคชันแบบ end-to-end ด้วยค่าบำรุงรักษาและต้นทุนทางการเงินที่ต่ำที่สุด ฟังก์ชัน Serverless ช่วยให้คุณสามารถเรียกใช้โค้ดของคุณเองได้โดยไม่ต้องรักษาแบ็กเอนด์อินฟรา แต่การออกแบบเป็นแบบไร้สัญชาติ คุณจึงต้องมีที่เก็บข้อมูลภายนอก คำถามต่อไปคือฐานข้อมูลใดเหมาะสมที่สุดสำหรับเซิร์ฟเวอร์ไร้เซิร์ฟเวอร์ ข่าวดีก็คือผู้ขายฐานข้อมูลเห็นแนวโน้มแบบไร้เซิร์ฟเวอร์และพวกเขากำลังเปิดตัวข้อเสนอแบบไร้เซิร์ฟเวอร์หรือพยายามปรับผลิตภัณฑ์ของตน ในบทความนี้ อันดับแรกฉันจะแสดงรายการสิ่งที่ทำให้ฐานข้อมูลเหมาะสำหรับเซิร์ฟเวอร์ไร้เซิร์ฟเวอร์ จากนั้นฉันจะแสดงรายการฐานข้อมูลที่ฉันคิดว่าเป็นผู้สมัครเป็นฐานข้อมูลที่ยอดเยี่ยมสำหรับ Serverless
อะไรทำให้ฐานข้อมูลเหมาะสำหรับ Serverless
- ใช้งานง่าย: นักพัฒนารุ่นต่อไปไม่ต้องการใช้เวลาหลายวันและหลายสัปดาห์ในการเรียนรู้เทคโนโลยี พวกเขาต้องการเรียนรู้โดยการดูวิดีโอ youtube แทนการอ่านหน้าเอกสาร ดังนั้นฐานข้อมูลแบบไร้เซิร์ฟเวอร์จึงควรเรียบง่ายและใช้งานง่าย
- การกำหนดราคาแบบไร้เซิร์ฟเวอร์: ราคาควรมาตราส่วนเป็นศูนย์ ทำไมฉันต้องจ่ายเงินสำหรับสิ่งที่ฉันไม่ได้ใช้ โมเดลการกำหนดราคาตามแบนด์วิดท์หรือต่อคำขอนั้นไม่มีเซิร์ฟเวอร์เนื่องจากมีความสัมพันธ์กับการใช้งานที่แน่นอนของคุณ โดยส่วนตัวแล้วฉันชอบต่อคำขอมากกว่าเพราะประเมินได้ง่ายกว่าแบนด์วิดท์เสมอ
- ราคาเป็นมิตรกับนักพัฒนา: การกำหนดราคาควรเรียบง่ายโดยไม่มีกับดัก หน้าการกำหนดราคาบางหน้ามีความซับซ้อนมากจนมีบทความเพิ่มเติมและโพสต์ในบล็อกเพื่ออธิบายรายละเอียด ผู้ค้าบางรายมีเครื่องคิดเลขที่ซับซ้อน น่าเสียดายที่ผู้ขายส่วนใหญ่ชอบการกำหนดราคาที่ซับซ้อนเพื่อลดความเสี่ยง ดังนั้นจึงเป็นเรื่องยากที่จะคาดการณ์ได้ว่าคุณจะต้องจ่ายเงินเท่าไรก่อนที่จะเห็นใบแจ้งหนี้
- การเชื่อมต่อแบบไร้เซิร์ฟเวอร์: ฟังก์ชันแบบไร้เซิร์ฟเวอร์สามารถปรับขนาดเป็นหลายร้อยถึงหลายพันในไม่กี่วินาที หากฐานข้อมูลของคุณต้องการการเชื่อมต่อแบบถาวร คุณสามารถเข้าถึงขีดจำกัดการเชื่อมต่อของฐานข้อมูลของคุณได้อย่างง่ายดาย การเชื่อมต่อที่ใช้ HTTP ไม่มีปัญหาดังกล่าว เนื่องจากการเชื่อมต่อนั้นเบากว่าและโดยทั่วไปไม่มีข้อจำกัดดังกล่าว
- เวลาแฝงต่ำ: เวลาแฝงเพิ่มเติมคือต้นทุนในฟังก์ชันแบบไร้เซิร์ฟเวอร์ แต่ต้นทุนที่แท้จริงคือผู้ใช้ที่ไม่มีความสุขที่รออยู่ในเว็บไซต์ของคุณ
- การพกพา: หากคุณต้องการย้ายไปยังผู้ให้บริการระบบคลาวด์รายอื่น คุณต้องเขียนชั้นข้อมูลใหม่หรือไม่ หรือคุณสามารถทดสอบแอปพลิเคชันของคุณในแล็ปท็อปโดยไม่ต้องเชื่อมต่อกับฐานข้อมูลระยะไกล
- ความสม่ำเสมอ: โดยทั่วไปมีการแลกเปลี่ยนระหว่างความสม่ำเสมอและประสิทธิภาพ ฐานข้อมูลอยู่ในที่ต่างๆ บนสเปกตรัมความสอดคล้องและประสิทธิภาพ ฐานข้อมูลที่ดีควรกำหนดการรับประกันความสอดคล้องอย่างชัดเจน เพื่อให้ผู้ใช้ทราบถึงปัญหาและความเสี่ยงที่อาจเกิดขึ้น
- ความสามารถในการปรับขนาด: ฐานข้อมูลควรติดตามเมื่อแอปพลิเคชันของคุณเริ่มรับปริมาณงานสูง ตามหลักการแล้ว การปรับขนาดควรเป็นแบบอัตโนมัติหรือจัดการโดยผู้ให้บริการระบบคลาวด์ คุณไม่ควรกังวลเรื่องนี้
- เป็นมิตรกับขอบ: Cloudflare Workers และ Fasty Compute เป็นเทคโนโลยีสุดเจ๋งที่ช่วยให้คุณเรียกใช้ฟังก์ชันแบบไร้เซิร์ฟเวอร์ที่ขอบที่ใกล้กับผู้ใช้ของคุณมากที่สุด สิ่งเหล่านี้ต้องการการเชื่อมต่อแบบ REST แต่ยังรวมถึงฐานข้อมูลที่จำลองแบบทั่วโลกเพื่อลดเวลาแฝงให้เหลือน้อยที่สุด
- ทั่วโลก: เมื่อแอปพลิเคชันของคุณได้รับความนิยมไปทั่วโลก คุณต้องมีฐานข้อมูลที่ให้ประสิทธิภาพที่ดีทั่วโลก การจำลองแบบหลายภูมิภาคเป็นคุณสมบัติหลักในการเปิดใช้งานสิ่งนี้ แต่ระวังตรวจสอบราคา คุณลักษณะนี้อาจมีราคาแพง
ฐานข้อมูลที่ดีที่สุดสำหรับ Serverless?
ในส่วนนี้ ฉันจะแบ่งปันความประทับใจและข้อสังเกตจากการลองใช้ฐานข้อมูลต่อไปนี้ สิ่งเหล่านี้ไม่ได้ขึ้นอยู่กับการวิเคราะห์ทางวิทยาศาสตร์ แต่ฉันหวังว่าจะให้แนวคิดแก่คุณก่อนที่จะทำการวิเคราะห์เปรียบเทียบจริง
MongoDB (Atlas)
-
ใช้งานง่าย:MongoDB เป็นฐานข้อมูล NoSQL และที่เก็บเอกสารที่ได้รับความนิยมมากที่สุด API ของมันนั้นเรียบง่ายและเรียนรู้ได้ไม่ยากด้วยโมเดลข้อมูลแบบ JSON
-
การพกพา:ผู้ให้บริการระบบคลาวด์เกือบทั้งหมดมีผลิตภัณฑ์ฐานข้อมูลที่มี MongoDB API และคุณสามารถเรียกใช้ MongoDB ได้ด้วยตนเองในองค์กร จึงไม่มีปัญหาเรื่องการพกพา
-
MongoDB Atlas เพิ่งประกาศประเภทฐานข้อมูลแบบไร้เซิร์ฟเวอร์ ความประทับใจส่วนตัวของฉันคือมันเหมือนกับอินสแตนซ์ MongoDB ที่โฮสต์ภายใต้โมเดลการกำหนดราคาแบบไร้เซิร์ฟเวอร์ ตามที่เห็นในที่นี้ คุณลักษณะหลายอย่างไม่ได้รับการสนับสนุนสำหรับฐานข้อมูล Serverless รวมถึง Node.js SDK
-
การเชื่อมต่อแบบไร้เซิร์ฟเวอร์:MongoDB Atlas ไม่ได้ให้ API ที่ใช้ HTTP (เช่น REST) แก่คุณ คุณสามารถเชื่อมต่อถึงขีด จำกัด ได้อย่างง่ายดาย นั่นเป็นเหตุผลที่พวกเขาเผยแพร่บทความวิธีหลีกเลี่ยง https://docs.atlas.mongodb.com/best-practices-connecting-from-aws-lambda/
** _ (อัปเดต) MongoDB Atlas ได้เปิดตัว API ข้อมูลที่ใช้ HTTP _
คาสแซนดรา (Datastax Astra)
- Datastax Astra มี REST และ GraphQL API นอกเหนือจากไดรเวอร์ Cassandra ดั้งเดิม
- ใช้งานง่าย:สำหรับฉัน การเรียนรู้ Cassandra ยากกว่า MongoDB และ Redis อย่างไรก็ตาม ทีม Datastax ทำงานได้ดีกับคอนโซล มันใช้งานได้ง่ายมาก แต่ฉันยังจำได้ว่าฉันหลงทางในเอกสารที่มี REST API เวอร์ชันต่างๆ
- ราคาที่เป็นมิตรสำหรับนักพัฒนา:ราคาของ Datastax Astra ไม่ใช่เรื่องง่าย ทุกหน่วยคำนวณแยกกัน (อ่าน เขียน แบนด์วิดท์) และมีราคาแตกต่างกันขึ้นอยู่กับผู้ให้บริการคลาวด์และแม้แต่ภูมิภาค Datastax มีคำจำกัดความของหน่วยอ่าน/เขียน (RRU และ WRU) เป็นของตัวเอง
DynamoDB (AWS)
- ใช้งานง่าย:หากคุณเป็นผู้ใช้ AWS การเริ่มต้นและทำงานกับ DynamoDB เป็นเรื่องง่าย อย่างไรก็ตาม ฉันคิดว่า MongoDB มี API แบบสอบถามที่ง่ายกว่าและใช้งานง่ายกว่า
- การเชื่อมต่อแบบไร้เซิร์ฟเวอร์:การเชื่อมต่อ DynamoDB เป็นแบบ http คุณไม่มีปัญหาขีดจำกัดการเชื่อมต่อ
- การพกพา:ปัญหาที่ใหญ่ที่สุดอยู่ที่นี่แล้ว คุณไม่สามารถใช้ DynamoDB ได้ทุกที่ยกเว้น AWS
FaunaDB
- ความสม่ำเสมอ:น่าจะเป็น FaunaDB ดีที่สุดในรายการนี้ในแง่ของความสอดคล้อง รับประกันความสม่ำเสมอพร้อมกับการจำลองแบบทั่วโลก แต่ระวังว่าสิ่งนี้มาพร้อมกับค่าใช้จ่ายด้านประสิทธิภาพที่เพิ่มขึ้น พิจารณาว่าคุณต้องการความสม่ำเสมอที่แข็งแกร่งเช่นนี้หรือไม่
- ประสิทธิภาพ:มีเวลาในการตอบสนองสูงกว่าอื่นๆ เนื่องจากมีความสม่ำเสมอสูง
- ใช้งานง่าย:จริงๆ แล้ว FQL เป็นสิ่งที่ยากที่สุดสำหรับฉันในการเรียนรู้และใช้งาน แต่ FaunaDB ยังรองรับ GraphQL API ดังนั้นมันอาจจะง่ายกว่า
- การเชื่อมต่อแบบไร้เซิร์ฟเวอร์:ด้วยการเชื่อมต่อแบบ HTTP ทำให้ FaunaDB ไม่มีปัญหากับขีดจำกัดการเชื่อมต่อ
พุ่งขึ้น
- ใช้งานง่าย:Redis น่าจะเป็นวิธีที่ง่ายที่สุดในการเรียนรู้ API ในรายการนี้ Upstash ทำให้ใช้งานง่ายในระบบคลาวด์ด้วยอินเทอร์เฟซที่ใช้งานง่าย
- ราคาที่เป็นมิตรสำหรับนักพัฒนา:ราคา Upstash ขึ้นอยู่กับคำขอ นอกจากนี้ยังกำหนดราคาสูงสุด ดังนั้นจึงรับประกันได้ว่าคุณจะไม่จ่ายเงินเกินจำนวนที่กำหนดไว้
- ประสิทธิภาพ:ต้องขอบคุณพื้นที่จัดเก็บตามหน่วยความจำ Upstash ให้ตัวเลขเวลาแฝงที่ดีที่สุด ตรวจสอบสิ่งนี้เพื่อรับแนวคิด
- หากคุณต้องการความสามารถในการสืบค้นที่ซับซ้อน (การรวม ฯลฯ) โครงสร้างข้อมูล Redis อาจไม่สามารถใช้งานได้จริง คุณอาจต้องมีฐานข้อมูลที่รองรับ SQL ที่ดีกว่าในกรณีเช่นนี้
Firestore
- ใช้งานง่าย:Firestore เป็นหนึ่งในรายการที่ดีที่สุดในรายการนี้สำหรับหมวดหมู่นี้ UI และ API นั้นค่อนข้างใช้งานง่าย
- การพกพา:เช่นเดียวกับ DynamoDB Firestore มีปัญหาการล็อกผู้ขาย เป็นสิ่งที่ดีตราบเท่าที่คุณอยู่บน Google Cloud
- ประสิทธิภาพ:ฉันเคยได้ยินคำร้องเรียนเกี่ยวกับประสิทธิภาพของมันมาก่อน โดยส่วนตัวแล้วฉันพบว่าเวลาแฝงนั้นแย่กว่าตัวอื่นๆ ร่วมกับ FaunaDB จึงมีเครื่องหมายคำถามอยู่ที่นี่
ปิดคำ
ฉันเชื่อว่า Serverless คืออนาคตของการพัฒนา และมีการเปลี่ยนแปลงอย่างต่อเนื่องไปสู่การไร้เซิร์ฟเวอร์ Serverless ช่วยให้นักพัฒนาและบริษัทขนาดเล็กสร้างผลิตภัณฑ์ที่ปรับขนาดได้ด้วยงบประมาณที่จำกัด ฐานข้อมูลควรเป็นส่วนหนึ่งของการเปลี่ยนแปลงนี้ด้วยข้อเสนอที่สอดคล้องกับหลักการไร้เซิร์ฟเวอร์