Backend ขยายได้กับ AI: คู่มือทีละขั้น
Backend ที่ปรับขนาดได้คือ backend ที่สามารถรองรับการเพิ่มขึ้นของการโหลดโดยที่ประสิทธิภาพไม่ลดลงอย่างมีนัยสำคัญ.
การสร้าง backend ที่ปรับขนาดได้เกี่ยวข้องกับกระบวนการและการพิจารณาหลายอย่าง เช่น การออกแบบฐานข้อมูลและกลยุทธ์การปรับใช้.
ในบทความนี้ คุณจะได้เรียนรู้วิธีการสร้าง backend ที่ปรับขนาดได้ด้วยความช่วยเหลือจากปัญญาประดิษฐ์ (AI).
Contents
อะไรที่ทำให้ Backend ปรับขนาดได้?
ปัจจัยต่าง ๆ ที่นำมาใช้ในวงจรการพัฒนาซอฟต์แวร์ทำงานร่วมกันเพื่อให้ backend ปรับขนาดได้.
หนึ่งในปัจจัยที่ช่วยให้ backend ปรับขนาดได้คือความเร็วของการสืบค้นในฐานข้อมูล.
การสืบค้นที่ช้าเพิ่มเวลาในการตอบสนองของเซิร์ฟเวอร์และส่งผลต่อความสามารถในการประมวลผลคำขอหลายรายการพร้อมกัน.
คุณจะทำให้การสืบค้นของคุณเร็วขึ้นโดยการออกแบบ schema ที่เหมาะสมและเขียนคำสั่งสืบค้นที่มีประสิทธิภาพ.
การประมวลผลแบบไม่ประสานกันเป็นอีกปัจจัยหนึ่งที่สามารถทำให้ backend ปรับขนาดได้ งานที่ใช้ทรัพยากรมากอาจบล็อกเธรดการทำงานและจำกัดความสามารถของเซิร์ฟเวอร์ในการประมวลผลคำขอพร้อมกัน.
คุณสามารถแก้ปัญหานี้ได้โดยมอบหมายงานที่ใช้ทรัพยากรมาก เช่น การคำนวณที่ซับซ้อนและการอัปโหลดไฟล์ ให้กับงานที่ทำงานในเบื้องหลัง.
อีกปัจจัยหนึ่งคือกลยุทธ์การปรับใช้ของคุณ คุณต้องปรับใช้ backend ของคุณด้วยกลยุทธ์การปรับใช้ที่ปรับขนาดได้ผ่านบริการอย่าง Back4app.
ตัวอย่างเช่น คอนเทนเนอร์ใหม่จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อมีการเพิ่มขึ้นของการเข้าชม โดยกระจายภาระงานไปยังหลายอินสแตนซ์โดยไม่ต้องแทรกแซงด้วยมือ.
ในทำนองเดียวกัน ระบบจะปรับขนาดลงเมื่อความต้องการลดลง โดยปล่อยทรัพยากรที่ไม่ได้ใช้ออกไป.
ในบทเรียนนี้ คุณจะสร้างแอปพลิเคชันจัดการฟาร์มสุนัขที่นำปัจจัยทั้งหมดที่กล่าวมาข้างต้นมาใช้เพื่อให้สามารถปรับขนาดได้.
การออกแบบ Backend ที่ปรับขนาดได้ด้วย AI
ตามที่ได้กล่าวไว้ข้างต้น คุณจะสร้างแอปพลิเคชันจัดการฟาร์มสุนัข นี่คือข้อกำหนดของแอปพลิเคชัน:
- แอปพลิเคชันของคุณจะอนุญาตให้เจ้าของเช็คอินสุนัขเข้าฟาร์มของคุณ.
- เมื่อเจ้าของเช็คอินสุนัขเข้าฟาร์มของคุณ แอปพลิเคชันจะเก็บรายละเอียดเกี่ยวกับสุนัข เช่น ชื่อ, สายพันธุ์, อายุ, ชื่อเจ้าของ และรูปภาพ จากนั้นจะสร้างรหัสเฉพาะสำหรับเจ้าของ.
- รหัสเฉพาะที่เจ้าของได้รับเป็นวิธีเดียวในการรับสุนัขกลับจากฟาร์มเมื่อสิ้นสุดการเข้าชม.
- ในระหว่างการเข้าชมฟาร์มของคุณ คุณจะติดตามกิจกรรมทั้งหมดที่สุนัขเข้าร่วม บทเรียนนี้จะรวมเฉพาะการรับประทานอาหาร, การให้ยา และการดูแลขน.
- เมื่อสิ้นสุดการเข้าชม เจ้าของจะให้รหัสเฉพาะที่ได้รับตอนเช็คอินและรับสุนัขกลับ.
ขั้นตอนแรกในการนำข้อกำหนดข้างต้นไปปฏิบัติคือการออกแบบฐานข้อมูลที่ทำ normalization เพื่อลดการซ้ำซ้อนของข้อมูลให้น้อยที่สุด.
คุณจะออกแบบและสร้าง schema ของฐานข้อมูลนี้ด้วยความช่วยเหลือจาก Back4app AI Agent ซึ่งทำหน้าที่เป็นตัวสร้าง backend ด้วย AI.
Back4app AI Agent
Back4app AI Agent เป็น LLM ที่เชื่อมต่อกับผลิตภัณฑ์ของ Back4app, แพลตฟอร์ม Backend และแพลตฟอร์มการปรับใช้เว็บ.
มันช่วยให้คุณโต้ตอบกับผลิตภัณฑ์เหล่านี้ผ่านทาง prompt และจะช่วยคุณสร้าง backend ที่ปรับขนาดได้ด้วย AI.
ในการเข้าถึง AI Agent คุณจำเป็นต้องมีบัญชี Back4app หากคุณยังไม่มี คุณสามารถ สมัครได้ฟรี.
เข้าสู่ระบบบัญชี Back4app ของคุณแล้วคลิกที่ลิงก์ “AI Agent” บนแถบเมนูของแดชบอร์ด.
การคลิกที่ลิงก์จะนำคุณไปยังหน้า AI Agent ตามที่แสดงในภาพด้านล่าง.
คุณสามารถป้อน prompt ต่าง ๆ บนหน้านี้ เช่น prompt สำหรับสร้างแอป BaaS ใหม่ในบัญชี Back4app ของคุณ.
สร้าง Backend ด้วย AI
ในการสร้างแอปพลิเคชัน backend ใหม่บน Back4app คุณสามารถป้อน prompt ด้านล่างหรือ prompt ที่คล้ายกันลงใน AI Agent.
- Create a new backend application called "Kennel Management Backend"
คุณจะได้รับการตอบกลับว่าการสร้างแอปพลิเคชันเสร็จสมบูรณ์เรียบร้อยแล้ว.
คุณสามารถดูแอปที่ถูกสร้างบนแดชบอร์ด Back4app ของคุณ ตามที่แสดงในภาพด้านล่าง.
ตามที่แสดงในภาพด้านบน ฐานข้อมูลในแอป backend ใหม่ของคุณจะว่างเปล่า ยกเว้นคลาสเริ่มต้น _User
และ _Role
.
ต่อไป คุณจะออกแบบและเพิ่ม schema ของฐานข้อมูลลงในแอป backend ของคุณ.
การออกแบบฐานข้อมูลของคุณ
ในการ ออกแบบ schema ฐานข้อมูลที่ทำ normalization สำหรับข้อกำหนดของแอปพลิเคชัน ให้ป้อน prompt ด้านล่างหรือ prompt ที่คล้ายกันลงใน AI Agent.
- Design a normalized database schema for a dog kennel management application.
- The app stores dog details: name, breed, age, a unique owner username, owner contact details, and an image;
- When an owner checks in and generates a unique code for the owner to retrieve the dog.
- It tracks activities during the visit (eating, medication, grooming).
The owner provides the unique code to retrieve their dog at the end of the visit.
- Ensure relationships between entities like dogs, owners, visits, activities, and the retrieval code are properly structured.
Prompt ข้างต้นควรส่งคืน schema ฐานข้อมูลที่คล้ายกับที่แสดงในภาพด้านล่าง.
Schema ฐานข้อมูลข้างต้นประกอบด้วยตารางสี่ตาราง: owners, dogs, visits, และ activities. เจ้าของหนึ่งคนสามารถมีสุนัขหลายตัว (one-to-many) แต่ละสุนัขจะเป็นของเจ้าของเพียงคนเดียว โดยเชื่อมโยงผ่าน foreign key ในตาราง dogs
.
ในทำนองเดียวกัน สุนัขหนึ่งตัวสามารถมีการเข้าชมหลายครั้ง (one-to-many) ตามเวลา โดยแต่ละครั้งจะเฉพาะสำหรับสุนัขตัวนั้นและถูกติดตามในตาราง visits
ผ่าน foreign key.
นอกจากนี้ แต่ละการเข้าชมสามารถมีหลายกิจกรรม (one-to-many) เช่น การให้อาหาร, การดูแลขน หรือการให้ยา ซึ่งแต่ละกิจกรรมจะเชื่อมโยงกับการเข้าชมเฉพาะผ่าน foreign key visit_id
ในตาราง activities
.
เมื่อคุณมีการออกแบบฐานข้อมูลแล้ว ให้ป้อน prompt ต่อไปนี้ลงใน AI Agent เพื่อสร้างฐานข้อมูลใน backend ของคุณ.
- Create the designed database in the backend app "Kennel Management Backend".
คุณจะได้รับการตอบกลับว่าการสร้างฐานข้อมูลเสร็จสมบูรณ์แล้ว คุณสามารถยืนยันได้โดยตรวจสอบแดชบอร์ดแอปของคุณสำหรับตารางที่ถูกสร้างขึ้นใหม่ ตามที่แสดงในภาพด้านล่าง.
ตอนนี้ เมื่อคุณได้สร้าง backend และเพิ่มตารางฐานข้อมูลของแอปพลิเคชันแล้ว คุณจะดำเนินการตรรกะของแอปพลิเคชันต่อไป.
การดำเนินการตรรกะของ Backend ด้วย AI
จากข้อกำหนดของแอปพลิเคชัน แอปของคุณควรอนุญาตให้เจ้าของเช็คอินสุนัขเข้าฟาร์ม บันทึกรายละเอียด เช่น ชื่อสุนัข, สายพันธุ์, อายุ, ชื่อเจ้าของ, และรูปภาพ พร้อมทั้งสร้างรหัสเฉพาะสำหรับการรับคืนสุนัขให้กับเจ้าของ.
ในการดำเนินการตามข้อกำหนดเหล่านี้ คุณต้องมีฟังก์ชัน utility ที่สร้างรหัสการรับคืนที่ไม่ซ้ำกัน และฟังก์ชันที่อัปโหลดรูปสุนัขในเบื้องหลังเพื่อให้แน่ใจว่างานอัปโหลดจะไม่ทำให้เวลาในการตอบสนองของแอปช้าลง.
การดำเนินการฟังก์ชัน Utility
คุณสามารถสร้างฟังก์ชัน utility ที่สร้างรหัสเฉพาะได้โดยป้อน prompt ด้านล่างหรือ prompt ที่คล้ายกันลงใน AI Agent:
- Create a utility cloud code function in the "Kennel Management Backend" app that generates a unique retrieval code for the dogs checked into the kennel.
-Store the code in a `utils.js` file and make the file accessible to the entire application.
คุณจะได้รับการตอบกลับว่าฟังก์ชัน cloud code ถูกสร้างขึ้นแล้ว คล้ายกับที่แสดงในภาพด้านล่าง.
ต่อไป ให้สร้างฟังก์ชันที่อัปโหลดรูปสุนัขและเชื่อมโยงกับเรคคอร์ดของสุนัขที่เกี่ยวข้องโดยป้อน prompt ด้านล่างหรือ prompt ที่คล้ายกันลงใน AI Agent:
- Create an asynchronous utility Cloud Code function named `uploadDogImage` that accepts three parameters: `dogName`, `dogImage`, and `dogId`.
- The function should upload the `dogImage`, using `dogName` as the image name, and ensure that the image is properly associated with the corresponding dog record identified by `dogId`.
- Implement error handling to manage any issues during the upload process and confirm the association with the dog record.
- Add the `utils.js` file and make it accessible to the entire application.
Prompt ด้านบนช่วยให้แน่ใจว่ารูปสุนัขถูกอัปโหลดอย่างถูกต้องและเชื่อมโยงกับเรคคอร์ดสุนัขที่ถูกต้อง พร้อมทั้งจัดการกับข้อผิดพลาดที่อาจเกิดขึ้น.
คุณจะได้รับการตอบกลับว่าฟังก์ชันถูกสร้างขึ้นเรียบร้อยแล้ว.
ฟังก์ชัน utility ทั้งสองถูกนำไปใช้ในไฟล์ utils.js
เพื่อรักษาความเป็นโมดูลของโค้ด ตอนนี้คุณมีฟังก์ชัน utility ที่จำเป็นสำหรับฟีเจอร์เช็คอินในแอปพลิเคชันของคุณแล้ว.
การดำเนินการฟีเจอร์การเช็คอิน
ในการดำเนินการฟีเจอร์การเช็คอินสำหรับแอปพลิเคชันของคุณ คุณต้องมีข้อมูลชื่อ, อายุ, สายพันธุ์, รูปภาพของสุนัข และชื่อผู้ใช้งานของเจ้าของ.
จากนั้น คุณต้องสร้างรหัสการรับคืนสำหรับเจ้าของ บันทึกการเข้าชม อัปโหลดรูปสุนัข (ในเบื้องหลัง) และส่งรหัสนั้นกลับให้เจ้าของ.
คุณสามารถเพิ่มตรรกะข้างต้นลงในแอปพลิเคชัน backend ของคุณโดยป้อน prompt ด้านล่างหรือ prompt ที่คล้ายกันลงใน AI Agent:
- Create an asynchronous Cloud Code function named `checkIn` in a `main.js` file that accepts five parameters from a request body: `dogName` (String), `dogAge` (Number), `dogBreed` (String), `ownerUsername`(String), and `dogImage` (File).
- The function should first validate and sanitize each input to ensure they conform to expected types and formats.
- It should then search for an owner in the `owner` table using `ownerUsername` and create a new owner record if none exists. Next, the function should create a new record in the `dogs` table with the provided `dogName`, `dogBreed`, `dogAge`, and the corresponding `ownerId`.
- After that, it should call the `generateRetrievalCode` utility function to create a unique retrieval code.
- The function must also use the `uploadImage` utility to upload `dogImage`, running this process in the background without awaiting the return value.
- Finally, it should create a record in the `visits` table that includes relevant details such as the `ownerId`, `dogId`, and the generated retrieval code, and return a success message along with the retrieval code to the user.
- Ensure error handling is implemented for database operations and input validation, returning appropriate error messages where necessary.
คุณจะได้รับการตอบกลับว่าฟังก์ชันถูกสร้างขึ้นเรียบร้อยแล้ว.
คุณสามารถตรวจสอบโค้ดที่ AI Agent สร้างขึ้นและแก้ไขหากจำเป็นบน App Dashboard → Cloud Code ตามที่แสดงในภาพด้านล่าง.
ตอนนี้ คุณสามารถเช็คอินสุนัขใหม่เข้าฟาร์มของคุณได้แล้ว ต่อไปคุณจะดำเนินการฟีเจอร์บันทึกกิจกรรม.
การดำเนินการฟีเจอร์บันทึกกิจกรรม
จากข้อกำหนดของแอปพลิเคชัน แอปของคุณควรติดตามกิจกรรมทั้งหมดที่สุนัขเข้าร่วมในระหว่างการเข้าชม.
ในการดำเนินการฟีเจอร์บันทึกกิจกรรม คุณต้องดึงเรคคอร์ดการเข้าชมและสร้างกิจกรรมใหม่พร้อมกับข้อมูลที่จำเป็น.
คุณสามารถเพิ่มตรรกะข้างต้นลงในแอปพลิเคชัน backend ของคุณโดยป้อน prompt ด้านล่างหรือ prompt ที่คล้ายกันลงใน AI Agent:
- Create an asynchronous function called `recordActivity` that accepts three parameters from a request body: `visitId`, `type`, and `description`.
- It should first check if a visit with the specified `visitId` exists in the database.
- If the visit is not found, return an appropriate error message.
- If the visit exists, the function should create a new activity record with the visitId, type, and description, set the time to the current date,
and return a success message, after a successful creation.
- Ensure error handling is implemented for database operations and input validation, returning appropriate error messages where necessary.
คุณสามารถตรวจสอบแดชบอร์ดของคุณเพื่อให้แน่ใจว่าฟังก์ชันนี้ถูกดำเนินการอย่างถูกต้องและแก้ไขหากจำเป็น.
การดำเนินการฟีเจอร์เช็คเอาท์
ในการดำเนินการฟีเจอร์เช็คเอาท์ คุณต้องดึงเรคคอร์ดการเข้าชมโดยใช้ retrieval_code
รวมถึงรายละเอียดของสุนัขและเจ้าของที่เกี่ยวข้อง, อัปเดต check_out_time
และส่งกลับคำตอบพร้อมข้อมูลของสุนัขและเจ้าของ รวมถึงเวลาเช็คอินและเช็คเอาท์ของการเข้าชม.
คุณสามารถเพิ่มตรรกะข้างต้นลงในแอปพลิเคชัน backend ของคุณโดยป้อน prompt ด้านล่างหรือ prompt ที่คล้ายกันลงใน AI Agent:
- Create an asynchronous cloud code function called `checkOut` that retrieves dog and visit details based on a `retrieval_code` extracted from the request body.
- The function should fetch the corresponding visit record in the `Visit` table and include related dog details from the `Dog` table and the `Owner` table.
- The function should select specific dog attributes such as `name`, `breed`, `age` and image.
- If no visit is found, return a message indicating that the `retrieval_code` is invalid.
- Upon successfully finding the visit, the function should update the `check_out_time` to the current date and save the updated visit record.
- Finally, structure a response that includes the dog's information
along with its owner details, as well as the visit's `check_in_time` and `check_out_time`.
- Implement error handling to catch and log any issues during the process,
returning a relevant error message in case of failure.
คุณสามารถตรวจสอบโค้ดที่ AI Agent สร้างขึ้นบน App Dashboard → Cloud Code → main.js
.
ด้วยฟีเจอร์เช็คเอาท์ที่ถูกดำเนินการอย่างครบถ้วน คุณได้ดำเนินการตามข้อกำหนดของแอปพลิเคชันจัดการฟาร์มสุนัขอย่างง่ายแล้ว.
บทสรุป
ในบทความนี้ คุณได้สร้างแอปพลิเคชันจัดการฟาร์มสุนัขที่ปรับขนาดได้ ซึ่งรองรับการเช็คอิน ติดตามกิจกรรมของสุนัขในระหว่างการเข้าชม และอนุญาตให้เจ้าของรับสุนัขกลับในตอนสิ้นสุดการเข้าชมโดยใช้ AI.
เพื่อปรับปรุงความสามารถในการปรับขนาดของแอปพลิเคชัน คุณได้ออกแบบฐานข้อมูลที่ทำ normalization เพื่อให้การสืบค้นของคุณไม่ช้า.
คุณยังได้มอบหมายงานที่ใช้เวลานาน เช่น การอัปโหลดรูปสุนัข ให้กับฟังก์ชันที่ทำงานในเบื้องหลังและแยกโค้ดออกเป็นไฟล์ ๆ เพื่อให้ง่ายต่อการดูแลรักษา.
เมื่อ backend ของคุณเสร็จสมบูรณ์แล้ว คุณสามารถเชื่อมต่อกับ UI ที่สร้างด้วยไลบรารี frontend เช่น React, Svelte, หรือ Vue และ ปรับใช้ด้วย Docker บนแพลตฟอร์มต่าง ๆ เช่น Back4app Web Deployment Platform.