ในชุมชนนักพัฒนา Python เครื่องมือจัดการโครงสร้างพื้นฐาน AWS ตัวใหม่ที่ชื่อว่า Stelvio กำลังได้รับความสนใจขณะที่นักพัฒนากำลังมองหาทางเลือกจากโซลูชันที่มีอยู่ ปัจจุบัน Stelvio อยู่ในช่วง alpha ระยะแรก โดยมีเป้าหมายเพื่อทำให้การปรับใช้งานบนคลาวด์สำหรับนักพัฒนา Python ง่ายขึ้น ด้วยการอนุญาตให้พวกเขากำหนดโครงสร้างพื้นฐานของ AWS โดยใช้โค้ด Python ล้วนๆ แทนที่จะใช้การกำหนดค่าแบบ JSON หรือภาษาอื่นๆ
ภูมิทัศน์ที่แตกแยกของเครื่องมือ Python สำหรับ AWS
ระบบนิเวศปัจจุบันสำหรับนักพัฒนา Python ที่ทำงานกับสถาปัตยกรรมแบบ serverless ของ AWS มีความแตกแยกอย่างเห็นได้ชัด นักพัฒนาในชุมชนได้เน้นย้ำถึงโซลูชันที่มีอยู่หลากหลาย รวมถึง Zappa, Chalice, Serverless Framework, AWS CDK, CloudFormation และ AWS SAM ซึ่งแต่ละตัวมีข้อจำกัดของตัวเอง เครื่องมือหลายตัวถูกทิ้งร้าง ได้รับการดูแลไม่ดี ต้องการการกำหนดค่าที่ไม่ใช่ Python หรือไม่ได้ออกแบบมาโดยเฉพาะสำหรับนักพัฒนา Python
I think it's amazing the python community has like 5 half baked solutions to this problem, all of which are either abandoned, poorly monetized, or have a janky UI.
ความรู้สึกนี้สะท้อนถึงความคับข้องใจที่นักพัฒนา Python หลายคนรู้สึกเมื่อพยายามปรับใช้แอปพลิเคชันแบบ serverless บน AWS การเปลี่ยนแปลงอย่างกะทันหันของ Serverless Framework ซึ่งเปลี่ยนไปใช้โมเดลแบบเสียเงินในเวอร์ชัน 4 ยิ่งทำให้การค้นหาทางเลือกที่เชื่อถือได้เข้มข้นขึ้น โดยนักพัฒนาบางคนกล่าวถึง fork ที่ชุมชนดูแลเช่น osls เป็นโซลูชันชั่วคราว
เครื่องมือสำหรับการเผยแพร่ Python บน AWS ที่กล่าวถึงในการสนทนา:
- Stelvio (อัลฟ่าระยะเริ่มต้น) - โครงสร้างพื้นฐานแบบโค้ดที่เป็นภาษา Python โดยตรง
- Zappa - ใช้การกำหนดค่าแบบ JSON
- Chalice - ดูเหมือนถูกทอดทิ้ง ผสมโครงสร้างพื้นฐานกับโค้ดแอปพลิเคชัน
- Serverless Framework - เพิ่งเปลี่ยนเป็นโมเดลแบบเสียค่าใช้จ่ายในเวอร์ชัน 4
- osls - ทางเลือกโอเพนซอร์สสำหรับ Serverless Framework
- AWS CDK - มีรายละเอียดมากกว่าแต่ครอบคลุม
- CloudFormation - ภาษาเทมเพลต AWS ระดับต่ำ
- AWS SAM - CloudFormation ที่ถูกทำให้ง่ายขึ้นสำหรับ serverless
- Mangum - ห่อหุ้มแอป ASGI สำหรับการเผยแพร่บน Lambda
คุณสมบัติปัจจุบันของ Stelvio:
- รองรับ AWS Lambda
- การผสานรวมกับ Amazon DynamoDB
- การกำหนดค่า API Gateway
- การจัดการบทบาทและนโยบาย IAM แบบอัตโนมัติ
- การกำหนดค่าด้วยภาษา Python โดยตรง
ที่จะมาใน Stelvio v0.2.0 (เมษายน 2025):
- การจัดการ dependencies และ layers ของ Lambda
- ดัชนีของ DynamoDB
- การรองรับ CORS
- ตัวตรวจสอบสิทธิ์ API Gateway
แนวทาง Developer-First ของ Stelvio
Stelvio แตกต่างจากเครื่องมืออื่นด้วยการมุ่งเน้นเฉพาะนักพัฒนา Python มากกว่าผู้เชี่ยวชาญด้านโครงสร้างพื้นฐาน ผู้สร้าง Stelvio ชื่อ Michal อธิบายว่าแม้ AWS CDK จะเป็นการปรับปรุงที่สำคัญเมื่อเทียบกับ CloudFormation และ Terraform แต่เครื่องมือโครงสร้างพื้นฐานยังสามารถทำให้เป็นมิตรกับนักพัฒนามากขึ้นได้
แนวทางของ Stelvio เน้นโค้ด boilerplate ที่น้อยที่สุดผ่านค่าเริ่มต้นที่ชาญฉลาด ตัวอย่างเช่น การสร้างตาราง DynamoDB พร้อมการผสานรวม API Gateway ต้องใช้โค้ด Python เพียงไม่กี่บรรทัด โดยจัดการการสร้างนโยบาย IAM, บทบาท, ทรัพยากร API Gateway, วิธีการ, การผสานรวม และกลุ่มบันทึก CloudWatch โดยอัตโนมัติ ซึ่งเป็นงานที่ต้องใช้โค้ดมากกว่านี้อย่างมากใน AWS CDK
หลักการออกแบบที่สำคัญของ Stelvio คือการแยกโค้ดโครงสร้างพื้นฐานออกจากโค้ดแอปพลิเคชัน ซึ่งต่างจากทางเลือกบางอย่างที่ผสมผสานพวกเขาผ่านตัวตกแต่ง (decorators) หรือกลไกอื่นๆ การแยกที่ชัดเจนนี้สอดคล้องกับแนวปฏิบัติที่ดีที่สุดในวิศวกรรมซอฟต์แวร์ ในขณะที่ยังคงรักษาความเรียบง่ายที่นักพัฒนา Python คาดหวัง
ความสามารถปัจจุบันและแผนงานในอนาคต
ปัจจุบัน Stelvio รองรับ AWS Lambda, Amazon DynamoDB, API Gateway และการกำหนดค่า IAM อัตโนมัติ ตามที่นักพัฒนากล่าว เวอร์ชัน 0.2.0 คาดว่าจะออกในเดือนเมษายน 2025 พร้อมการสนับสนุนการพึ่งพา lambda และเลเยอร์, ดัชนี DynamoDB, CORS และตัวอนุญาต API Gateway เวอร์ชัน 0.3.0 จะแนะนำเครื่องมือ CLI โดยเฉพาะ
ในขณะที่การใช้งานปัจจุบันมุ่งเน้นที่องค์ประกอบแบบ serverless นักพัฒนาได้บ่งชี้ถึงแผนการครอบคลุมบริการ AWS ที่กว้างขึ้นนอกเหนือจากข้อเสนอ Lambda/API/DynamoDB เริ่มต้น ซึ่งอาจรวมถึงการกำหนดค่า VPC, NAT gateways และกลุ่มความปลอดภัย นอกจากนี้ยังมีการกล่าวถึงการขยายไปยังบริการอื่นๆ นอกเหนือจาก AWS เช่น Cloudflare
การตอบรับของชุมชนและการถกเถียงที่ดำเนินอยู่
การตอบรับในหมู่นักพัฒนา Python โดยทั่วไปเป็นไปในเชิงบวก โดยหลายคนแสดงความสนใจในเครื่องมือที่ทำให้การจัดการโครงสร้างพื้นฐาน AWS ง่ายขึ้นโดยใช้ไวยากรณ์ Python ที่คุ้นเคย นักพัฒนาบางคนที่ปัจจุบันมีปัญหากับการสร้าง API Gateway ได้บ่งชี้ว่าพวกเขาจะนำ Stelvio มาใช้เมื่อมีความพร้อมในการผลิต
อย่างไรก็ตาม การสนทนาในชุมชนยังเผยให้เห็นการถกเถียงที่กำลังดำเนินอยู่เกี่ยวกับตัวเลือกทางสถาปัตยกรรม นักพัฒนาบางคนตั้งคำถามเกี่ยวกับการมุ่งเน้นที่ Lambda และ DynamoDB โดยแนะนำว่าเซิร์ฟเวอร์แบบดั้งเดิมและฐานข้อมูลแบบสัมพันธ์อาจตอบสนองแอปพลิเคชันได้ดีกว่าเมื่อพวกเขาเติบโตและความต้องการพัฒนาขึ้น คนอื่นๆ สอบถามเกี่ยวกับการตัดสินใจสร้างบน Pulumi แทนที่จะใช้ boto3 โดยตรง ซึ่งนักพัฒนาได้อ้างถึงประโยชน์เช่นการจัดการสถานะและศักยภาพในการใช้งานหลายคลาวด์
ในขณะที่โครงสร้างพื้นฐานคลาวด์ยังคงเติบโตในความซับซ้อน เครื่องมือเช่น Stelvio แสดงถึงความพยายามที่จะทำให้การปรับใช้งานเข้าถึงได้มากขึ้นสำหรับนักพัฒนาที่ต้องการมุ่งเน้นการสร้างแอปพลิเคชันมากกว่าการจัดการรายละเอียดโครงสร้างพื้นฐาน ไม่ว่า Stelvio จะประสบความสำเร็จในที่ที่เครื่องมืออื่นๆ มีปัญหาหรือไม่ก็ตาม แต่แนวทางแบบ Python-native และการมุ่งเน้นประสบการณ์ของนักพัฒนาดูเหมือนจะแก้ไขจุดที่เจ็บปวดจริงๆ ในชุมชน
อ้างอิง: Stelvio