ทดสอบความเร็ว .NET Core 3.1 (Official Runtimes) บน AWS Lambda

และแล้ว วันที่ผมรอคอย (รวมถึงชาว .NET Core บน. AWS Lambda) ก็มาถึง เมื่อ AWS ประกาศรองรับ .NET Core 3.1 เป็น Official Runtime แล้วจ้า (จริงๆ ประกาศตั้งแต่ 31 มีนาคม 2563 แต่ผมเห็นช้าไปหน่อย แหะๆ) ต้องขอทดสอบสักหน่อยว่าดีขึ้นแค่ไหน แต่เฉลยไว้ก่อนเลยว่า ลดเวลาการเกิด Cold Start จาก .NET Core 2.1 ได้ถึง 50% เลยทีเดียว

Continue reading “ทดสอบความเร็ว .NET Core 3.1 (Official Runtimes) บน AWS Lambda” »

ทดสอบความเร็ว .NET Core 3.0 และฟีเจอร์ ReadyToRun (R2R) ในการทำ AWS Lambda

เมื่อ 23 กันยายน ที่ผ่านมา Microsoft ได้ฤกษ์เปิดตัว .NET Core 3.0 (3.0.100) ตัวเต็มให้ได้เล่นกัน หลังจากเป็นข่าวมาร่วมปี ซึ่งมาพร้อมกับฟีเจอร์และพัฒนา Performance จากเวอร์ชัน 2.2 เยอะพอสมควร ใครอยากรู้รายละเอียดสามารถไปตามอ่านได้ที่ Announcing .NET Core 3.0

ในครั้งนี้มีฟีเจอร์หนึ่งที่น่าสนใจคือ ReadyToRun (R2R) ซึ่งจริงๆ มันมาตั้งแต่ .NET Core 3 Preview 6 แล้ว นั่นคือทำให้ .NET Core application แปลงเป็น Native App ให้ไวขึ้น ส่งผลกับ startup time ที่ดีขึ้น (AOT – ahead-of-time) จากแต่เดิมซึ่งมีเพียงแค่ แปลง Byte Code เป็น Executable Code (JIT – Just in Time)

ผมนี่ตาลุกวาวทันที ไม่รอช้าที่จะหยิบมันมาทดสอบเป็น AWS Lambda เพื่อดูปัญหา Cold Start ว่าจะดีขึ้นได้มากน้อยแค่ไหน

Continue reading “ทดสอบความเร็ว .NET Core 3.0 และฟีเจอร์ ReadyToRun (R2R) ในการทำ AWS Lambda” »

ทดสอบ AWS Lambda Function บนเครื่องตัวเอง ด้วย Lambda Docker

จากที่เคยนำเสนอเครื่องมือตัวหนึ่งไปแล้วในบล็อก ทดสอบ .NET AWS Lambda ด้วย AWS .NET Mock Lambda Test Tool แต่ยังไม่หนำใจ เพราะผมพบว่ามันมีปัญหากับโค้ดที่เขียนแบบ Dependency Injection ซึ่งลองหาวิธี Debug แต่ก็ยังไม่เห็นอะไร เลยตัดใจลองหาเครื่องมือตัวอื่นดู ก็เจอ AWS SAM (AWS Serverless Application Model)

แต่ก็กระนั้นอีก ในหน้าเว็บโปรเจ็คบอกทำงานกับ .NET Core 2.1 ได้ แต่พอลองทำดู กลับบอกว่า ไม่รองรับ .NET Core Runtime!! (ใครแก้ปัญหาสองข้อบนของผมได้ มาแลกเปลี่ยนความรู้กันหน่อยครับ จักหายคาใจ) ก็เลยต้องแกะมัน พบว่า มันไปใช้ Lambda Docker เพื่อสร้าง Environment จำลองขึ้นมาสำหรับทดสอบ.. ปั๊ดโธ่ว แบบนี้ก็เสร็จโก๋!! จึงเป็นที่มาของบล็อกนี้..

Continue reading “ทดสอบ AWS Lambda Function บนเครื่องตัวเอง ด้วย Lambda Docker” »

4 วิธีจัดการ Versioning และ Environment ของ AWS Lambda Function โดยไม่ต้องแก้ไขโค้ด

เป็นเรื่องสำคัญที่เรามักมองข้ามไป ว่าจะจัดการ Lambda Function อย่างไรให้ใช้ได้กับ Environment ต่างๆ เช่น Development, UAT, Production และต้องไม่กระทบกับการใช้งานของผู้ใช้ด้วย ดังนั้น สิ่งที่ต้องดูต่อ คือ เราต้องกำหนด Lambda Function Version ให้แต่ละ Environment ด้วยใช่หรือไม่?

จากที่ผมลองเล่นดู พบอยู่ 4 วิธี ที่กำลังจะเขียนแชร์ในบล็อกนี้เอง มันมีทั้งข้อดีและข้อเสีย ซึ่งผู้อ่านคงต้องนำไปพิจารณาและตัดสินใจใช้ตามความเหมาะสมกันเอง

Continue reading “4 วิธีจัดการ Versioning และ Environment ของ AWS Lambda Function โดยไม่ต้องแก้ไขโค้ด” »

ทดสอบ .NET AWS Lambda ด้วย AWS .NET Mock Lambda Test Tool

ปัญหาหลักของของเขียน Serverless ต่างๆ คือจะทดสอบโค้ดตัวเองอย่างไร ไม่ให้เสียเงินค่า Compute และ Request ตลอดเวลา ยิ่งถ้าโค้ดนั้นไม่มี Unit Test แล้ว ยิ่งยาก เพราะเราไม่สามารถจำลอง Serverless Runtime ได้เอง

ตัว AWS Lambda เอง เลยออกเครื่องมือตัวหนึ่งสำหรับชาว .Net ชื่อว่า AWS .NET Mock Lambda Test Tool เป็นเครื่องมือที่ช่วยให้นักพัฒนาสามารถทดสอบ Business Logic ของโค้ดตัวเองได้ง่ายๆ ไม่โดนคิดเงิน และคล้ายกับที่ทำงานบน AWS ด้วย

Continue reading “ทดสอบ .NET AWS Lambda ด้วย AWS .NET Mock Lambda Test Tool” »