ต้นทุนและประสิทธิภาพระหว่าง iFaaS และ FaaS (AWS) ในการสร้างแอปไร้เซิร์ฟเวอร์
สถาปัตยกรรมแบบไร้เซิร์ฟเวอร์คือการออกแบบระบบอันทรงพลังที่ช่วยให้นักพัฒนาสร้างและเรียกใช้โค้ดโดยไม่ต้องจัดการเซิร์ฟเวอร์และไม่ต้องจ่ายค่าบริการคลาวด์ที่ไม่ได้ใช้งาน
AWS เป็นหนึ่งในผู้ให้บริการระบบคลาวด์ที่ใหญ่ที่สุด ซึ่งคุณสามารถสร้างระบบไร้เซิร์ฟเวอร์ที่มีประสิทธิภาพได้ อย่างไรก็ตาม มีสามมุมมองด้านล่างที่เราต้องการจะกล่าวถึงความแตกต่างระหว่าง Lolo Code (ฟังก์ชันการผสานรวมเป็นบริการ) และ AWS (ฟังก์ชันเสมือนเป็นบริการ) ในการสร้างแอปแบบไร้เซิร์ฟเวอร์
- ค่าใช้จ่าย
- ประสิทธิภาพ
- ประสิทธิภาพ
ราคา AWS
AWS นำเสนอวิธีการคิดราคาแบบจ่ายตามการใช้งานจริงให้คุณ กล่าวอีกนัยหนึ่ง คุณจะต้องจ่ายตามจำนวนที่คุณใช้ทรัพยากร AWS
ตัวอย่างราคา AWS
API ใช้ในเว็บแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ที่เรียกใช้ Lambda เพื่อส่งคืนเนื้อหาเว็บเพจแบบไดนามิก เว็บไซต์ได้รับการโหลด 10,000 หน้าต่อนาที คำขอ API แต่ละรายการมีขนาด 12KB และการตอบสนองคือ 46 KB
ซึ่งจะมีทั้งหมด 432 ล้านคำขอต่อเดือน
ค่าใช้จ่ายรายเดือน = 418.8 USD (0.97 USD ต่อล้าน) * ในค่าใช้จ่าย Amazon API Gateway (ไม่รวม Lambda หรือ DynamoDB)
ราคา Lolo Code
Lolo Code ยังนำเสนอรูปแบบการจ่ายตามการใช้งานจริง แต่จะตรงไปตรงมามากกว่า โดยคุณจ่ายตามจำนวนกิจกรรมที่แอปของคุณต้องดำเนินการพร้อมกัน แทนที่จะจ่ายเป็นจำนวนกิจกรรมทั้งหมด
คุณสามารถสมัครสมาชิก 1 แอปพลิเคชันที่มี 1 LCU (หรือแบบจำลอง) ที่มีหน่วยความจำ 256 mb และ 0.125 คอร์ (CPU) เริ่มต้นที่ 9 ยูโรต่อเดือน Free Tier ประกอบด้วยสองแอปที่มี 1 LCU ต่อแอป แต่คุณต้องมีส่วนร่วมกับแอปสัปดาห์ละครั้งเพื่อให้แอปทำงานต่อไป หากคุณต้องการเพิ่มแบบจำลองของคุณสำหรับแอปฟรีเทียร์ ราคาเริ่มต้นที่ 9 ยูโรต่ออัน
ตัวอย่างราคา Lolo Code
จากตัวอย่างเดียวกันกับด้านบนสำหรับ API Gateway เราได้ทำการคำนวณบางอย่าง
หากไซต์ได้รับการโหลดเพจ 10,000 ครั้งต่อนาที และคำขอ API แต่ละรายการคือ 12KB และการตอบสนองคือ 46 KB เราจำเป็นต้องประมวลผล 10k req/min สำหรับแอป Lolo สิ่งนี้ต้องการ 0.131 (คอร์) และหน่วยความจำ 85 mb ด้วยเหตุนี้ จึงต้องใช้แบบจำลองสองรายการในราคาอันละ 9 ยูโร แต่เรายังมีที่ว่างสำหรับคำขอเพิ่มเติมภายในแอปนั้น ผลลัพธ์ที่ได้คือ
ค่าใช้จ่ายรายเดือน = €18 ต่อเดือนสำหรับแอป Lolo
Lolo สามารถมองได้ว่าเป็นการรวมกันของ AWS Lambda และ API Gateway คุณยังสามารถใช้ Lolo's bake in state store เพื่อจัดเก็บเนื้อหาหน้าเว็บไดนามิกของคุณ วิธีนี้จะไม่มีค่าใช้จ่ายแอบแฝง ยอดรวมที่คุณจะจ่ายก็แค่ 18 ยูโรต่อเดือน
ประสิทธิภาพ: ความแตกต่างระหว่าง iFaaS และ FaaS
AWS อาจนำเสนอทุกสิ่งที่คุณต้องการ และคุณสามารถออกแบบแอปขนาดใหญ่ที่มีความซ้ำซ้อน ความสามารถในการปรับขนาด และความพร้อมใช้งานสูง ในทางกลับกัน คุณควรรู้จักระบบเครือข่ายเป็นอย่างดีและคุ้นเคยกับสถาปัตยกรรม AWS เพื่อปลดล็อกศักยภาพของมัน Serverless ยังมาพร้อมกับข้อเสีย หนึ่งในนั้นคือ "การเริ่มเย็น" ที่มีชื่อเสียง
เพื่อแสดงให้เห็น แอปของคุณจะรอช่วงหนึ่งจนกว่าคอนเทนเนอร์จะพร้อมเรียกใช้โค้ด คำขอนี้ใช้เวลาในการดำเนินการนานกว่า เนื่องจากแอปแบบไร้เซิร์ฟเวอร์จำเป็นต้องหมุนฟังก์ชัน (เช่น ดาวน์โหลดโค้ด ไลบรารี โมดูล/อื่นๆ และเตรียมใช้งานสภาพแวดล้อมเพื่อรันโค้ด) ปัญหานี้ปรากฏในแอปแบบไร้เซิร์ฟเวอร์ไม่ว่าจะใน Lolo Code หรือ AWS
อ.ว.ส
AWS ดีขึ้นอย่างเห็นได้ชัดตั้งแต่กลุ่ม Lambda ย้ายข้อมูลไปยังเทคโนโลยี Firecracker ในปี 2018 อย่างไรก็ตาม เนื่องจากฟังก์ชันยังคงต้องเร่งการสตาร์ทเย็นจึงจะเหนือกว่า
ใน AWS คุณสามารถปลุก Lambda ด้วยจำนวนคอนเทนเนอร์ขั้นต่ำ แต่คุณจะต้องเสียค่าใช้จ่ายเพิ่มเติมเพื่อใช้งานอย่างต่อเนื่อง
เราให้ผู้ใช้ทำการทดสอบ * เกี่ยวกับการเริ่มล่าช้าของ AWS Lambda ในฤดูร้อนนี้ (โดยใช้ AWS EU) ผลการทดลองอยู่ด้านล่าง
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 180 ms
| 15 min | 750 ms
| 3h | 1467 ms
| 10h | 2060 ms
+-----------+--------------------
แอพบน Lolo Code ยังมีปัญหา "การเริ่มเย็น" แต่แอพ Lolo ของคุณจะทำงานต่อไปจนกว่าคุณจะหยุด เช่นเนื่องจาก Lolo Code ทำงานกับคอนเทนเนอร์ แอปของคุณจะทำงานทางเทคนิคตลอดเวลาจนกว่าคุณจะหยุด โดยพื้นฐานแล้วคุณไม่ควรกังวลเกี่ยวกับการสตาร์ทเย็น
อย่างไรก็ตาม ผู้ใช้จากด้านบนที่ทำการทดสอบบน AWS ได้ทำการทดสอบแบบเดียวกันใน Lolo Code * ผลลัพธ์ของเขาแสดงอยู่ด้านล่าง
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 172 ms
| 15 min | 210 ms
| 3h | 602 ms
| 10h | 890 ms
+-----------+--------------------
สิ่งอื่นที่ต้องพิจารณาคือหากสคริปต์ของคุณทำงานนานเกินไป AWS อาจไม่ใช่ตัวเลือกที่ดีที่สุด การหมดเวลาสูงสุดของ AWS Lambda อยู่ที่ 900 วินาที (15 นาที) ในขณะที่ Lolo ไม่มีการหมดเวลาสูงสุด
ประสิทธิภาพ: จะสร้างและจัดการแอปแบบไร้เซิร์ฟเวอร์ได้อย่างไร
การสร้าง API ทั้งใน AWS และ Lolo Code นั้นตรงไปตรงมา อย่างไรก็ตามมีความแตกต่างกัน
อ.ว.ส
ใน AWS คุณจะสร้างฟังก์ชัน Lambda ของคุณและเชื่อมต่อกับบริการอื่นในภายหลัง ซึ่งก็คือ API Gateway ซึ่งจะทำหน้าที่เป็นทริกเกอร์ ที่นี่คุณมีฟังก์ชันนิรนามที่จะถูกเรียกใช้เมื่อมีอะไรเกิดขึ้น นี่คืออุดมคติของ FaaS ซึ่งเป็นฟังก์ชันนิรนามที่จะเรียกใช้เมื่อมีเหตุการณ์เกิดขึ้นเท่านั้น
เนื่องจากฟังก์ชันนี้ไม่มีสถานะ คุณจะต้องดึงข้อมูลจากที่อื่น ในกรณีนี้ คุณอาจใช้ AWS DynamoDB เพื่อจัดเก็บและดึงข้อมูล
ดูเหมือนว่าจะเป็นการออกแบบที่ปรับขนาดได้และทนทาน อย่างไรก็ตาม คุณต้องพิจารณาปัจจัยสำคัญบางประการ:
- จะจัดการการเปลี่ยนแปลงรหัสซอฟต์แวร์ได้อย่างไร?
- วิธีปรับใช้หรือปรับแต่งแอปของคุณอย่างรวดเร็ว
- จะเริ่มตรวจสอบบริการต่างๆ ได้จากที่ใดในกรณีที่มีปัญหา infra
ดูบทช่วยสอนแบบเต็มเกี่ยวกับวิธีสร้าง HTTP API ด้วย Lambda, API Gateway และ DynamoDB ที่นี่
รหัสโลโล
ด้วย Lolo Code คุณสามารถเพิ่มทริกเกอร์ HTTP แล้วใช้การอบในที่เก็บสถานะสำหรับฐานข้อมูล คุณสามารถเพิ่มฟังก์ชัน Raw ใหม่เพื่อทำหน้าที่เป็นแลมบ์ดาของคุณ (เพื่อทำตามกรณีการใช้งานที่แน่นอนจากด้านบน)
แอปพลิเคชัน Lolo ของคุณอาจมีลักษณะดังนี้
คุณจะตัดสินใจได้ว่ามีอะไรอยู่ในบล็อกโค้ดโดยเพียงแค่เปลี่ยนโค้ด (NodeJS) แล้วเปลี่ยนชื่อ
นอกจากนี้ Lolo Code ยังมีฟังก์ชัน Library ที่คุณสามารถคัดลอกและใช้ฟังก์ชันเทมเพลตที่มีอยู่และสร้างเทมเพลตของคุณเองได้ สำหรับกรณี API เราสามารถใช้ ฟังก์ชัน Lolo/CRUD API v3เพื่อสร้าง CRUD API ได้อย่างรวดเร็ว ซึ่งจะเร็วกว่าการตั้งค่าของเราเองตั้งแต่เริ่มต้น
คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรมากมายในที่ต่างๆ ด้วย Lolo Code งานทั้งหมดของคุณจะรวมอยู่ในที่เดียว
เมื่อคุณบันทึกและเรียกใช้แอปพลิเคชันของคุณ คุณไม่ต้องกังวลเกี่ยวกับการบำรุงรักษาหรือจัดเตรียมเซิร์ฟเวอร์ของคุณเองเพื่อให้ทำงานต่อไปได้ (กล่าวคือเป็น "เซิร์ฟเวอร์ไร้เซิร์ฟเวอร์" โดยสิ้นเชิง) เว้นแต่คุณจะตัดสินใจใช้รันไทม์ส่วนตัวในบัญชีคลาวด์สาธารณะหรือศูนย์ข้อมูลส่วนตัวของคุณเอง ดูเอกสาร Lolo runtime-d ที่นี่ Runtime-d เป็นไบนารีแบบสแตนด์อโลนที่เปลี่ยนแล็ปท็อปหรือเซิร์ฟเวอร์ Linux ให้เป็นรันไทม์ Lolo
สรุป
AWS เป็นแพลตฟอร์มระบบคลาวด์ที่แพร่หลาย โดยนำเสนอบริการที่มีคุณลักษณะครบถ้วนจากศูนย์ข้อมูลทั่วโลก
ด้วย AWS คุณสามารถทำสิ่งต่างๆ ได้มากมาย แต่ก็ต้องใช้ความพยายามและเวลาที่เหมาะสมในการเปลี่ยนแนวคิดของคุณให้เป็นแอปและปรับใช้บน AWS Lolo Code จะช่วยให้คุณพัฒนาได้เร็วขึ้นและทำงานต่อไปโดยเสียค่าใช้จ่ายน้อยลง แม้ว่า Lolo Code ใช้ระบบคลาวด์ของ AWS เพื่อปรับใช้แอป แต่ก็ยังให้ความสามารถในการใช้รันไทม์ของคุณเอง ทำให้ไม่ต้องพึ่งพาระบบคลาวด์
❤️โลโล