- ตัวอย่างนี้ใช้ Fastly CLI เวอร์ชันเก่า ตรวจสอบบทความนี้สำหรับเวอร์ชันล่าสุด
ในโพสต์นี้ เราจะเขียนแอปพลิเคชันอย่างง่ายซึ่งจะทำงานบน Fastly Compute@Edge แอปพลิเคชันจะเข้าถึง Upstash Redis เพื่อติดตามการดูหน้าเว็บ
แรงจูงใจ
Edge Computing เป็นหนึ่งในแนวโน้มที่น่าตื่นเต้นที่สุดในช่วงไม่กี่ปีที่ผ่านมา บริการ CDN เช่น Cloudflare และ Fastly เริ่มให้ผู้ใช้เรียกใช้แอปพลิเคชันของตนบนโครงสร้างพื้นฐานขอบของตนได้ ซึ่งช่วยให้นักพัฒนาสร้างแอปพลิเคชันที่เผยแพร่ทั่วโลกและมีประสิทธิภาพสูง
Compute@Edge เป็นแพลตฟอร์มไร้เซิร์ฟเวอร์จาก Fastly คุณสามารถเขียนโค้ดของคุณใน Rust, AssemblyScript, Javascript และรันในเครือข่าย Edge ของ Fastly ฟังก์ชัน Fastly Compute เป็นแบบไร้สัญชาติ ซึ่งหมายความว่านักพัฒนาควรเก็บสถานะแอปพลิเคชันของตนไว้ที่ที่จัดเก็บข้อมูลภายนอก แต่ Fastly ใช้ WebAssembly เป็นรันไทม์สำหรับฟังก์ชันต่างๆ และไม่อนุญาตให้มีการเชื่อมต่อ TCP Upstash Redis เป็นโซลูชันที่สมบูรณ์แบบสำหรับฟังก์ชัน Fastly Compute ด้วย REST API, การจำลองแบบทั่วโลก และการกำหนดราคาแบบไร้เซิร์ฟเวอร์
ดูโค้ดและตัวอย่าง
การตั้งค่าโครงการ
สร้างฐานข้อมูลใน Upstash Console ต้องการ Global Database สำหรับเวลาแฝงต่ำจากตำแหน่งขอบ
ติดตั้งอย่างรวดเร็ว cli:
brew install fastly/tap/fastly
กำหนดค่า CLI ของคุณด้วยบัญชี Fastly:
fastly configure
สร้างโฟลเดอร์และเริ่มต้นโครงการของคุณโดยเรียกใช้ fastly compute init
ภายในโฟลเดอร์:
➜ using-fastly-compute git:(master) ✗ fastly compute init
Creating a new Compute@Edge project.
Press ^C at any time to quit.
Name: [using-fastly-compute]
Description:
Author: [[email protected]]
Language:
[1] Rust
[2] AssemblyScript (beta)
[3] JavaScript (beta)
[4] Other ('bring your own' Wasm binary)
Choose option: [1] 3
Starter kit:
[1] Default starter for JavaScript
A basic starter kit that demonstrates routing, simple synthetic responses and
overriding caching rules.
https://github.com/fastly/compute-starter-kit-javascript-default
Choose option or paste git URL: [1]
✓ Initializing...
✓ Fetching package template...
✓ Updating package manifest...
✓ Initializing package...
Initialized package using-fastly-compute to:
/Users/enes/dev/examples/using-fastly-compute
To publish the package (build and deploy), run:
fastly compute publish
To learn about deploying Compute@Edge projects using third-party orchestration tools, visit:
https://developer.fastly.com/learning/integrations/orchestration/
SUCCESS: Initialized package using-fastly-compute
ติดตั้ง upstash-redis และ flight-path:
npm install @upstash/redis flight-path
อัปเดต webpack.config.js ของคุณโดยเพิ่มปลั๊กอินเหล่านี้:
plugins: [
// Polyfills go here.
// Used for, e.g., any cross-platform WHATWG,
// or core nodejs modules needed for your application.
new webpack.ProvidePlugin({
URL: "core-js/web/url",
}),
],
อัปเดตไฟล์ fastly.toml ของคุณ:
authors = ["[email protected]"]
description = "Example of using Upstash with Fastly Compute@Edge"
language = "javascript"
manifest_version = 2
name = "fastly-upstash"
service_id = "PASTE_YOUR_SERVICE_ID"
[local_server.backends.upstash-db]
url = "https://eu1-liberal-cat-30162.upstash.io"
คุณต้องสร้าง Fastly Compute Service และวาง Fastly Service Id ด้านบน
นอกจากนี้ คุณต้องเพิ่ม Upstash REST URL เป็นแบ็กเอนด์ใน Fastly Compute Service ของคุณ Fastly Compute ต้องการการเชื่อมต่อเครือข่ายภายนอกเพื่อลงทะเบียนเป็นแบ็กเอนด์ ในหน้าจอบริการ ให้คลิก Edit Configuration
> Clone version x to edit
> Origins
> Create a host
หลังจากเพิ่มโฮสต์แล้ว คลิกเพื่อแก้ไขไอคอนเพื่อเพิ่มชื่อโฮสต์ ตั้งชื่อเป็น upstash-db
ซึ่งจะเท่ากับ backend
ตัวเลือกในขณะที่เรากำลังกำหนดค่าไคลเอนต์ upstash-redis ลบ https://
ส่วนหนึ่งจาก url สุดท้ายคลิกที่ Activate
ปุ่มที่มุมบนขวาเพื่อเปิดใช้งานการกำหนดค่าด้วยการปรับใช้ปัจจุบัน
Local_server.backends.upstash-db
จำเป็นสำหรับคุณในการเรียกใช้ฟังก์ชันของคุณในเครื่อง แทนที่ url ด้วย REST url ของ Upstash Database ของคุณ
การนำไปใช้
src/index.js คือการนำฟังก์ชันแบบไร้เซิร์ฟเวอร์ไปใช้งาน แก้ไขโค้ดดังนี้:
import { Router } from "flight-path";
import { Redis } from "@upstash/redis/fastly";
const router = new Router();
const redis = new Redis({
url: "PASTE_YOUR_UPSTASH_REST_URL",
token: "PASTE_YOUR_UPSTASH_TOKEN",
backend: "upstash-db",
});
router.get("/", async (req, res) => {
const count = await redis.incr("count");
res.send(`Fastly with Upstash! Count: ${count}`);
});
router.listen();
คุณต้องคัดลอกและวาง REST URL และโทเค็นจากคอนโซล Upstash
เราเพียงแค่เชื่อมต่อกับ Upstash โดยใช้ไคลเอนต์ upstash-redis เราเพิ่มตัวนับและส่งคืนการตอบกลับ
โปรดทราบว่าคุณไม่สามารถใช้ไคลเอ็นต์ Redis อื่นได้เนื่องจากใช้การเชื่อมต่อ TCP ซึ่ง Fastly Compute ไม่รองรับ
ขณะตรวจสอบสิทธิ์ด้วย auth()
คุณต้องเพิ่ม backend: upstash-db
เป็นตัวเลือกคำขอพิเศษ สิ่งนี้จำเป็นเนื่องจาก Fastly Compute ต้องการการเชื่อมต่อเครือข่ายภายนอกใดๆ เพื่อลงทะเบียนเป็นแบ็กเอนด์
เรียกใช้ในเครื่อง
คุณสามารถเรียกใช้ฟังก์ชันในเครื่องได้โดย:
fastly compute serve
สร้างและปรับใช้
สร้างและปรับใช้ฟังก์ชันของคุณด้วย:
fastly compute publish
แอปพลิเคชันของคุณจะถูกสร้างและปรับใช้โดย Fastly คำสั่งจะบันทึก URL เพื่อให้คุณสามารถทดสอบว่าใช้งานได้หรือไม่:
https://horribly-organic-spider.edgecompute.app
ปิดคำ
ในบทความนี้ เราได้สร้างแอปพลิเคชันที่เรียบง่ายซึ่งทำงานบน Fastly Compute ที่ Edge โดยใช้ Upstash เราชอบที่จะปรับปรุง Upstash และเนื้อหาของเราตามความคิดเห็นของคุณ แจ้งให้เราทราบความคิดเห็นของคุณบน Twitter หรือ Discord
ลิงก์ภายนอก
https://developer.fastly.com/learning/compute/
https://developer.fastly.com/learning/compute/javascript/