دوال Serverless بلغة Kotlin: AWS Lambda والبدائل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Serverless بلغة Kotlin: AWS Lambda والنظائر — نكتب كودًا بدون خادم يعمل

\n

في الماضي، كانت كتابة الواجهة الخلفية مرادفًا لإعداد الخوادم، وتهيئة Nginx، وليالٍ بلا نوم مع مراقبة الحمل. اليوم الأمر مختلف تمامًا. Serverless ليس خيالًا علميًا، بل واقع يسمح لك بنسيان العتاد والتركيز على منطق التطبيق. وإذا كنت تكتب بلغة Kotlin، فستحصل على كود أنيق وآمن وسريع يتناسب تمامًا مع البنية التحتية بدون خادم.

\n

في هذه المقالة، سنشرح كيفية إنشاء دوال serverless بلغة Kotlin، وما هي أفضل مزودي الخدمات السحابية، وكيف لا تغرق في تفاصيل التهيئة. هيا بنا!

\n\n

ما هو Serverless ولماذا Kotlin هو الخيار الأمثل

\n

Serverless (أو الحوسبة بدون خادم) هو نموذج حوسبة سحابية حيث تكتب الكود ويتولى المزود مسؤولية البنية التحتية. أنت لا تدفع مقابل خادم خامل - فقط مقابل وقت تنفيذ الدالة. يبدو كحلم؟ بالنسبة لـ Kotlin، هذا مهم بشكل خاص.

\n

لماذا Kotlin بالتحديد؟ أولاً، يتم تجميعه إلى bytecode لـ JVM، مما يوفر دعمًا أصليًا على AWS Lambda وGoogle Cloud Functions وAzure Functions. ثانيًا، Kotlin هي لغة حديثة بتكلفة صفرية للتجريدات، و lambdas، و coroutines. ثالثًا، تركيبها اللغوي يسمح بكتابة كود موجز يسهل صيانته.

\n

المزايا الرئيسية لـ دوال serverless بلغة Kotlin:

\n
    \n
  • توفير التكاليف — تدفع فقط مقابل التنفيذ الفعلي للكود.
  • \n
  • التوسع — السحابة تقرر بنفسها عدد النسخ التي يجب تشغيلها.
  • \n
  • البساطة — لا حاجة لتهيئة الخادم.
  • \n
  • بداية سريعة — النشر بأمر واحد.
  • \n
\n

لكن هناك بعض الفروق الدقيقة: "البدء البارد" (cold start) قد يستغرق بضع ثوانٍ، خاصة للغات JVM. ومع ذلك، تعلم المزودون الحديثون كيفية التعامل مع هذا: AWS Lambda مع Provisioned Concurrency أو Google Cloud Functions مع min-instances تحل المشكلة.

\n\n

AWS Lambda: ملك الحوسبة بدون خادم

\n

لنبدأ بالخدمة الأكثر شهرة — AWS Lambda. تقدم Amazon Web Services نظامًا بيئيًا ناضجًا حيث يعمل Kotlin "مباشرة من الصندوق" عبر Java Runtime.

\n

كيفية تهيئة AWS Lambda لـ Kotlin

\n

ستحتاج إلى Gradle أو Maven. سنستخدم Gradle مع إضافة Kotlin. مثال build.gradle.kts:

\n
plugins {\n    kotlin("jvm") version "1.9.0"\n    id("com.github.johnrengelman.shadow") version "7.1.2"\n}\n\ndependencies {\n    implementation("com.amazonaws:aws-lambda-java-core:1.2.2")\n    implementation("com.amazonaws:aws-lambda-java-events:3.11.0")\n}\n\ntasks {\n    shadowJar {\n        archiveBaseName.set("lambda-function")\n        archiveClassifier.set("")\n    }\n}
\n

الآن لنكتب الدالة نفسها. تتوقع AWS Lambda فئة بطريقة handleRequest. إليك معالج بسيط يعيد تحية:

\n
import com.amazonaws.services.lambda.runtime.Context\nimport com.amazonaws.services.lambda.runtime.RequestHandler\n\nclass HelloHandler : RequestHandler<Map<String, String>, String> {\n    override fun handleRequest(input: Map<String, String>, context: Context): String {\n        val name = input["name"] ?: "World"\n        return "Hello, $name! دالة serverless الخاصة بك بلغة Kotlin تعمل!"\n    }\n}
\n

قم ببناء fat JAR: ./gradlew shadowJar. قم بتحميله إلى AWS Lambda، وحدد runtime Java 11 أو Java 17. تم!

\n

العمل مع أحداث AWS

\n

غالبًا ما تتفاعل Lambda مع أحداث S3 أو DynamoDB أو API Gateway. مثال معالج لـ S3:

\n
import com.amazonaws.services.lambda.runtime.events.S3Event\n\nclass S3Handler : RequestHandler<S3Event, String> {\n    override fun handleRequest(event: S3Event, context: Context): String {\n        val bucket = event.records.f                

المدونات

توصيات الكتب