ศัพท์เทคนิคสองสามคำ ถอดรหัสให้แล้ว
- Cold start (การเริ่มเครื่องเย็น) — เมื่อโค้ดไม่ได้รันมาสักพัก แพลตฟอร์มต้องปลุกมันขึ้นมา คำขอแรกนั้นจะช้ากว่า (เศษเสี้ยววินาทีไปจนถึงสองสามวินาที) ฟังก์ชันขอบเครือข่ายแทบไม่มีปัญหานี้ ฟังก์ชันเซิร์ฟเวอร์เลสบางครั้งก็มี ส่วนคอนเทนเนอร์และ ที่รันตลอดเวลาไม่มีปัญหานี้เลย สำหรับแอปส่วนใหญ่สิ่งนี้มองไม่เห็นเลย แต่สำหรับขั้นตอนการชำระเงินที่ต้องการความรวดเร็ว มันอาจสำคัญ
- การขยายขนาด (Scaling) — การรองรับผู้ใช้จำนวนมากขึ้นโดยไม่ล่ม อัตโนมัติ (automatic) หมายถึงแพลตฟอร์มเพิ่มกำลังให้คุณเอง แบบมือ (manual) หมายถึงคุณต้องกดปุ่มเอง หรือไม่งั้นมันก็จะพังเมื่อโหลดสูง "Scales to zero" (ขยายลงถึงศูนย์) เป็นวลีที่เกี่ยวข้องที่คุณจะเห็นบ่อย: เมื่อไม่มีใครใช้แอปของคุณ มันจะไม่มีค่าใช้จ่ายเลย
- สถานะ (State) — ข้อมูลที่ต้องคงอยู่ (ฐานข้อมูล ไฟล์ที่อัปโหลด เซสชันของผู้ใช้) เลเยอร์แบบสถิตและเซิร์ฟเวอร์เลสมักจะเป็น "stateless" — คือลืมทุกอย่างระหว่างคำขอ — ดังนั้นสถานะจึงอยู่ในฐานข้อมูลหรือบริการจัดเก็บข้อมูลแยกต่างหาก นี่คือเหตุผลที่แอปจริงเกือบทุกตัวคือ "การโฮสต์ของคุณบวกกับฐานข้อมูลที่ไหนสักแห่ง" ไม่ใช่กล่องวิเศษกล่องเดียว
- ภูมิภาค (Region) — ส่วนไหนของโลกที่โค้ดและข้อมูลของคุณตั้งอยู่ทางกายภาพ มันส่งผลต่อความเร็ว (ใกล้กว่า = เร็วกว่า) และบางครั้งก็ส่งผลต่อกฎหมาย (ข้อมูลบางอย่างต้องอยู่ในประเทศใดประเทศหนึ่ง) สำหรับโปรเจกต์แรก เลือกภูมิภาคที่ใกล้ผู้ใช้ของคุณที่สุดแล้วก็เดินหน้าต่อ
นี่คือเส้นทางเดินทางทั้งหมดของคำขอ และแต่ละส่วนอาศัยอยู่ที่ไหน เบราว์เซอร์คุยกับขอบเครือข่ายที่อยู่ใกล้ ซึ่งจะส่งไฟล์ที่แคชไว้หรือปลุกโค้ดของคุณขึ้นมา ซึ่งจะไปติดต่อฐานข้อมูลสำหรับสิ่งที่มันต้องจำ:
┌─────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ BROWSER │ ───▶ │ EDGE / CDN │ ───▶ │ SERVER CODE │ ───▶ │ DATABASE │
│ user │ │ near user │ │ function/box │ │ state │
└─────────┘ └──────────────┘ └──────────────┘ └──────────┘
▲ │ │ │
│ cache HIT │ stateless │ remembers │
└──────────────────┘ (forgets between │ things │
fast reply requests) ◀───────┘ ◀─────────────────┘