Google Cloud Functions บริการคลาวด์แบบ serverless ของกูเกิล ประกาศรองรับภาษาโปรแกรมเวอร์ชันต่างๆ เพิ่มเติมดังนี้
กูเกิลเปิดตัวบริการ Cloud Run บริการแบบ serverless สำหรับสร้างบริการที่รันคำสั่งทาง HTTP โดยตัว Cloud Run เองสร้างจาก Knative ทำให้สามารถย้ายโหลดงานจากในองค์กรที่ทำ Kubernetes เองไปยังบริการ Kubernetes อื่น เช่น Google Kubenetes Engine (GKE) หรือย้ายกลับมายัง Cloud Run ได้อิสระ ไม่ติดกับแฟลตฟอร์ม
ตัว Cloud Run คิดค่าบริการที่ละ 0.1 วินาที คิดแยกทั้งซีพียู, แรม, ปริมาณรีเควส, และทราฟิก โดยทั่วไปสำหรับบริการที่ใช้งานไม่บ่อยนักน่าจะได้เปรียบอย่างมาก เพราะหากงานที่ใช้ต่อเนื่อง เฉพาะค่าซีพียูก็ประมาณ 62 ดอลลาร์ต่อเดือนแล้ว
Clound Run เปิดตัวมาเป็นเฟสเบต้าเลย คนทั่วไปสามารถใช้งานได้แล้ว สำหรับผู้ใช้ GKE เดิม ราคารวมกับ GKE อยู่แล้ว
AWS ปล่อยส่วนเสริม AWS Toolkit for Visual Studio Code สำหรับการพัฒนา CloudFormation และ Lambda ได้จากใน VSCode สามารถดีบั๊กและดีพลอยโค้ดขึ้นคลาวด์ได้เลยในตัว
ตัวปล๊กอินเป็นโอเพนซอร์สแจกโค้ดบน GitHub สัญญาอนุญาตเป็น Apache 2.0 กระบวนการติดตั้งนอกจากการติดตั้งปลั๊กอินแล้ว ยังต้องใช้ AWS CLI, Docker, และ AWS SAM CLI
ตอนนี้ยังเป็นเวอร์ชั่นพรีวิว ฟีเจอร์ยังขาดอยู่จำนวนมาก บน GitHub เองมี open issue อยู่ถึง 101 รายการ ส่วนมากเป็น feature request แต่ถ้าใครพัฒนา Lambda บ่อยๆ ก็น่าจะพอใช้งานได้แล้ว
บริการ AWS Lambda เปิดตัวเมื่อปี 2014 และเป็นผู้บุกเบิกการประมวลผลแบบ serverless ที่ไม่ต้องเปิดเครื่องค้างไว้รอรับคำสั่งตลอดเวลา ก่อนหน้านี้ Lambda รองรับโค้ดภาษา Java, Node.js, C#, Python และเมื่อต้นปีนี้คือ Go
ล่าสุด AWS Lambda ประกาศรองรับการนำเข้ารันไทม์ภาษาใดก็ได้แล้ว (custom runtime) พร้อมทั้งประกาศรองรับภาษาใหม่คือ Ruby, C++ และ Rust ผ่านระบบรันไทม์ใหม่นี้
Amazon เปิดตัวโครงการโอเพ่นซอร์สใหม่ Firecracker เทคโนโลยี virtualization แบบ kernel-based VM ที่ผู้ใช้สามารถรัน VM ขนาดเล็กหรือ microVM ได้ในเวลาเพียงไม่ถึงวินาที และใช้ทรัพยากรน้อยมาก ทั้งยังมีความปลอดภัยสูง
เทคโนโลยี microVM ของ Firecracker จะใช้ isolation และการป้องกันหลายชั้นเพื่อลดโอกาสการถูกโจมตี แต่ยังคงมีประสิทธิภาพสูง เพราะใช้เวลาในการเริ่มต้นรันเพียง 125 มิลลิวินาที (Amazon บอกว่าจะเร็วกว่านี้อีกในปีหน้า) และใช้เมมโมรี่เพียง 5 MiB ต่อตัว microVM เท่านั้น ทำให้ VM ขนาดเล็กเหล่านี้เหมาะกับการรันเวิร์คโหลดหลายรูปแบบ โดยเฉพาะเวิร์คโหลดที่ใช้เวลาไม่นานนัก หรืองานประเภท serverless เพราะลด overhead ในการรันได้มาก และใช้ทรัพยากรต่ำ
Cloudflare Workers เป็นบริการโค้ดแบบ serverless แบบเดียวกับ AWS Lambda และ Google Cloud Functions เมื่อสัปดาห์ที่แล้วทาง Cloudflare ก็เขียนบล็อกเล่าถึงเทคโนโลยีภายในของ Workers ที่เป็นฟีเจอร์ Isolates ของเอนจิน V8
Cloudflare Workers และ AWS Lambda เป็นคู่แข่งกันโดยตรง หลังจาก AWS เปิดตัว Lambda@Edge ที่เปิดให้รันโค้ดที่ปลายทางของ CDN
AWS เคยเปิดตัว Amazon Aurora Serverless บริการฐานข้อมูลแบบ serverless ที่สเกลตัวเองอัตโนมัติตามการใช้งานและคิดค่าใช้จ่ายตามจริงในงาน AWS re:Invent เมื่อปีที่แล้ว ล่าสุดฟีเจอร์นี้เริ่มให้บริการแบบ GA แล้วสำหรับฐานข้อมูล Aurora แบบที่รองรับ MySQL
Aurora Serverless เป็นบริการที่เหมาะกับการใช้กับงานประเภทที่คำนวณโหลดยาก หรืองานที่มีโหลดไม่บ่อยนัก ฐานข้อมูลจะสเกลตามโหลดจริง และหากไม่มีการใช้งานเลยก็สามารถพักการใช้งานหรือสเกลเหลือศูนย์ได้ด้วย
ปัจจุบันบริการประมวลผลบนคลาวด์โดยไม่ต้องเปิดเซิร์ฟเวอร์ทิ้งไว้ แต่กำหนดฟังก์ชันและคิดค่าใช้งานตาม event ที่กำหนดหรือที่เรียกว่า serverless กำลังเป็นที่นิยม โดยผู้ให้บริการคลาวด์รายใหญ่ต่างก็มีบริการของตัวเอง เช่น AWS Lambda, Google Cloud Functions และ Azure Functions
วันนี้เราจะมาทำความรู้จักกับสตาร์ทอัพใหม่จาก Bay Area ชื่อว่า Serverless Inc. แบบคร่าว ๆ บริษัทนี้ก่อตั้งในปี 2015 โดย Austin Collins ซีอีโอของบริษัทมองเห็นโอกาสพัฒนาเครื่องมือสำหรับการพัฒนาแอพบน serverless จึงก่อตั้งบริษัทขึ้นมา
Serverless Inc. เพิ่งจะระดมทุนไป 10 ล้านดอลลาร์ใน Series A จาก Lightspeed Ventures ซึ่งรวมแล้วบริษัทระดมทุนไปทั้งสิ้น 13 ล้านดอลลาร์
แนวทางการบริหารระบบเซิร์ฟเวอร์ยุคใหม่มีคำว่า Serverless ที่ไม่ต้องเปิดเซิร์ฟเวอร์ค้างไว้ แต่ให้ระบบทำงานต่อเมื่อมีเหตุการณ์ที่ระบุเกิดขึ้น (event-driven) ซึ่งผู้ให้บริการคลาวด์รายใหญ่ทุกเจ้าก็มีบริการแบบนี้ เช่น Amazon Lambda ที่เปิดมาตั้งแต่ปี 2014 หรือ Azure Functions ในปี 2016
ฝั่งกูเกิลออก Cloud Functions ในปี 2016 เช่นกัน ก่อนเปิดให้ทดสอบทั่วไปในปี 2017 และมาถึงปี 2018 ก็ได้เวลาเปิดบริการเต็มรูปแบบ (generally available หรือ GA)
แม้โลกไอทีองค์กรย้ายมาสู่ยุคคลาวด์เรียบร้อยแล้ว แต่โลกของคลาวด์เองก็ยังมีตัวเลือกมากมาย (แม้ในค่ายเดียวกันเอง) ผู้ใช้อาจสับสนระหว่างการเช่า VM ทั้งตัวหรือรันใน Container รวมถึงบริการแนวคิดใหม่ๆ อย่าง Serverless ที่ไม่ต้องเปิดเครื่องรันค้างไว้ตลอดเวลา
กูเกิลเขียนบล็อกอธิบายข้อแตกต่างเหล่านี้ของบริการในเครือ Google Cloud Platform (GCP) ทั้งหมด 4 ตัว ได้แก่
AWS ประกาศรองรับภาษา Go เป็นทางการสำหรับการพัฒนา Lambda เพิ่มทางเลือกสำหรับนักพัฒนาที่เคยชินกับ Go อยู่แล้ว
การพัฒนาหลักๆ คือการสร้างฟังก์ชั่นที่รับอาร์กิวเมนต์ 0-2 ตัว (ค่าแรกที่รับคือ context.Context) และคืนค่า 0-2 ค่า (ค่าสุดท้ายที่คืนคือ error) ไลบรารี aws-lambda-go รองรับการแปลงค่าระหว่าง Go และ json ให้
เมื่อปลายปีที่แล้วเพิ่งครบรอบ 8 ปีภาษา Go โดยโครงการจำนวนมากที่ใช้ Go เป็นโครงสร้างสำหรับคลาวด์ เช่น Docker/Moby หรือ Kubernetes การใช้งาน Go ใน AWS Lambda คงทำให้คนทำงานกับคลาวด์อยู่แล้วสะดวกขึ้น
ที่มา - AWS
Azure Functions บริการคลาวด์ Serverless ของไมโครซอฟท์ ประกาศรองรับภาษา Java เพิ่มเติม จากเดิมที่รองรับ C#, F#, Node.js, Python, PHP อยู่ก่อนแล้ว
ไมโครซอฟท์บอกว่าต้องการขยายการรองรับภาษาต่างๆ ให้มากขึ้น ก่อนหน้านี้ก็เพิ่งประกาศรองรับ .NET Core ไป การรองรับ Java จะช่วยให้โปรแกรมเมอร์สาย Java หันมาใช้งาน Azure Functions ได้ง่ายขึ้นโดยไม่ต้องเรียนรู้ภาษาใหม่ แถมโครงการที่ใช้ Maven อยู่แล้วก็สามารถนำมาใช้ต่อได้เลย
บริการคู่แข่ง AWS Lambda นั้นรองรับ Java อยู่ก่อนแล้ว ส่วน Google Cloud Functions ยังรองรับเฉพาะ JavaScript ภาษาเดียว
เทรนด์อย่างหนึ่งที่น่าสนใจในโลกการประมวลผลยุคคลาวด์คือ เราไม่จำเป็นต้องเปิดเซิร์ฟเวอร์ค้างไว้เพื่อรอประมวลผลอีกต่อไป มีงานประเภทใหม่ๆ ที่เราสามารถประมวลผลแบบ event-based เฉพาะเมื่อเกิดเหตุการณ์ตามที่กำหนดเท่านั้น (แปลว่าไม่คิดเงินค่าใช้งานตามเวลา แต่คิดตามจำนวนรีเควสต์แทน) แนวทางนี้เรียกกันว่า serverless
ผู้ให้บริการคลาวด์รายใหญ่ต่างมีบริการลักษณะนี้ ไม่ว่าจะเป็น Amazon Lambda, Google Cloud Functions และ Microsoft Azure Functions
แนวคิดบริการคลาวด์แบบ serverless ไม่ต้องเปิดเครื่องรันทิ้งไว้ ทำงานเมื่อถูกเรียกใช้งาน กำลังมาแรงขึ้นเรื่อยๆ โดยเริ่มจาก AWS Lambda ที่เปิดมาก่อนเพื่อน
ฝั่ง Google Cloud Platform ก็ออกบริการแบบเดียวกันในชื่อ Cloud Functions ที่เปิดตัวครั้งแรกช่วงต้นปี 2016 โดยยังจำกัดวงทดสอบแบบอัลฟ่า
เวลาผ่านมา 1 ปี บริการก็เปิดให้คนทั่วไปทดสอบแบบ public beta แล้ว
ผู้ให้บริการคลาวด์รายใหญ่ของโลกยังต่อสู้กันอย่างดุเดือด ในปี 2014 เราเห็น Amazon ออกบริการ AWS Lambda ตัวช่วยประมวลผลข้อมูลอัตโนมัติเมื่อเกิดเหตุการณ์ที่ระบุ (event-driven)
สัปดาห์ที่ผ่านมา ไมโครซอฟท์ออกบริการแบบเดียวกันในชื่อ Azure Functions รูปแบบการใช้งานก็เหมือนกัน เราสามารถตั้งค่าเหตุการณ์ที่เป็นตัว trigger เพื่อให้ Azure Functions ทำงานตามที่กำหนดได้
Azure Functions รองรับภาษาโปรแกรมมิ่งหลากหลาย ทั้ง JavaScript, C#, Python, PHP รวมถึงสคริปต์แบบ Bash, Batch, PowerShell และสามารถเชื่อมต่อกับระบบ DevOps ยอดนิยมในท้องตลาด เช่น Visual Studio Team Services, GitHub, BitBucket
กูเกิลเปิดตัว Google Cloud Function รุ่นอัลฟ่า บริการรันโค้ดบนคลาวด์โดยไม่ต้องเซ็ตเครื่องขึ้นมาใช้งาน โดยระหว่างช่วงอัลฟ่านี้ต้องขอใช้งานเป็นรายคน
บริการนี้เป็นคู่แข่งโดยตรงของ AWS Lambda สำหรับการรันโค้ดที่มักจะไม่ซับซ้อนนักเพื่อจัดการกับข้อมูลที่เข้ามา กรณีเช่นมีการอัพโหลดภาพใหม่แล้วต้องการให้สร้างภาพย่อ (thumbnail) เตรียมไว้เสมอ กรณีของ Cloud Function ตัวโค้ดสามารถถูกเรียกจากบริการ Pub/Sub (ซึ่งทำให้เรียกจาก Cloud Logging และ Gmail ได้ด้วย), HTTP, Google Cloud Storage สำหรับการพัฒนาก็สามารถเรียกตรงจาก SDK ของ Google Cloud ได้โดยตรง
Amazon Web Services (AWS) เปิดตัวบริการใหม่ AWS Lambda บริการประมวลผลข้อมูลอัตโนมัติตามเหตุการณ์ (event) ที่กำหนดไว้ (เช่น ถ้าผู้ใช้ถ่ายภาพใหม่เมื่อไร ให้ Lambda นำภาพนี้จัดเก็บลงบัญชี S3)