وظائف Serverless بلغة Java مع AWS Lambda: من الفكرة إلى النشر
بنية Serverless (أو الحوسبة بدون خوادم) هي نموذج للحوسبة السحابية حيث يتجرد المطور تمامًا من إدارة الخوادم. أنت فقط تكتب الكود، وتحمله إلى السحابة، ويقوم المزود (AWS, Google Cloud, Azure) بتوسيع البنية التحتية تلقائيًا. AWS Lambda هي الخدمة الرائدة من Amazon في هذا المجال. في هذه المقالة، سنشرح كيفية إنشاء وظائف serverless بلغة Java باستخدام AWS Lambda، من الصفر إلى مثال جاهز للإنتاج.
ما هي AWS Lambda ولماذا Java؟
تتيح AWS Lambda تنفيذ الكود استجابة للأحداث (طلبات HTTP، تحميل الملفات إلى S3، التغييرات في DynamoDB، إلخ) دون تخصيص أجهزة افتراضية. أنت تدفع فقط مقابل وقت التنفيذ الفعلي وعدد الطلبات.
Java هي لغة ناضجة، ذات كتابة ثابتة، مع نظام بيئي ضخم من المكتبات (Spring, Micronaut, Quarkus). ومع ذلك، فإن Java لها خصائص معينة لـ serverless: البداية الباردة (وقت تحميل JVM) قد تكون أعلى من Node.js أو Python. لكن الأطر الحديثة (مثل Quarkus أو Spring Cloud Function) واستخدام GraalVM Native Image تحل هذه المشكلة، مما يجعل Java خيارًا تنافسيًا.
إعداد بيئة التطوير
للعمل مع AWS Lambda بلغة Java، ستحتاج إلى:
- JDK 11 أو 17 (يوصى باستخدام 17 للحصول على أداء أفضل).
- Maven أو Gradle (نحن نستخدم Maven).
- حساب AWS و AWS CLI مثبت.
- بيئة تطوير متكاملة IDE (IntelliJ IDEA, Eclipse, VS Code).
أنشئ مشروع Maven أساسي. أضف تبعية AWS Lambda Java Core إلى pom.xml:
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-lambda-java-core</artifactId> <version>1.2.3</version></dependency>أيضًا، أضف إضافة (plugin) للبناء:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.0</version> <executions> <execution> <phase>package</phase> <goals><goal>shade</goal></goals> </execution> </executions></plugin>إنشاء أول دالة Lambda بلغة Java
أنشئ الفئة HelloLambda.java:
import com.amazonaws.services.lambda.runtime.Context;import com.amazonaws.services.lambda.runtime.RequestHandler;
public class HelloLambda implements RequestHandler<String, String> {
@Override public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello, " + input + "! تم تنفيذ دالة Lambda الخاصة بك بلغة Java."; }}شرح:
RequestHandler<String, String>— واجهة، حيث النوع الأول هو بيانات الإدخال، والثاني هو نوع القيمة المرجعة.Context— كائن يوفر معلومات عن بيئة التنفيذ (المسجل، الوقت، اسم الدالة).
قم ببناء المشروع: mvn clean package. في المجلد target سيظهر ملف JAR (مثل lambda-java-1.0-SNAPSHOT.jar).
نشر الدالة في AWS Lambda
يمكن إجراء النشر عبر AWS Console أو CLI. سنشرح CLI (الطريقة الأسرع):
aws lambda create-function \ --function-name HelloJavaLambda \ --runtime java17 \ --role arn:aws:iam::YOUR_ACCOUNT_ID:role/lambda-basic-execution \ --handler HelloLambda::handleRequest \ --zip-file fileb://target/lambda-java-1.0-SNAPSHOT.jarالمعلمات الهامة: