การใช้ Firebase Serverless – แอปพลิเคชันมือถือและเว็บทำได้ง่าย

เผยแพร่แล้ว: 2022-03-11

แอปพลิเคชันมือถือและเว็บมักต้องการเซิร์ฟเวอร์ส่วนหลัง เว็บแอปพลิเคชันต้องการเว็บเซิร์ฟเวอร์เพื่อส่งเนื้อหา แอปพลิเคชันยังต้องจัดเก็บโปรไฟล์ผู้ใช้และสื่อ เช่น รูปภาพและวิดีโอ การสื่อสารระหว่างแอปพลิเคชันและเซิร์ฟเวอร์มักใช้ API ซึ่งมักจะเป็น REST

แอปพลิเคชันมีการเข้ารหัสในภาษาต่างๆ แอปพลิเคชัน iOS เขียนด้วยภาษา Swift หรือ Objective-C แอปพลิเคชัน Android เขียนด้วย Java หรือ Kotlin เว็บแอปพลิเคชันเขียนด้วย HTML, CSS, JavaScript และมักมีเฟรมเวิร์กที่ซับซ้อน เช่น Angular หรือ React นักพัฒนา Front-end จำเป็นต้องรู้ภาษาที่เกี่ยวข้องและเครื่องมือในการพัฒนาที่เกี่ยวข้อง

เซิร์ฟเวอร์ส่วนหลังเขียนด้วยภาษาต่างๆ เช่น Go, Java, PHP และ Python แต่ละภาษาเหล่านี้มีชุดไลบรารีของตัวเองเพื่ออำนวยความสะดวกในการเขียนแอปพลิเคชันที่ซับซ้อน

นักพัฒนาส่วนใหญ่ถือว่าตนเองเป็นนักพัฒนาส่วนหน้าหรือส่วนหลัง นักพัฒนาแบบฟูลสแตกที่เชี่ยวชาญทั้งสองบทบาทนั้นค่อนข้างหายาก

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

Firebase คืออะไร?

Firebase เริ่มต้นจากการเป็นสถาปัตยกรรมการส่งข้อความบนมือถือที่ Google ได้มา ตั้งแต่นั้นมาก็มีการพัฒนาให้เป็นชุดส่วนประกอบมากกว่า 25 รายการที่ทำงานร่วมกับแพลตฟอร์ม Google Cloud

Firebase ประกอบด้วยชุดพัฒนาซอฟต์แวร์ (SDK) ซึ่งช่วยให้นักพัฒนาอุปกรณ์เคลื่อนที่และเว็บสามารถเข้าถึงฟังก์ชันระบบคลาวด์ได้อย่างง่ายดาย ปลอดภัย และเชื่อถือได้ พวกเขาชดเชยการเชื่อมต่อเครือข่ายที่ไม่ดีโดยอัตโนมัติ มีเว็บคอนโซล Firebase สำหรับเปิดใช้งาน จัดการ และรักษาความปลอดภัยส่วนประกอบ นอกจากนี้ยังมีเครื่องมือบรรทัดคำสั่งและ REST API เพื่อการใช้งานในเชิงลึกยิ่งขึ้น

ส่วนประกอบ Firebase บางอย่างเป็นที่รู้จักดีกว่าส่วนประกอบอื่นๆ มีการขึ้นต่อกันเล็กน้อยระหว่างส่วนประกอบ ซึ่งช่วยให้สามารถใช้งานฟังก์ชันเพิ่มขึ้นได้ การรับรองความถูกต้องและการวิเคราะห์ Firebase นั้นใช้กันอย่างแพร่หลายที่สุด

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

แผนราคาและการเรียกเก็บเงินของ Firebase

แผนการเรียกเก็บเงิน Firebase พื้นฐานที่เรียกว่า Spark นั้นฟรี การใช้ทรัพยากรระบบคลาวด์มีข้อ จำกัด แต่ก็ค่อนข้างใจกว้าง เป็นไปได้ที่จะเรียกใช้แอปพลิเคชันที่มีขนาดเหมาะสมโดยไม่ต้องเสียค่าใช้จ่ายใดๆ

เว็บไซต์ที่มีเนื้อหาสูงสุด 1GB และการถ่ายโอนน้อยกว่า 10GB/เดือน สามารถโฮสต์ได้ภายใต้แผน Spark Firestore อนุญาตข้อมูลสูงสุด 1GB และปริมาณการใช้เครือข่ายสูงสุด 10GB/เดือน ขีดจำกัดที่เก็บข้อมูลบนคลาวด์มีข้อมูลสูงสุด 5GB และดาวน์โหลดสูงสุด 1GB/วัน

หากแอปพลิเคชันต้องการทรัพยากรเพิ่มเติม แผนการเรียกเก็บเงินแบบชำระเงิน เช่น จ่ายตามการใช้งานก็เป็นสิ่งจำเป็น ข้อจำกัดฟรีของแผน Spark ยังคงมีผลบังคับใช้ ค่าใช้จ่ายที่เรียกเก็บเงินได้ค่อนข้างต่ำ ดูราคาได้ที่หน้าราคา Firebase

เครื่องเสมือนที่ทำงานในระบบคลาวด์มีค่าใช้จ่ายในขณะที่กำลังทำงานอยู่ แม้ว่าจะไม่ได้ใช้งานก็ตาม โซลูชัน Firebase Serverless ปรับขนาดเป็นศูนย์ ซึ่งหมายความว่าทรัพยากรจะทำงานอย่างมีประสิทธิภาพเมื่อมีการใช้งานและไม่ต้องเสียค่าใช้จ่ายเมื่อไม่ได้ใช้งาน เหมาะอย่างยิ่งสำหรับการใช้งานสำหรับธุรกิจตามฤดูกาล เช่น การเช่าช่วงวันหยุดหรืองานตามกำหนดเวลา เช่น คอนเสิร์ต จะมีกิจกรรมมากมายตามมาด้วยการไม่ใช้งานหลายเดือน

วิธีการตั้งค่า Firebase

จำเป็นต้องมีบัญชีอีเมลสำหรับการตรวจสอบสิทธิ์ บัญชีอีเมลของ Google เป็นที่ต้องการ สามารถสร้างได้ที่ https://mail.google.com

ต้องมีบัญชี Google Cloud Platform (GCP) ด้วย ทดลองใช้งานฟรีได้ที่นี่ สิ่งนี้ให้เครดิต $300 แก่คุณ ซึ่งสามารถใช้ได้หนึ่งปี ต้องใช้บัตรเครดิตเป็นหลักฐานยืนยันตัวตน Google อาจเรียกเก็บเงิน $1 แล้วจึงคืนเงิน บัตรเครดิตจะถูกหักทุกเดือนหากเปิดใช้งานการเรียกเก็บเงินและใช้ทรัพยากรที่เรียกเก็บเงินได้ นอกจากนี้ยังมีบริษัทผู้ให้บริการของ Google ที่ทำหน้าที่เป็นสื่อกลางในการเรียกเก็บเงิน คุณจ่ายผู้ให้บริการสำหรับการใช้งานระบบคลาวด์และพวกเขาจ่าย Google พวกเขามีแผนการเรียกเก็บเงินของตนเองและอาจเสนอให้ทดลองใช้งานฟรี

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

โปรเจ็กต์ Firebase ก็เป็นโปรเจ็กต์ GCP เช่นกัน คุณสามารถสร้างโปรเจ็กต์ GCP และนำเข้าไปยัง Firebase หรือสร้างโปรเจ็กต์ Firebase ซึ่งจะสร้างโปรเจ็กต์ GCP ด้วย คอนโซล Firebase อยู่ที่นี่

จำเป็นต้องมีการตั้งค่าที่แตกต่างกันสำหรับแอปพลิเคชันประเภทต่างๆ หลักๆ คือ Android, iOS และเว็บแอปพลิเคชัน คำแนะนำในการตั้งค่ามีอยู่ในคู่มือ Firebase อย่างเป็นทางการ

เครื่องมือ Firebase Command Line Interface (CLI) จำเป็นสำหรับการดำเนินการบางอย่าง สิ่งเหล่านี้จำเป็นต้องติดตั้ง Node.js และเครื่องมือ npm หากทำงานบน macOS หรือ Linux คำสั่ง npm จะต้องรันด้วย sudo

sudo npm install -g firebase-tools

การตรวจสอบและการอนุญาต

การรับรองความถูกต้องของ Firebase อาจเป็นองค์ประกอบ Firebase ที่ใช้กันอย่างแพร่หลายมากที่สุด ผู้ใช้สามารถเลือกกลไกการพิสูจน์ตัวตนได้ตั้งแต่หนึ่งกลไกขึ้นไป เหล่านี้คือที่อยู่อีเมลและรหัสผ่าน หมายเลขโทรศัพท์ และผู้ให้บริการข้อมูลประจำตัวแบบรวมศูนย์ Google, Facebook, Twitter และ GitHub สามารถเปิดใช้งานกลไกการพิสูจน์ตัวตนจำนวนเท่าใดก็ได้

Firebase UI จะแจ้งให้ผู้ใช้ใช้กลไก:

การรับรองความถูกต้องของ Firebase

Firebase มีอินเทอร์เฟซผู้ใช้สำหรับการตรวจสอบสิทธิ์ที่สามารถเรียกใช้จากโค้ดสองสามบรรทัดในฝั่งไคลเอ็นต์ นอกจากนี้ยังมี API สำหรับการตรวจสอบสิทธิ์ด้วยตนเอง ในการพิสูจน์ตัวตนที่สำเร็จ โทเค็นข้อมูลประจำตัวจะถูกสร้างขึ้นซึ่งสามารถใช้สำหรับการตรวจสอบความถูกต้องส่วนหลัง

APIs อนุญาตให้ผู้ใช้ที่เป็นผู้ดูแลระบบสามารถจัดการผู้ใช้ทางโปรแกรมได้ การดำเนินงานรวมถึง:

  • การสร้าง อัปเดต และลบผู้ใช้
  • ค้นหาผู้ใช้ตามเกณฑ์การค้นหา เช่น ที่อยู่อีเมลหรือหมายเลขโทรศัพท์
  • เข้าถึงข้อมูล เช่น วันที่สร้างบัญชีและวันที่และเวลาเข้าสู่ระบบครั้งล่าสุด
  • ตรวจสอบที่อยู่อีเมลและหมายเลขโทรศัพท์โดยไม่ต้องใช้เวิร์กโฟลว์ที่มีอยู่

แอปพลิเคชันมือถือและเว็บส่วนใหญ่ต้องการให้ผู้ใช้จำนวนมากลงชื่อเข้าใช้แอปพลิเคชันของตน ตัวอย่างเช่น ใครก็ตามที่มีบัญชี Google Mail สามารถรับรองความถูกต้องของตนเองกับแอปพลิเคชันใดๆ ที่อนุญาตการตรวจสอบสิทธิ์ของ Google จำเป็นต้องมีรูปแบบการให้สิทธิ์เพื่อจำกัดการเข้าถึงแอปพลิเคชันให้กับผู้ใช้บางราย ซึ่งสามารถทำได้ง่ายโดยการจัดเก็บการเชื่อมโยงระหว่างที่อยู่อีเมลและบทบาทการเข้าถึงในการจัดเก็บข้อมูล เมื่อตรวจสอบความถูกต้องสำเร็จ ที่อยู่อีเมลจะถูกค้นหาในที่จัดเก็บข้อมูล หากผู้ใช้มีบทบาทที่ถูกต้อง การเข้าถึงจะได้รับ; มิฉะนั้น ผู้ใช้จะถูกบังคับให้ออกจากระบบ

Firebase Hosting

โฮสติ้ง Firebase ช่วยให้สามารถโฮสต์เนื้อหาเว็บแบบคงที่ซึ่งรวมถึง JavaScript ในระบบคลาวด์โดยไม่ต้องใช้เว็บเซิร์ฟเวอร์ เนื้อหาถูกแคชไว้ที่ขอบของเครือข่ายการจัดส่งเนื้อหาทั่วโลก (CDN) ซึ่งช่วยให้เข้าถึงเนื้อหาได้อย่างรวดเร็วจากทุกที่ในโลก

สามารถโฮสต์เว็บไซต์ได้ตั้งแต่หนึ่งเว็บไซต์ขึ้นไปโดยเพิ่มลงในส่วนการโฮสต์ของโปรเจ็กต์ Firebase ในคอนโซล Firebase เนื้อหาถูกส่งผ่าน SSL และให้ URL สอง URL ของแบบฟอร์ม [https://site-name.web.app] และ https://site-name.firebaseapp.com โดยที่ site-name เป็นชื่อโปรเจ็กต์หรือ ชื่อไซต์ที่ผู้ใช้ระบุ

ง่ายมากที่จะมีไซต์ที่โฮสต์จากชื่อโดเมนของคุณเองโดยที่คุณสามารถเปลี่ยนระเบียน DNS สำหรับโดเมนได้ คุณเพิ่มชื่อโดเมนของคุณลงในไซต์บนคอนโซล Firebase จากนั้น คุณจะได้รับระเบียน DNS TXT ซึ่งคุณต้องเพิ่มใน DNS ของโดเมนเพื่อพิสูจน์ให้ Google ทราบว่าคุณเป็นเจ้าของโดเมน เมื่อมองเห็นระเบียน TXT แล้ว คุณสามารถรับระเบียน DNS A สำหรับไซต์ได้ ใบรับรอง SSL ได้รับการจัดเตรียมโดยอัตโนมัติสำหรับไซต์ เมื่อเตรียมใช้งานใบรับรองแล้ว ไซต์จะพร้อมใช้งานทั่วโลก โดยหลักการแล้ว อาจใช้เวลาหลายชั่วโมงในการอัปเดต DNS และการเตรียมใบรับรอง ในทางปฏิบัติ กระบวนการนี้สามารถทำได้ภายใน 20 นาที

ในการเพิ่มเนื้อหาในการโฮสต์ ก่อนอื่น ให้สร้างไดเร็กทอรีสำหรับไซต์และ cd จากบรรทัดคำสั่ง ถัดไป เข้าสู่ระบบ Firebase และเริ่มต้นไดเรกทอรีโครงการ

 firebase login firebase init

คุณจะได้รับแจ้งให้เลือกโครงการและต้องการบริการลูกค้าใด สามารถเพิ่มบริการได้ในภายหลังและไม่จำเป็นต้องเลือกในขั้นตอนนี้

สร้างไฟล์ชื่อ firebase.json ซึ่งกำหนดไดเรกทอรีรากของเว็บไซต์และไฟล์ที่จะแยกออก คุณจะต้องมีไฟล์ .gitignore เพื่อแยกไฟล์ออกจากการควบคุมเวอร์ชัน

 { "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ] } }

จากนั้นคัดลอกเนื้อหาคงที่ไปยังไดเร็กทอรีสาธารณะ สุดท้าย ปรับใช้ไซต์ในคลาวด์

 firebase deploy

หากต้องการเปลี่ยนเนื้อหาเว็บ เพียงแค่เปลี่ยนไฟล์เนื้อหาและออกคำสั่งปรับใช้ การปรับใช้แต่ละครั้งจะปรากฏเป็นเวอร์ชันในคอนโซล Firebase คุณสามารถย้อนกลับเป็นเวอร์ชันก่อนหน้าได้ด้วยคลิกเดียว

Firebase Hosting ยังเขียน URI ใหม่เป็นไฟล์, Cloud Functions และ Cloud Run ได้อีกด้วย สิ่งนี้ทำให้สิ่งต่าง ๆ ง่ายขึ้นอย่างมาก เนื่องจากไม่จำเป็นต้องกำหนดโดเมนให้กับบริการเหล่านี้ การเขียนซ้ำถูกกำหนดโดยการเพิ่มส่วนการเขียนซ้ำไปยังส่วนการโฮสต์ของ firebase.json การปรับใช้โฮสต์จะล้มเหลวหากไม่มีบริการ

 { "hosting": { "public": "public", "rewrites": [ { "source": "/xxx", "destination": "/profile.html" }, { "source": "/yyy", "function": "profile" }, { "source": "/api{,/**}", "run": { "serviceId": "cloud-api", "region": "europe-west1" } } ] } }

การจัดเก็บข้อมูล

Firebase จัดเตรียม API ของไคลเอ็นต์สำหรับการเข้าถึงการจัดเก็บข้อมูลบนคลาวด์ การจัดเก็บมีสามประเภท:

  • ฐานข้อมูลเรียลไทม์
  • Cloud Firestore
  • การจัดเก็บเมฆ

ซึ่งช่วยให้ไคลเอนต์มือถือและเว็บสามารถจัดเก็บและดึงข้อมูลโดยไม่ต้องใช้เซิร์ฟเวอร์

ฐานข้อมูลเรียลไทม์

ฐานข้อมูลเรียลไทม์เป็นฐานข้อมูล NoSQL ที่โฮสต์บนคลาวด์ ข้อมูลในฐานข้อมูลเรียลไทม์จะซิงโครไนซ์โดยอัตโนมัติในแบบเรียลไทม์กับอุปกรณ์ที่เชื่อมต่อทั้งหมด มันทำงานข้ามแพลตฟอร์มไปยัง Android, iOS และเว็บ ข้อมูลถูกจัดเก็บเป็นโครงสร้างแบบต้นไม้ JSON สามารถตั้งค่ากฎความปลอดภัยเพื่อควบคุมการเข้าถึงการอ่านและเขียนข้อมูล

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

ข้อมูลจะถูกอ่านโดยแอปพลิเคชันโดยใช้ตัวฟัง ผู้ฟังฟังบนโหนดในแผนผัง JSON เมื่อใดก็ตามที่มีการเปลี่ยนแปลงข้อมูลบนคอนโซลหรือโดยผู้ใช้รายอื่น การเรียกกลับของ listener จะถูกเรียกด้วยค่าข้อมูลใหม่ ฐานข้อมูลเรียลไทม์ยังรองรับการสืบค้น แบบสอบถามแต่ละรายการส่งคืนโหนดและโหนดย่อยทั้งหมด

กฎความปลอดภัยโดยค่าเริ่มต้นไม่อนุญาตให้เข้าถึงข้อมูล คุณสามารถเพิ่มกฎได้ทั่วโลกหรือในแต่ละโหนดของออบเจ็กต์ JSON กฎความปลอดภัยควบคุมการเข้าถึงข้อมูลแบบอ่านและเขียน และสามารถตรวจสอบความถูกต้องได้

ฐานข้อมูลเรียลไทม์เหมาะที่สุดสำหรับข้อมูลชิ้นเล็กๆ ที่ไม่ต้องการโครงสร้างข้อมูลที่ซ้อนกันอย่างลึกล้ำ ขีด จำกัด ฟรีคือ 1GB ของข้อมูล

Cloud Firestore

Cloud Firestore ถูกมองว่าเป็นการแทนที่ฐานข้อมูลเรียลไทม์ มันขยายการทำงานของฐานข้อมูลเรียลไทม์ ข้อมูลไม่อยู่ในแผนผัง JSON แต่เป็นการรวบรวมเอกสารตามลำดับชั้น เอกสารแต่ละฉบับประกอบด้วยชุดของคู่คีย์-ค่าและเอกสารย่อยที่ไม่บังคับ แบบสอบถามช่วยให้การกรองและการเรียงลำดับที่ซับซ้อนมากขึ้น และส่งคืนเฉพาะเอกสารที่สมบูรณ์เท่านั้น แบบสอบถามไม่ส่งคืนเอกสารย่อย

Cloud Firestore จะเข้ามาแทนที่ Cloud Datastore ในไม่ช้า สามารถเรียกใช้ในโหมด Datastore หรือในโหมดเนทีฟ แอปพลิเคชัน Datastore ทั้งหมดจะถูกย้ายไปยัง Cloud Firestore โดยอัตโนมัติ

Cloud Firestore เหมาะที่สุดกับข้อมูลขนาดค่อนข้างเล็ก มันสามารถมีโครงสร้างข้อมูลที่ซ้อนกันอย่างลึกล้ำ ขีด จำกัด ฟรีคือ 1GB ของข้อมูล

การจัดเก็บเมฆ

Cloud Storage ใช้สำหรับจัดเก็บไฟล์ต่างๆ เช่น รูปภาพและวิดีโอคลิป ไคลเอ็นต์มือถือและเว็บสามารถใช้ Firebase เพื่ออัปโหลดและดาวน์โหลดไฟล์ได้โดยตรงจากระบบคลาวด์โดยไม่ต้องใช้เซิร์ฟเวอร์แบ็คเอนด์ ขีด จำกัด ฟรีคือ 5GB ของข้อมูล

ฟังก์ชั่นคลาวด์

Cloud Functions เป็นเทคโนโลยีที่สำคัญสำหรับการสร้างแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ สามารถเขียนฟังก์ชันระบบคลาวด์ใน JavaScript, TypeScript, Python หรือ Go ซึ่งปรับใช้โดยตรงใน Google Cloud ฟังก์ชันถูกทริกเกอร์โดยคำขอ HTTP หรือโดยเหตุการณ์ในระบบคลาวด์ เช่น การเขียนไปยัง Cloud Storage

ฟังก์ชันระบบคลาวด์สามารถจัดการคำขอได้ครั้งละหนึ่งคำขอเท่านั้น แต่ระบบคลาวด์จะปรับขนาดฟังก์ชันโดยอัตโนมัติด้วยการทำซ้ำ Cloud Function ที่เขียนด้วย Python ใช้ไลบรารี Flask เพื่อจัดการคำขอ HTTP ฟังก์ชันรับวัตถุคำขอเป็นพารามิเตอร์และส่งคืนเนื้อหาการตอบกลับ

Python Cloud Function อย่างง่ายต้องการไดเร็กทอรีการทำงาน และจุดเริ่มต้นจะไปอยู่ในไฟล์ main.py

 def simple_cloud_function(request): return "It worked"

การพึ่งพาได้รับการจัดการโดย pip และไปที่ไฟล์ที่เรียกว่า requirements.txt

 Flask==1.0.2

ฟังก์ชันถูกทำให้ใช้งานได้โดยใช้เครื่องมือบรรทัดคำสั่ง gcloud ระบุชื่อฟังก์ชัน ภาษา และทริกเกอร์

 gcloud functions deploy simple_cloud_function --runtime python37 \ --trigger-http

URL สำหรับฟังก์ชันจะแสดงในการปรับใช้และสามารถพบได้โดยเรียกใช้คำสั่งอธิบาย

 gcloud functions describe simple_cloud_function Url: https://europe-west1-project-id.cloudfunctions.net/simplecloud_function

Cloud Functions สามารถเรียกใช้ Google Cloud และ Firebase API เพื่อจัดเตรียมฟังก์ชันแบ็คเอนด์ พวกเขาให้ข้อมูลการบันทึกเกี่ยวกับการเริ่มดำเนินการและเวลาดำเนินการ สามารถเพิ่มการบันทึกเพิ่มเติมได้อย่างง่ายดาย คุณดูบันทึกได้ใน Stackdriver Logging UI และผ่านเครื่องมือบรรทัดคำสั่ง gcloud

 gcloud functions logs read simple_cloud_function

สามารถดูและลบฟังก์ชันได้ใน Google Cloud Console

Google Cloud Console: ฟังก์ชัน

Cloud Functions เหมาะที่สุดสำหรับการดำเนินการที่เกิดขึ้นไม่บ่อยนัก ตัวอย่างการใช้งานคือการสร้างภาพขนาดย่อเมื่ออัปโหลดรูปภาพไปยัง Cloud Storage ขีดจำกัดฟรีคือ 125,000 คำขอต่อเดือน

คลาวด์รัน

เมื่อเร็วๆ นี้ Cloud Run ได้เพิ่มฟังก์ชันการทำงานที่ช่วยอำนวยความสะดวกให้กับแอปพลิเคชันแบบไร้เซิร์ฟเวอร์อย่างมาก ช่วยให้คอนเทนเนอร์ Docker ทำงานบนคลาวด์ได้โดยไม่ต้องตั้งค่าโครงสร้างพื้นฐานที่ซับซ้อน สามารถทำงานในโหมดที่มีการจัดการ ซึ่งใช้รันไทม์ Knative ซึ่งสร้างบน Kubernetes นอกจากนี้ยังสามารถทำงานบน Anthos ซึ่งสร้างขึ้นบน Kubernetes ด้วยเช่นกัน แต่อนุญาตให้เรียกใช้คอนเทนเนอร์ข้ามคลาวด์และแม้แต่ในศูนย์ข้อมูลของคุณเอง ไม่จำเป็นต้องตั้งค่าและจัดการคลัสเตอร์ Kubernetes เนื่องจากทั้งหมดทำโดยอัตโนมัติ

Cloud Run จัดการแอปพลิเคชันใดๆ ที่สร้างไว้ในอิมเมจ Docker ได้ จะปรับขนาดจำนวนตู้คอนเทนเนอร์ตามความต้องการโดยอัตโนมัติ นอกจากนี้ยังลดขนาดลงเป็นศูนย์เมื่อไม่ได้ใช้บริการ บริการที่ไม่ได้ใช้จะไม่มีค่าใช้จ่าย

คอนเทนเนอร์ Docker จำเป็นต้องเรียกใช้เว็บเซิร์ฟเวอร์หากต้องการตอบสนองต่อคำขอ HTTP บริการ Python จะใช้ Flask จุดเริ่มต้นจะอยู่ใน app.py

 from flask import Flask, request app = Flask(__name__) @app.route('/api/profile') def profile(): page = ''' Page content ''' return page

แอปพลิเคชันต้องการ Dockerfile เพื่อสร้างภาพ

 FROM python ENV APP_HOME /app WORKDIR $APP_HOME COPY . . ENV PORT 8080 RUN pip install Flask gunicorn firebase-admin CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app

คอนเทนเนอร์ Cloud Run ถูกปรับใช้โดยตรงบนคลาวด์

 gcloud run deploy --image=image_name --platform=managed \ --region=europe-west1 --allow-unauthenticated

หากไม่มีการกำหนดชื่อบริการ แพลตฟอร์ม ภูมิภาค หรือไม่อนุญาตการตรวจสอบสิทธิ์ในการกำหนดค่าโครงการหรือระบุไว้ในบรรทัดคำสั่ง พวกเขาจะได้รับพร้อมท์ เมื่อปรับใช้เสร็จสมบูรณ์ URL ของบริการจะปรากฏขึ้น สามารถรับ URL ได้โดยใช้คำสั่ง gcloud

 gcloud run services list SERVICE REGION URL LAST DEPLOYED BY LAST DEPLOYED AT cloud-api europe-west1 https://cloud-api-h42ifbxkyq-ew.a.run.app [email protected] 2020-02-05T10:53:30.006Z

URL มีตัวเลขสุ่มที่ยากต่อการจัดการ นี่คือจุดที่กฎการเขียนซ้ำของ Firebase Hosting มีประโยชน์มากที่สุด

สามารถดูและลบบริการได้ใน Google Cloud Console

Google Cloud Console: บริการ

Cloud Run เหมาะอย่างยิ่งสำหรับการโฮสต์ REST API ขีดจำกัดการใช้งานฟรีต่อเดือนคือ 180,000 CPU วินาที, หน่วยความจำ 360,000 GB วินาที, 2 ล้านคำขอ และ 1GB เครือข่ายขาออก ขีดจำกัดการเข้าออกของเครือข่ายฟรีจะมีผลเฉพาะเมื่อมีการปรับใช้บริการในภูมิภาคอเมริกาเหนือ

การตรวจสอบสิทธิ์

ตามค่าเริ่มต้น คอนเทนเนอร์ Cloud Functions และ Cloud Run จะเป็นสาธารณะและทุกคนสามารถเข้าถึงได้ทางอินเทอร์เน็ต การใช้กฎ IAM ใน Cloud Console สามารถจำกัดบริการได้เฉพาะสมาชิกโปรเจ็กต์, Google Groups และที่อยู่อีเมลแต่ละรายการ

หากมีข้อจำกัด ห้ามมิให้เข้าถึงโดยไม่ได้รับอนุญาต ในการเปิดใช้งานการเข้าถึง จะต้องเพิ่มโทเค็นข้อมูลประจำตัวในส่วนหัวของคำขอ สามารถรับโทเค็นข้อมูลประจำตัวได้โดยใช้คำสั่ง gcloud หรือระหว่างกระบวนการตรวจสอบสิทธิ์ Firebase

 gcloud auth print-identity-token

จำเป็นต้องมีส่วนหัวการให้สิทธิ์

 Authorization: Bearer id-token

สรุป

Google Cloud Platform และ Firebase มีผลิตภัณฑ์มากมายที่ช่วยอำนวยความสะดวกในการพัฒนาแอปพลิเคชันมือถือและเว็บอย่างมาก ความต้องการเซิร์ฟเวอร์แบ็คเอนด์สามารถขจัดออกไปได้โดยสิ้นเชิงด้วยการอนุญาตให้ลูกค้าเข้าถึงฟังก์ชันการทำงานของระบบคลาวด์ได้โดยตรง หรือโดยการปรับใช้โค้ดแบ็คเอนด์ในคลาวด์โดยใช้ Cloud Functions หรือ Cloud Run

แอปพลิเคชันที่มีอยู่สามารถย้ายไปยังเซิร์ฟเวอร์แบบไม่ต้องเพิ่มทีละส่วนได้ ที่จริงแล้ว วิธีการพัฒนาเทคโนโลยีอาจหมายความว่าโซลูชันเซิร์ฟเวอร์ที่ใช้เครื่องเสมือนแบบดั้งเดิมจะไม่จำเป็นอีกต่อไป