الحوسبة بدون خادم و GraphQL: تطوير التطبيقات الحديثة

في هذه المقالة، سأرشدك خلال عملية إنشاء واجهة برمجة تطبيقات GraphQL بدون خادم باستخدام TypeScript و AWS Lambda و Apollo Server.

الحوسبة بدون خادم

الحوسبة بدون خادم هي نموذج تنفيذ للحوسبة السحابية حيث تدير مزودات السحاب البنية التحتية تلقائيًا لتشغيل التطبيقات. في هذا النموذج، يكتب المطورون التعليمات البرمجية، ويتولى مزود السحاب إدارة تشغيل وتوسيع وصيانة الخوادم، مما يعني أن المطورين لا يحتاجون للقلق بشأن إدارة الخوادم أو توفير البنية التحتية أو التوسع. مصطلح “بدون خادم” لا يعني أنه لا توجد خوادم معنية، بل يعني أن مهام إدارة الخادم يتم تجريدها بعيدًا عن المطورين. AWS Lambda هي خدمة حوسبة بدون خادم مقدمة من Amazon Web Services (AWS) تتيح لك تشغيل التعليمات البرمجية دون الحاجة إلى توفير أو إدارة الخوادم

GraphQL

GraphQL هي لغة استعلام لواجهات برمجة التطبيقات وبيئة تشغيل لتنفيذ تلك الاستعلامات. تتيح للعملاء طلب البيانات الدقيقة التي يحتاجونها، مما يجعلها أكثر كفاءة مقارنة بـ REST، التي قد تسترجع بيانات زائدة أو ناقصة. مع GraphQL، يحدد العملاء شكل وبنية الاستجابة، مما يسمح باسترجاع موارد متعددة في طلب واحد. هذه المرونة تحسن الأداء وتقلل من عبء الشبكة. GraphQL مُعرفة بشكل قوي، مع مخطط يحدد الأنواع والعمليات المتاحة. تُستخدم على نطاق واسع في التطبيقات الحديثة لتحسين الاتصال بين الواجهة الأمامية والخلفية، مما يمكّن إدارة البيانات بشكل أكثر استجابة وكفاءة.

خادم Apollo

إنه خادم GraphQL مفتوح المصدر شهير يساعد المطورين على إنشاء واجهة برمجة تطبيقات GraphQL بسهولة. يبسط عملية بناء واجهة برمجة تطبيقات GraphQL قوية وقابلة للتوسيع من خلال التعامل مع تعريف البيانات، وتنفيذ الاستعلامات، وتنسيق الردود. يدعم خادم Apollo ميزات مثل جلب البيانات، والتخزين المؤقت، والمصادقة، مما يجعله قابلًا للتكيف بشكل كبير مع التطبيقات الحديثة. يعمل بسلاسة مع مصادر بيانات مختلفة، بما في ذلك واجهات برمجة تطبيقات REST، وقواعد البيانات، والخدمات الصغيرة. وبفضل الأدوات المدمجة لرصد الأداء ومعالجة الأخطاء، يُستخدم خادم Apollo بشكل شائع لتبسيط تطوير الخلفية، وتوفير تواصل فعال ومرن بين العملاء والخوادم في بيئات GraphQL.

لماذا TypeScript؟

إنه توسيع لغة JavaScript يضيف نوعية ثابتة إلى اللغة. يساعد في اكتشاف الأخطاء أثناء التطوير، ويحسن قراءة الشفرة، ويعزز عملية إعادة الترتيب. من خلال توفير سلامة الأنواع ودعم الأدوات، يمكن لـ TypeScript تمكين تطبيقات أكثر صيانةً وتوسعًا، مما يجعله مثاليًا للمشاريع الكبيرة أو الفرق.

لماذا أجد أن الخوادم الخالية من الخوادم وGraphQL يعملان بشكل جيد جدًا معًا (أو “قصة حب في الشفرة”)

  1. استخدام موارد محسن: جلب البيانات الدقيق في GraphQL يتماشى تمامًا مع نموذج الدفع حسب الاستخدام في الخوادم الخالية من الخوادم، مما يضمن استخدام موارد فعال.
  2. بساطة الخلفية: يمكن لوظائف الخوادم الخالية من الخوادم التعامل مع محللات GraphQL بكفاءة، مما يبسط هندسة الخلفية.
  3. تحسين الأداء: قدرة GraphQL على تقليل البيانات الزائدة تترجم إلى تطبيقات أسرع، خاصة عند الجمع بينها مع البنية الخالية من الخوادم.
  4. القابلية للتوسعة: كلا التكنولوجيات تستطيع معالجة توزيعات مختلفة من الحملات، مما يجعل التركيبة قابلة للتوسعة بشكل كبير.
  5. التكاليف المناسبة: نموذج الاستخدام المتكافؤ للحوسبة بدون خادم، مزوداً بالتحويل الفعال للبيانات بـ GraphQL، يمكن أن يؤدي إلى توفير توفيرات كبيرة.

“تحويل الخادم البدون خادم و GraphQL يسمح للتطوير السريع للAPI القابلية للتوسعة والفعال. إنه مزيد من القوة التي يمكن أن تخفض وقت التطوير والتكاليف التشغيلية بشكل كبير.” – Nader Dabit, “الخادم البدون خادم الشبكي الكامل

في الأسفل توجه خطوة بخطوة لتنفيذ خدمة بواسطة GraphQL في AWS Lambda.

  • خطوة 1: تم تكوين مشروع TypeScript جديد وتثبيت ال依存关系.
Shell

 

  • خطوة 2: تعريف الشEMA ال GraphQL بالعناصر المطلوبة.
TypeScript

 

  • خطوة 3: تنفيذ المعالجين:
TypeScript

 

  • خطوة 4: إنشاء مند ال Lambda:
TypeScript

 

  • خطوة 5: تكوين التنفيذ البدون خادم. أنشأ ملف serverless.yml:
service: serverless-graphql-api

provider:
  name: aws
  runtime: nodejs16.x
  stage: dev
  region: us-east-1

functions:
  graphql:
    handler: handler.graphqlHandler
    events:
      - http:
          path: graphql
          method: post
      - http:
          path: graphql
          method: get

plugins:
  - serverless-offline

يمكنك كتابة الشيء الآن مباشرة في لامبادأ في نظام أوكس (Quick Hello World) وتستخدم خيارات تنفيذ مناسبة مثل CDK أو Terraform. ولأن التشغيل البدون سيرفع و GraphQL يستمر في التطور ، فإنه من المتوقع أن يكون هناك أدوات وممارسات أكثر قوة تأتي.

ختام

من خلال الانتماء إلى GraphQL البدون سيرفع، يمكن للمطورين إنشاء APIs يمكن أن تنتقل بسهولة وتوفر بالضبط ما يحتاجه العملاء. إنه مثل حصول على كريستال بال لأنه دائمًا يعرف بالضبط ما البيانات التي يتوجب جلبها والتنقل.

Source:
https://dzone.com/articles/serverless-computing-and-graphql