You are on page 1of 5

‫الحوسبة دون خادم‪(Serverless Computing):‬‬

‫ال خادم بعد اآلن؟‬

‫مالحظة‪ :‬كنتُ قد بحثتُ عن ترجم ٍة مناسب ٍة لعبارة )‪ (Serverless‬وقد وجدتُ العديد من الترجمات المقترحة“ ‪:‬الالّخوادم”‪“ ،‬التخلّي‬
‫عن الخوادم”‪ ،‬بدون خادم‪“ ،‬الحوسبة الغير مرتكزة على خوادم”‪ ،‬وغيرها؛ لكنّي رأيتُ أن أترجمها إلى عبارة “دون خادم‪”.‬‬

‫مل ّخص التدوينة‪ :‬الحوسبة دون خادم )‪ (Serverless Computing‬والتطبيقات دون خادم )‪ (Serverless Applications‬وما‬
‫بأسرع‬
‫ِ‬ ‫لمنتج ما أو خدمة أو تطبيق‪ ،‬وتريد أن تصل بها إلى السوق‬
‫ٍ‬ ‫هو دون خادم‪ ،‬أعتبر ُه العبًا خرافيًّا أنيقًا‪ ،‬فمتى كانت لديك فكرة‬
‫تتشرب الحوسبة دون خادم والتطبيقات دون خادم‪.‬‬
‫ّ‬ ‫تجرب ثم‬
‫ت ممكن؛ فأنصحك بأن ّ‬ ‫وأخصر وق ٍ‬
‫ِ‬

‫دون خادم؟‬
‫مبدئيًا‪ ،‬الحوسبة دون خادم تتي ُح لك بناء وتشغيل التطبيقات والخدمات دون الحاجة إلى التفكير بالخوادم؛ وليس ‪-‬في الحقيقة‪ -‬دون‬
‫الحاجة إلى خادم‪ .‬التطبيقات دون خادم ال تتطلّب منك تجهيز )‪ (Provision‬أو توسّع )‪ (Scale‬أو إدارة )‪ (Manage‬أيًّا من‬
‫نوع من التطبيقات أو خدمات الناحية الخلفيّة ‪ (Backend Service).‬ستالحظ ‪-‬عزيزي‬ ‫ي ٍ‬ ‫الخوادم‪ .‬يُمكنك استخدامهما لبناء أ ّ‬
‫القارئ‪ -‬أنّ كل ما يتطلّب تشغيل وتوسّع ووفرةٍ عالية)‪ ، (High Availability‬ستالحظ أنّه قد أزيح عن كاهلك‪.‬‬

‫خادم خامل)‪ ، (Idle‬وال أن تقلق بشأن التحديثات األمنيّة لهذا الخادم أو تقلق بشأن‬
‫ٍ‬ ‫ي بامتياز؛ فال حاجة ألن تدفع لقاء‬
‫هذا األمر ‪ -‬ثور ٌّ‬
‫توفّره من عدمه‪ .‬أنت ‪-‬عزيزي القارئ‪ -‬ستدفع ‪-‬في هذا السياق‪ -‬لقاء تنفيذ الدالّة البرمجيّة وحسب ‪.‬‬
‫المطورون على المنتج األساسي بدالً من أن يقلقوا تجاه إدارة وتشغيل الخوادم أو بيئات‬
‫ّ‬ ‫ت دون خادم يعني أن ير ّكز‬ ‫بناء تطبيقا ٍ‬
‫المطورين وقتاً‬
‫ّ‬ ‫التشغيل )‪ (Runtimes‬سوا ًء كانت هذه الخوادم سحابيّة أو محليّة ‪ (On-Premises).‬إزاحة هذه الضغوط سيمن ُح‬
‫ت رائع ٍة وموثوق ٍة )‪ (Reliable‬تتوسّع متى تطلّب األمر‪.‬‬
‫مزيدًا وطاقةً‪ ،‬يُمكن االستفادة منهما في تطوير منتجا ٍ‬

‫“المدا‪ (Lambda)” -‬مثالً‪ -‬وهي إحدى خدمات أمازون )‪ (AWS‬وما يشبهها مثل “دوا ّل قوقل ”)‪ (Google Functions‬و”دوا ّل‬
‫أزُ ور”)‪ ، (Azure Functions‬تتيح لك تنفيذ الشفرة البرمجيّة )‪ (Code‬دون الحاجة إلى تجهيز أو إدارة الخوادم ذات العالقة؛ إذ‬
‫تدفع لقاء وقت الحوسبة )‪ (Compute Time‬الذي تستهلكه‪ ،‬ليس ث ّمة تكاليف للشفرة البرمجيّة الخاملة التي ال تعمل‪ .‬ك ّل ما عليك‬
‫القيام به أن ترفع شفرتك البرمجيّة إلى هذه الخدمات وما يشبهها ث ّم ستقوم األخيرة بما هو مطلوب لتشغيل وتوسّع شفرتك البرمجيّة‬
‫بوفر ٍة عالية‪.‬‬

‫كيف وصلنا إلى هنا؟‬


‫ي تطبيق على الويب ‪-‬مثالً‪ ،-‬كنتَ تطلب خاد ًما ملموسًا )‪ُ (Physical‬مسبقًا‪،‬‬ ‫لن ُعد ‪ -‬إلى فتر ٍة سابقة قلي ً‬
‫ال‪ ،‬كنتَ حتّى تقوم بتشغيل أ ّ‬
‫خسائر فادح ٍة تأتي ‪-‬‬ ‫َ‬ ‫بتخمين تظنّ أنّه متع ّمق فتجد أنّه يؤدي إلى‬
‫ٍ‬ ‫مكونات الخادم‪ ،‬وترمي‬ ‫ً‬
‫ت تفصيليّة حول كل ّ‬ ‫وكنتَ تعطي معلوما ٍ‬
‫عادةً‪ -‬إ ّما على هيئة شراء خوادم أكثر م ّما يجب‪ ،‬أو ‪-‬واألسوأ من ذلك‪ -‬أن تكتشف أنّ الخوادم التي قمت بشرائها ال تستطيع تح ّمل‬
‫الضغط‪ ،‬هما أمران ‪-‬عزيزي القارئ‪ -‬أحالهما ُم ّر‪ .‬كان النّاس ‪-‬غالبًا‪ -‬يتح ّملون التكلفة المرتفعة ويشترون خواد ًما بعتا ٍد‬
‫ي‪(Scale Up/Vertical Scaling)”.‬‬ ‫)‪ُ (Hardware‬مذهل‪ .‬شراء هذه الخوادم القويّة كان يس ّمى “التوسّع بشك ٍل عمود ّ‬

‫ي‪).‬‬
‫(صورة‪ :‬توضيح آلليّة التوسّع بشك ٍل عمود ّ‬

‫طا‪“ :‬التوسّع بشك ٍل أفقي ‪ (Scale Out/Horizontal Scaling)”.‬هذا يعني‬ ‫بعض الشركات ‪-‬بعد فترةٍ من الزمن‪ -‬وجدت حالًّ وس ً‬
‫إضافة مجموعة من العتاد منخفض التكلفة جنبًا إلى جنب ومن ث ّم توزيع ضغط الحوسبة )‪ (Computing Load‬بين هذا العتاد؛‬
‫ٌ‬
‫امتياز عن التوسّع بشك ٍل‬ ‫ت قويّة و ُمكلفة‪ .‬التوسّع بشك ٍل أفقي لديه‬ ‫كنتيجةً لذلك‪ ،‬ظهرت آالتٌ ذات ّ‬
‫قوة وكُلفة منخفضة بدالً من آال ٍ‬
‫عمودي‪ ،‬ال شكّ أنّ التوسّع بشك ٍل أفقي يعتبر أسهل‪ ،‬لكنّك قد تجد نفسك ‪-‬يو ًما من األيّام‪ -‬قد بلغتَ السقف (في التكاليف أو الضغط)‬
‫وبين راحتيك أغلى آلة يمكن لك شراؤها‪ .‬التوسّع بشك ٍل عمودي وفّر عليك المال‪ ،‬توسّع ‪-‬عزيزي القارئ‪ -‬حسب االحتياج‪ ،‬توسّع‬
‫بشك ٍل ال نهائي متى أردت‪.‬‬
‫ي‪).‬‬
‫(صورة‪ :‬توضيح آلليّة التوسّع بشك ٍل أفق ّ‬

‫بعد ذلك‪ ،‬جاءت “البيئة اإلفتراضيّة ”)‪ (Virtualization‬أو “الحوسبة التخيّليّة”‪“ .‬اآللة اإلفتراضيّة” هي عبارة عن برمجيّة‬
‫ي شيء من تلقاء نفسها دون أن‬‫تحاكي الخوادم العتيقة ال ُمعتمدة على العتاد‪ .‬قد نطرح سؤاالً هنا‪ :‬أال يُمكن لهذه البرمجيّة أن تقوم بأ ّ‬
‫تحاكي الخوادم؟ ويبدو أن سبب قيامها بذلك هو أنّ هذا النموذج كان هو الذي يستخدمه الجميع‪.‬‬

‫“السحابة ”)‪ (Cloud‬أتت الحقًا‪ ،‬بدأت بما يس ّمى “البنية التحتيّة كخدمة ‪ (Infrastructure as a Service/IaaS)”.‬البنية‬
‫التحتيّة كخدمة )‪ (IaaS‬تض ّم مراكز بيانات )‪ (Data Centers‬ضخمة وتجعل بينك وبين العتاد طبقة)‪ ، (Layer‬وتتيح لك استخدام‬
‫اآلالت اإلفتراضيّة فقط‪ .‬الحظ أنّ قابليّة التوسّع )‪ (Scalability‬باتت أسهل؛ ألنّه صار بإمكانك أن تج ّهز خواد ًما إفتراضيّة دون‬
‫وتحرك بسرعة‪.‬‬‫ّ‬ ‫فورا و دون الحاجة إلى تخمين متع ّمق‪ .‬احفظ مالك ‪-‬عزيزي القارئ‪،-‬‬
‫القلق بشأن العتاد‪ ،‬كما ويُمكنك القيام بذلك ً‬

‫أتت “المنصّة كخدمة ”)‪ (Platform as a Service/PaaS‬بعد البنية التحتيّة كخدمة‪ ،‬من أمثلتها ‪Heroku‬و ‪AWS Elastic‬‬
‫‪ ،Beanstalk‬بواسطتها أصبح تجهيز الخوادم مؤتمتًا‪ .‬إذا استطعت إتقان منصّة مقدّم الخدمة)‪ ، (Vendor‬فسيكون نشر‬
‫ي للخوادم؛ إذ أنّه ليس عليك أن تف ّكر فيها‬
‫)‪(Deploy‬التطبيق وتوسعته أسهل بمراحل‪ ،‬كان هذا ّأول انفصال عن النموذج التاريخ ّ‬
‫كثيرا‪.‬‬
‫ً‬

‫ت ما هنا‪“ .‬ديڤ أوبس ”)‪ (DevOps‬و إعداد الحاويات يعتبران‬ ‫“إعداد الحاويات ”)‪ (Containerization‬انتشرت في وق ٍ‬
‫موضوعان متداوالن‪ .‬إذ تعتبر إعداد الحاويات طريقة أكفأ لتجهيز البيئة اإلفتراضيّة‪ .‬إذا كنت تدرك أهميّة اآلالت اإلفتراضيّة؛ حت ًما‬
‫ستدرك أهميّة الحاويات‪(Containers).‬‬
‫بعد ك ّل ما مضى‪ ،‬جاءت فكرة ُ “دون خادم ”)‪ (Serverless‬واألفكار التي تدور في فلكها بمعماريّ ٍة تستبدل اآلالت اإلفتراضيّة‬
‫بمجرد طلبها وتختفي مباشرةً بعد استخدامها‪.‬‬‫ّ‬ ‫الزوال )‪ (Ephemeral‬تظهر للوجود‬ ‫بقوةِ حوسب ٍة سريعة ّ‬
‫مطول ّ‬
‫ّ‬ ‫والتي تعمل بشك ٍل‬

‫تطور الحوسبة دون خادم‪).‬‬


‫(صورة‪ّ :‬‬

‫تطبي ٌق بسيطٌ دون خادم‬


‫ُقمتُ ‪-‬قبل فترةٍ بسيط ٍة‪ -‬ببناء نقطة نهاية )‪ (Endpoint‬بمعماريّة دون خادم ‪ (Serverless Architecture).‬كانت هذه النقطة‬
‫ببساطة تستدعي دالّة “االنضمام إلى القائمة البريديّة ”)‪ (Subscribe‬والتي تقوم بض ّم البريد اإللكترون ّ‬
‫ي ال ُمدخل إلى القائمة البريديّة‬
‫بعد التأ ّكد من صحّته‪ .‬يُمكن استدعاء هذه النقطة من خالل رابطٍ يبدو كهذا ‪: subscribe?email=test@yopmail.com.‬‬
‫ي يتم استدعاء واجهة برمجة تطبيق ‪ (API) Mailchimp‬لتقوم ‪-‬بدورها‪ -‬بإضافة‬ ‫بمجرد أن يت ّم التحقّق من صحّة البريد اإللكترون ّ‬
‫ّ‬
‫مضطرا إلى تجهيز الخادم الذي سيحتضن الشفرة البرمجيّة وال أن‬ ‫ً‬ ‫ي إلى القائمة البريديّة لديها‪ .‬وجدتُ أنّي لم أكن‬
‫البريد اإللكترون ّ‬
‫ت ممكن‪ ،‬وهذا ما ت ّم فعالً‪.‬‬‫أقوم بتشغيل الخادم دون االستفادة منه في ك ّل وقت‪ .‬أردتُ فقط أن تصل هذه الميزة إلى السوق بأسرع وق ٍ‬
‫صة سيرڤرلِس)‪(Serverless Framework‬‬
‫من ّ‬
‫اآلن‪ ،‬ومع وجود العديد من مقدّمي خدمة الحوسبة دون خادم مثل أمازون )‪ (AWS Lambda‬ومايكروسوفت ‪(Azure‬‬
‫)‪Functions‬وقوقل )‪ (Google Functions‬وحتى الخدمات مفتوحة المصدر مثل )‪(Apache OpenWhisk‬؛ ال يجدر بك‬
‫أن تكتب شفرةً برمجيّة لك ّل مقدّم خدمة‪ ،‬األولى واألجمل أن تعتمد تجريدًا )‪ (Abstraction‬أو منصّة تنسجم مع ك ّل مقدّمي الخدمة‪،‬‬
‫تخصيص في الشفرة‬
‫ٍ‬ ‫مكان واحد يسمح لك الحقًا بنشر التغييرات على مقدّم الخدمة الذي خصّصت دون حاج ٍة إلى‬
‫ٍ‬ ‫بحيث تكتبُ في‬
‫ّ‬
‫البرمجيّة ‪.‬هناك الكثير من المنصّات للقيام بذلك‪ ،‬تفضّل باإلطالع على ‪ Serverless Framework‬كمثال لها‪.‬‬

You might also like