نظرة عامة على AWS CDK، أمثلة على TypeScript وPython وأداء

أداة رائعة للهندسة على منصة AWS

Page content

AWS Cloud Development Kit (AWS CDK) هو إطار عمل يمكّنك من تعريف وتوسيع البنية التحتية للسحابة باستخدام لغات برمجة مألوفة مثل TypeScript, Python, Java و Go.

aws cdk chain of events

هذا الإطار المفتوح المصدر يبسّط البنية التحتية ككود من خلال السماح لك بتحديد موارد AWS باستخدام بنى عالية المستوى، ثم يدمج هذه البنية إلى قوالب CloudFormation للاستخدام في الإطلاق. هذا يجعل من السهل تطوير، إرسال، وتحسين البنية التحتية الخاصة بك بطريقة أكثر استدامة واختبارًا.

إليك أمثلة قصيرة على AWS CDK بلغة TypeScript وPython:

مثال TypeScript:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

export class MyStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    new s3.Bucket(this, 'MyFirstBucket', {
      versioned: true,
      removalPolicy: cdk.RemovalPolicy.DESTROY
    });
  }
}

هذا المثال ينشئ حاوية S3 مع تمكين النسخة.

مثال Python:

from aws_cdk import (
    Stack,
    aws_s3 as s3,
    RemovalPolicy
)
from constructs import Construct

class MyStack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs):
        super().__init__(scope, id, **kwargs)

        s3.Bucket(self, "MyFirstBucket",
                  versioned=True,
                  removal_policy=RemovalPolicy.DESTROY)

هذا ينشئ حاوية S3 مماثلة مع سياسة إزالة لحذفها عند حذف المكدس.

توضح هذه الأمثلة كيف يستخدم AWS CDK بنى لغة مألوفة، الفئات، والكائنات لتحديد البنية التحتية، والتي يمكن إرسالها بسهولة عبر cdk deploy.

AWS CDK يدعم موارد أخرى ونمط بنية تحتية أكثر تعقيدًا خارج هذه الأمثلة البسيطة. كما أن لديه تكامل جيد مع IDEs، أطر عمل الاختبار، وخطوط إنتاج CI/CD لتحسين تجربة المطورين وتوسيع التلقائية.

TypeScript مقابل Python لـ AWS CDK

كلا TypeScript وPython مدعومان تمامًا لتطوير ونشر AWS CDK، لكن لديهما بعض الاختلافات المهمة:

TypeScript

  • AWS CDK تم تنفيذه أصلاً بلغة TypeScript، مما يوفر التحقق من النوع الأصلي، الواجهات، والتوقيعات القوية الثابتة.
  • TypeScript يستفيد من أحدث وثائق رسمية، أمثلة، ودعم مجتمعي، مما يجعل من السهل العثور على موارد وحل المشكلات.
  • IDEs مثل Visual Studio Code توفر دعمًا ممتازًا لـ TypeScript مع إكمال ذكي، تلوين الأخطاء، وتحسين الكود.
  • نظرًا لأن CDK نفسه مكتوب بلغة TypeScript، فإن استخدامه يشعر أكثر “أصليًا” وسلاسة مع عدد أقل من التخفيضات.
  • التوقيع الثابت في TypeScript يلتقط العديد من المشكلات مبكرًا أثناء البناء، مما يتجنب بعض الأخطاء أثناء التشغيل.
  • المطورون الذين يرغبون في الأمان في النوع والموارد المجتمعة الكبيرة قد يفضلون TypeScript لـ CDK.

Python

  • دعم Python مستقر ووظيفي تمامًا ولكن هو رابط عبر النواة TypeScript باستخدام jsii، يعتمد على التوقيع الديناميكي مع تلميحات نوعية اختيارية.
  • Python يستخدم أسماء snake_case بدلًا من TypeScript’s camelCase، لذا تحتاج إلى تعديلات لغوية بسيطة عند تحويل الأمثلة.
  • Python لديه عدد أقل من الأمثلة الرسمية والموارد المجتمعية، مما يجعل من الصعب تعلم وتصحيح الأخطاء للمبتدئين.
  • التوقيع الديناميكي يعني أن بعض أخطاء النوع تظهر فقط أثناء التشغيل وليس أثناء التجميع، مما قد يؤدي إلى اكتشاف أخطاء متأخرة. ومع ذلك، يمكن استخدام مودولات Python للتقييم مع أدوات مثل MyPy مع IDEs أو أدوات التحليل الثابت.
  • المطورون الذين يقدّرون الأدوات المألوفة مثل بيئات الافتراضية (virtualenv) وpip لإدارة الحزم يفضلون Python.
  • Python هو الخيار المفضل إذا كان فريقك أو مشروعك يعتمد بشكل كبير على Python، حتى لو كانت الوثائق والدعم المجتمعي أقل قليلاً.

تطوير ونشر

  • أداة CDK Toolkit (cdk deploy) تعمل بنفس الطريقة بغض النظر عن خيار اللغة، نظرًا لأن CDK يدمج قوالب AWS CloudFormation تحت الغطاء.
  • كلا اللغتين تدعمان نطاقًا كاملًا من موارد AWS والبنية.
  • اختيار بينهما غالبًا يعتمد على خبرة فريقك في لغة معينة، وتوافر الدعم المجتمعي، وتحقيق تفضيلك بين التوقيع الثابت والديناميكي.

ملخص

  • TypeScript يقدم تجربة أكثر نضجًا وسلاسة مع وثائق أكثر غنى، وتوقيع قوي، وتكامل أصلي نظرًا لأن CDK تم بناؤه عليه.
  • Python يقدم وظائف قوية وسهولة استخدام لمحترفي Python، لكنه يحتوي على عدد أقل من الأمثلة ويتطلب بعض التحديات الإضافية بسبب التوقيع الديناميكي والترجمة بين لغات الأيديوم.
  • إذا كنت ترغب في تطوير سريع مع موارد واسعة، غالبًا يُنصح بـ TypeScript. إذا كان مشروعك أو فريقك يعتمد على Python، فإن Python يظل خيارًا جيدًا تمامًا رغم بعض التنازلات الصغيرة.

هذا يتوافق مع ملاحظات المجتمع والوثائق الرسمية من AWS حول مزايا وعيوب AWS CDK لتطوير ونشر كل لغة. يمكن استخدام كل لغة بشكل فعال؛ اختيارك يعتمد على أولوياتك في التقييد النوعي، معرفة اللغة، ودعم النظام البيئي.

اللغات الرسمية المدعومة لـ AWS CDK

يتم دعم AWS Cloud Development Kit (AWS CDK) رسميًا من قبل اللغات البرمجية التالية:

  • TypeScript
  • JavaScript
  • Python
  • Java
  • C# (.NET)
  • Go

كل هذه اللغات مدعومة بشكل أولي، مع تطوير CDK أصلاً بلغة TypeScript ثم تم توسعته إلى اللغات الأخرى باستخدام أداة تسمى JSII، والتي تولّد روابط لغوية لجعل CDK يبدو طبيعيًا في كل لغة من حيث التركيب والمعاني.

بخصوص أي لغة أفضل، يعتمد الأمر على تفضيلاتك وسياقك:

  • TypeScript غالبًا يُنصح بأنه الخيار الأفضل نظرًا لأن AWS CDK تم بناؤه أصلاً بلغة TypeScript. لديه نظام بيئي أكثر نضجًا، وثائق رسمية أثريّة، وأمثلة مجتمعية. توقيعه الثابت والدعم القوي من IDEs يزيد من إنتاجية المطورين ويكتشف العديد من الأخطاء مبكرًا.

  • Python هو خيار شائع جدًا، خاصةً لمن يأتون من خلفية Python. لديه تركيب نظيف يجعله أكثر سهولة للمبتدئين، لكن توقيعه الديناميكي يعني أن بعض الأخطاء تظهر فقط أثناء التشغيل. أدوات Python وتوافر الأمثلة جيدة لكنها أقل انتشارًا من TypeScript.

  • Java، C#، وGo مدعومة تمامًا لكنها عادةً ما تحتوي على عدد أقل من الأمثلة المجتمعية وتوثيق أقل مقارنةً بـ TypeScript وPython. وهي مناسبة إذا كان فريقك متمرسًا في هذه اللغات.

في المجموع:

  • TypeScript يقدم تجربة أكثر أصالة، وسلاسة، ودعمًا واسعًا لتطوير AWS CDK.
  • Python يوفر تركيبًا أبسط وتجربة سهلة للمبتدئين مع دعم CDK الكامل، لكنه أقل قليلاً في الأدوات والتوثيق.
  • Java، C#، وGo خيارات جيدة إذا كانت تتناسب مع مهارات فريقك أو متطلبات المشروع، لكنها قد تتطلب مزيدًا من الجهد للعثور على موارد للتعلم.

يجب أن يأخذ اختيارك في الاعتبار خبرة فريقك في اللغة، توافر الأمثلة والدعم، وتحديدك بين التوقيع الثابت (TypeScript، Java، C#) أو التوقيع الديناميكي (Python). غالبًا ما يكون TypeScript وPython أكثر شعبية وتوصية لمشاريع AWS CDK.

أداء اللغات في تطوير ونشر AWS CDK

عند النظر في أفضل أداء في تطوير ونشر AWS CDK، من المهم توضيح أن وظائف AWS CDK الأساسية نفسها، أي تحويل البنية التحتية ككود إلى قوالب CloudFormation ونشرها، لا تعتمد على اللغة. جميع اللغات المدعومة (TypeScript، Python، Java، C#، Go) تُترجم إلى نفس القوالب الأساسية لـ AWS CloudFormation، لذا لا تختلف أداء التشغيل أثناء النشر حسب اللغة.

ومع ذلك، من منظور أداء التطوير، أي الكفاءة، اكتشاف الأخطاء، الأدوات، وسهولة البرمجة، يُعتبر TypeScript عادةً أفضل بيئة لغوية أداءً لـ AWS CDK:

  • TypeScript هو اللغة الأصلية لـ AWS CDK، تم تطويره أصلاً بها. هذا يؤدي إلى أقوى أدوات، توقيع ثابت قوي، واكتشاف أخطاء مبكر أثناء التطوير، مما يجعل البرمجة أسرع وأقل خطأ.
  • توجد وثائق أثريّة، أمثلة مجتمعية، ودعم الأدوات (مثل إكمال ذكي وتحسين الكود في Visual Studio Code) أقوى لـ TypeScript، مما يزيد من إنتاجية المطورين.
  • يكتشف TypeScript العديد من الأخطاء في وقت التجميع، مما يتجنب المفاجآت أثناء التشغيل والمشاكل في النشر، مما يسرع التطوير التكراري والتصحيح.

Python هو خيار جيد جدًا لتجربة التطوير، ويُفضل لبساطته ووضوحه في لغة DevOps. ومع ذلك، بسبب توقيعه الديناميكي وكونه رابطًا لغويًا عبر jsii على النواة TypeScript، تظهر بعض الأخطاء فقط أثناء التشغيل، مما قد يبطئ التصحيح والتطوير قليلاً.

لغات أخرى مثل Java، C#، وGo مدعومة لكنها عادةً ما تحتوي على عدد أقل من الموارد، أدوات أقل نضجًا، وبالتالي قد تقدم سرعة تطوير أقل.

ملخص:

الجوانب TypeScript Python الآخرون (Java، C#، Go)
تنفيذ CDK الأصلي نعم لا لا
التوقيع الثابت قوي (في وقت التجميع) ديناميكي (في وقت التشغيل) قوي (في وقت التجميع)
أدوات ودعم IDE الأفضل (VS Code، إكمال ذكي) جيد، لكنه أقل نضجًا أقل نضجًا
الموارد وال أمثلة أكثر وفرة جيدة لكنها أقل من TypeScript محدودة
سرعة التطوير سريعة، أقل خطأ أبطأ بسبب التوقيع الديناميكي عادة أبطأ
أداء النشر نفسه (ناتج CloudFormation) نفسه نفسه

لذلك، TypeScript يقدم أفضل أداء في التطوير مع AWS CDK، مما يجعل كتابة البنية التحتية أسرع وأكثر أمانًا وفعالية. أداء النشر متساوٍ عبر جميع اللغات المدعومة نظرًا لأنها جميعها تنتج نفس قوالب CloudFormation.

هذا يتوافق مع الإرشادات الرسمية من AWS والتجربة العامة في المجتمع التي تبرز دعم TypeScript الأصلي والمتقدم لتطوير AWS CDK. يظل Python خيارًا قويًا، خاصةً إذا كان فريقك يفضله أو يقدّر بساطة التركيب. اللغات الأخرى ممكنة لكنها عادةً أقل كفاءة في التطوير السريع.

روابط مرتبطة بـ AWS CDK

روابط مفيدة أخرى