ต้นทุนและประสิทธิภาพระหว่าง iFaaS และ FaaS (AWS) ในการสร้างแอปไร้เซิร์ฟเวอร์

Nov 25 2022
สถาปัตยกรรมแบบไร้เซิร์ฟเวอร์คือการออกแบบระบบอันทรงพลังที่ช่วยให้นักพัฒนาสร้างและเรียกใช้โค้ดโดยไม่ต้องจัดการเซิร์ฟเวอร์และไม่ต้องจ่ายค่าบริการคลาวด์ที่ไม่ได้ใช้งาน 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 เพื่อจัดเก็บและดึงข้อมูล

สถาปัตยกรรมสำหรับการสร้าง API อย่างง่ายด้วย AWS Serverless

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

  • จะจัดการการเปลี่ยนแปลงรหัสซอฟต์แวร์ได้อย่างไร?
  • วิธีปรับใช้หรือปรับแต่งแอปของคุณอย่างรวดเร็ว
  • จะเริ่มตรวจสอบบริการต่างๆ ได้จากที่ใดในกรณีที่มีปัญหา infra

ดูบทช่วยสอนแบบเต็มเกี่ยวกับวิธีสร้าง HTTP API ด้วย Lambda, API Gateway และ DynamoDB ที่นี่

รหัสโลโล

ด้วย Lolo Code คุณสามารถเพิ่มทริกเกอร์ HTTP แล้วใช้การอบในที่เก็บสถานะสำหรับฐานข้อมูล คุณสามารถเพิ่มฟังก์ชัน Raw ใหม่เพื่อทำหน้าที่เป็นแลมบ์ดาของคุณ (เพื่อทำตามกรณีการใช้งานที่แน่นอนจากด้านบน)

แอปพลิเคชัน Lolo ของคุณอาจมีลักษณะดังนี้

โค้ดภายในบล็อกโค้ดเป็นเพียงโค้ด NodeJS () ยกเว้นทริกเกอร์ HTTP ที่เป็นเทมเพลตทริกเกอร์ที่แชร์โดย Lolo

คุณจะตัดสินใจได้ว่ามีอะไรอยู่ในบล็อกโค้ดโดยเพียงแค่เปลี่ยนโค้ด (NodeJS) แล้วเปลี่ยนชื่อ

นอกจากนี้ Lolo Code ยังมีฟังก์ชัน Library ที่คุณสามารถคัดลอกและใช้ฟังก์ชันเทมเพลตที่มีอยู่และสร้างเทมเพลตของคุณเองได้ สำหรับกรณี API เราสามารถใช้ ฟังก์ชัน Lolo/CRUD API v3เพื่อสร้าง CRUD API ได้อย่างรวดเร็ว ซึ่งจะเร็วกว่าการตั้งค่าของเราเองตั้งแต่เริ่มต้น

สร้าง CRUD API ใน Lolo โดยใช้ฟังก์ชัน Library ที่ Lolo มีให้

คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรมากมายในที่ต่างๆ ด้วย Lolo Code งานทั้งหมดของคุณจะรวมอยู่ในที่เดียว

เมื่อคุณบันทึกและเรียกใช้แอปพลิเคชันของคุณ คุณไม่ต้องกังวลเกี่ยวกับการบำรุงรักษาหรือจัดเตรียมเซิร์ฟเวอร์ของคุณเองเพื่อให้ทำงานต่อไปได้ (กล่าวคือเป็น "เซิร์ฟเวอร์ไร้เซิร์ฟเวอร์" โดยสิ้นเชิง) เว้นแต่คุณจะตัดสินใจใช้รันไทม์ส่วนตัวในบัญชีคลาวด์สาธารณะหรือศูนย์ข้อมูลส่วนตัวของคุณเอง ดูเอกสาร Lolo runtime-d ที่นี่ Runtime-d เป็นไบนารีแบบสแตนด์อโลนที่เปลี่ยนแล็ปท็อปหรือเซิร์ฟเวอร์ Linux ให้เป็นรันไทม์ Lolo

สรุป

AWS เป็นแพลตฟอร์มระบบคลาวด์ที่แพร่หลาย โดยนำเสนอบริการที่มีคุณลักษณะครบถ้วนจากศูนย์ข้อมูลทั่วโลก

ด้วย AWS คุณสามารถทำสิ่งต่างๆ ได้มากมาย แต่ก็ต้องใช้ความพยายามและเวลาที่เหมาะสมในการเปลี่ยนแนวคิดของคุณให้เป็นแอปและปรับใช้บน AWS Lolo Code จะช่วยให้คุณพัฒนาได้เร็วขึ้นและทำงานต่อไปโดยเสียค่าใช้จ่ายน้อยลง แม้ว่า Lolo Code ใช้ระบบคลาวด์ของ AWS เพื่อปรับใช้แอป แต่ก็ยังให้ความสามารถในการใช้รันไทม์ของคุณเอง ทำให้ไม่ต้องพึ่งพาระบบคลาวด์

❤️โลโล