AWS Lambda کا تفصیلی تجزیہ

مضمون کا ترجمہ خاص طور پر کورس کے طلباء کے لیے تیار کیا گیا تھا۔ "کلاؤڈ سروسز". اس سمت میں ترقی کرنے میں دلچسپی رکھتے ہیں؟ Egor Zuev کی ماسٹر کلاس دیکھیں (TeamLead at InBit) "AWS EC2 سروس" اور اگلے کورس گروپ میں شامل ہوں: 26 ستمبر سے شروع ہوگا۔

AWS Lambda کا تفصیلی تجزیہ

زیادہ لوگ اسکیل ایبلٹی، کارکردگی، بچت، اور ماہانہ لاکھوں یا کھربوں درخواستوں کو ہینڈل کرنے کی صلاحیت کے لیے AWS Lambda کی طرف ہجرت کر رہے ہیں۔ ایسا کرنے کے لیے، آپ کو اس انفراسٹرکچر کا انتظام کرنے کی ضرورت نہیں ہے جس پر سروس چلتی ہے۔ اور آٹو اسکیلنگ آپ کو فی سیکنڈ بیک وقت ہزاروں درخواستیں پیش کرنے کی اجازت دیتی ہے۔ میرے خیال میں AWS Lambda کو بجا طور پر AWS کی مقبول ترین خدمات میں سے ایک کہا جا سکتا ہے۔

او ڈبلیو ایس لامبڈا۔

AWS Lambda ایک ایونٹ سے چلنے والی سرور لیس کمپیوٹنگ سروس ہے جو آپ کو سرورز کی فراہمی یا انتظام کیے بغیر کوڈ چلانے اور حسب ضرورت منطق کا استعمال کرتے ہوئے دیگر AWS سروسز کو بڑھانے کی اجازت دیتی ہے۔ لیمبڈا خود بخود مختلف واقعات (جنہیں ٹرگرز کہتے ہیں) کا جواب دیتا ہے، جیسے ایمیزون API گیٹ وے کے ذریعے HTTP درخواستیں، ایمیزون S3 بالٹیز یا Amazon DynamoDB ٹیبلز میں ڈیٹا میں تبدیلی؛ یا آپ AWS SDK اور AWS Step Functions میں اسٹیٹ ٹرانزیشن کا استعمال کرتے ہوئے API کالز کے ذریعے اپنا کوڈ چلا سکتے ہیں۔

لیمبڈا ایک انتہائی دستیاب کمپیوٹنگ انفراسٹرکچر پر کوڈ چلاتا ہے اور بنیادی پلیٹ فارم کے انتظام کے لیے پوری طرح ذمہ دار ہے، بشمول سرور اور آپریٹنگ سسٹم کی دیکھ بھال، وسائل کی فراہمی، آٹو اسکیلنگ، کوڈ کی نگرانی، اور لاگنگ۔ یعنی، آپ کو صرف اپنا کوڈ اپ لوڈ کرنے کی ضرورت ہے اور یہ ترتیب دینے کی ضرورت ہے کہ اسے کیسے اور کب عمل میں لایا جائے۔ بدلے میں، سروس اپنے آغاز کا خیال رکھے گی اور آپ کی درخواست کی اعلی دستیابی کو یقینی بنائے گی۔

لیمبڈا پر کب جانا ہے؟

AWS Lambda ایک آسان کمپیوٹنگ پلیٹ فارم ہے جو استعمال کے مختلف کیسز کے لیے موزوں ہے، جب تک کہ آپ کے کوڈ کی زبان اور رن ٹائم سروس کے ذریعے تعاون یافتہ ہو۔ اگر آپ مناسب قیمت پر سرور کی دیکھ بھال، پروویژننگ، اور اسکیلنگ کو آؤٹ سورس کرتے ہوئے اپنے کوڈ اور کاروباری منطق پر توجہ مرکوز کرنا چاہتے ہیں، تو AWS Lambda یقینی طور پر جانے کا راستہ ہے۔

لیمبڈا پروگرامنگ انٹرفیس بنانے کے لیے مثالی ہے، اور جب API گیٹ وے کے ساتھ مل کر استعمال کیا جاتا ہے، تو آپ لاگت کو نمایاں طور پر کم کر سکتے ہیں اور تیزی سے مارکیٹ میں پہنچ سکتے ہیں۔ لیمبڈا فنکشنز کو استعمال کرنے کے مختلف طریقے ہیں اور سرور کے بغیر فن تعمیر کو ترتیب دینے کے لیے اختیارات ہیں - ہر کوئی اپنے مقصد کی بنیاد پر کوئی مناسب چیز منتخب کر سکتا ہے۔

لیمبڈا آپ کو کاموں کی ایک وسیع رینج انجام دینے کی اجازت دیتا ہے۔ اس طرح، CloudWatch سپورٹ کی بدولت، آپ التواء والے کام تخلیق کر سکتے ہیں اور انفرادی عمل کو خودکار کر سکتے ہیں۔ سروس کے استعمال کی نوعیت اور شدت پر کوئی پابندیاں نہیں ہیں (میموری کی کھپت اور وقت کو مدنظر رکھا جاتا ہے) اور کوئی بھی چیز آپ کو لیمبڈا پر مبنی مکمل مائیکرو سروس پر منظم طریقے سے کام کرنے سے نہیں روکتی ہے۔

یہاں آپ خدمت پر مبنی کارروائیاں بنا سکتے ہیں جو مسلسل نہیں چلتی ہیں۔ ایک عام مثال امیج اسکیلنگ ہے۔ یہاں تک کہ تقسیم شدہ نظاموں کے معاملے میں بھی، لیمبڈا کے افعال متعلقہ رہتے ہیں۔

لہذا، اگر آپ کمپیوٹنگ وسائل مختص کرنے اور ان کا انتظام نہیں کرنا چاہتے ہیں، تو AWS Lambda کو آزمائیں۔ اگر آپ کو بھاری، وسائل پر مبنی حساب کتاب کی ضرورت نہیں ہے، تو AWS Lambda کو بھی آزمائیں؛ اگر آپ کا کوڈ وقفے وقفے سے چلتا ہے، تو یہ درست ہے، آپ کو AWS Lambda کو آزمانا چاہیے۔

سیکورٹی

ابھی تک حفاظت کے بارے میں کوئی شکایت نہیں ہے۔ دوسری طرف، چونکہ اس ماڈل کے بہت سے داخلی عمل اور نفاذ کی خصوصیات AWS Lambda کے زیر انتظام رن ٹائم ماحول کے صارف سے پوشیدہ ہیں، اس لیے کلاؤڈ سیکیورٹی کے کچھ عام طور پر قبول شدہ اصول غیر متعلقہ ہو جاتے ہیں۔

زیادہ تر AWS خدمات کی طرح، Lambda AWS اور کسٹمر کے درمیان مشترکہ سیکورٹی اور تعمیل کی بنیاد پر فراہم کی جاتی ہے۔ یہ اصول کلائنٹ پر آپریشنل بوجھ کو کم کرتا ہے، کیونکہ AWS سروس کے اجزاء کو برقرار رکھنے، انتظام کرنے اور نگرانی کرنے کے کام لیتا ہے - میزبان آپریٹنگ سسٹم اور ورچوئلائزیشن پرت سے لے کر بنیادی ڈھانچے کے اثاثوں کی فزیکل سیکیورٹی تک۔

خاص طور پر AWS Lambda کے بارے میں بات کرتے ہوئے، AWS بنیادی ڈھانچے، متعلقہ بنیادی خدمات، آپریٹنگ سسٹم، اور ایپلیکیشن پلیٹ فارم کے انتظام کے لیے ذمہ دار ہے۔ جبکہ کلائنٹ اپنے کوڈ کی حفاظت، خفیہ ڈیٹا کو ذخیرہ کرنے، اس تک رسائی کو کنٹرول کرنے کے ساتھ ساتھ Lambda سروس اور وسائل (Identity and Access Management, IAM) کے لیے ذمہ دار ہے، بشمول استعمال کیے گئے افعال کی حدود میں۔

ذیل کا خاکہ مشترکہ ذمہ داری کا ماڈل دکھاتا ہے جیسا کہ یہ AWS Lambda پر لاگو ہوتا ہے۔ AWS کی ذمہ داری نارنجی ہے اور کسٹمر کی ذمہ داری نیلی ہے۔ جیسا کہ آپ دیکھ سکتے ہیں، AWS سروس پر تعینات ایپلیکیشنز کے لیے زیادہ ذمہ داری لیتا ہے۔

AWS Lambda کا تفصیلی تجزیہ

مشترکہ ذمہ داری کا ماڈل AWS Lambda پر لاگو ہوتا ہے۔

لیمبڈا رن ٹائم

لیمبڈا کا بنیادی فائدہ یہ ہے کہ آپ کی طرف سے ایک فنکشن انجام دینے سے، سروس خود ضروری وسائل مختص کرتی ہے۔ آپ سسٹم ایڈمنسٹریشن پر وقت اور محنت ضائع کرنے سے بچ سکتے ہیں اور کاروباری منطق اور کوڈنگ پر توجہ مرکوز کر سکتے ہیں۔

لیمبڈا سروس کو دو طیاروں میں تقسیم کیا گیا ہے۔ پہلا کنٹرول طیارہ ہے۔ ویکیپیڈیا کے مطابق، کنٹرول ہوائی جہاز سگنلنگ ٹریفک اور روٹنگ کی نقل و حمل کے لیے ذمہ دار نیٹ ورک کا حصہ ہے۔ یہ بنیادی جز ہے جو کام کے بوجھ کی فراہمی، سروسنگ اور تقسیم کے بارے میں عالمی فیصلے کرتا ہے۔ اس کے علاوہ، کنٹرول طیارہ حل فراہم کرنے والے کے نیٹ ورک ٹوپولوجی کے طور پر کام کرتا ہے، جو ٹریفک کی روٹنگ اور انتظام کے لیے ذمہ دار ہے۔

دوسرا طیارہ ڈیٹا طیارہ ہے۔ یہ، کنٹرول طیارے کی طرح، اس کے اپنے کام ہیں. کنٹرول طیارہ فنکشنز (CreateFunction، UpdateFunctionCode) کے انتظام کے لیے APIs فراہم کرتا ہے اور یہ کنٹرول کرتا ہے کہ Lambda دیگر AWS سروسز کے ساتھ کیسے بات چیت کرتا ہے۔ ڈیٹا طیارہ Invoke API کو کنٹرول کرتا ہے، جو Lambda افعال چلاتا ہے۔ کسی فنکشن کو کال کرنے کے بعد، کنٹرول طیارہ ایک موجودہ رن ٹائم ماحول مختص کرتا ہے یا اس کا انتخاب کرتا ہے جو اس فنکشن کے لیے پہلے سے تیار ہوتا ہے، اور پھر اس میں کوڈ پر عمل درآمد کرتا ہے۔

AWS Lambda مختلف قسم کی پروگرامنگ زبانوں کو سپورٹ کرتا ہے، بشمول Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2، اور دیگر، ان کے متعلقہ رن ٹائم ماحول کے ذریعے۔ AWS ان کو باقاعدگی سے اپ ڈیٹ کرتا ہے، حفاظتی پیچ تقسیم کرتا ہے، اور ان ماحول میں دیکھ بھال کی دیگر سرگرمیاں انجام دیتا ہے۔ لیمبڈا آپ کو دوسری زبانیں بھی استعمال کرنے کی اجازت دیتا ہے، بشرطیکہ آپ خود مناسب رن ٹائم نافذ کریں۔ اور پھر آپ کو اس کی حفاظت کی نگرانی سمیت اس کی دیکھ بھال کا خیال رکھنا ہوگا۔

یہ سب کیسے کام کرتا ہے اور سروس آپ کے کام کیسے انجام دے گی؟

ہر فنکشن ایک یا زیادہ سرشار ماحول میں چلتا ہے، جو صرف اس فنکشن کی زندگی کے لیے موجود ہے اور پھر تباہ ہو جاتا ہے۔ ہر ماحول ایک وقت میں صرف ایک کال کرتا ہے، لیکن اگر ایک ہی فنکشن میں متعدد سیریل کالز ہوں تو اسے دوبارہ استعمال کیا جاتا ہے۔ تمام رن ٹائم ماحول ورچوئل مشینوں پر ہارڈ ویئر ورچوئلائزیشن کے ساتھ چلتے ہیں - نام نہاد مائکرو وی ایم۔ ہر مائیکرو وی ایم ایک مخصوص AWS اکاؤنٹ کو تفویض کیا جاتا ہے اور اس اکاؤنٹ کے اندر مختلف افعال انجام دینے کے لیے ماحول کے ذریعے دوبارہ استعمال کیا جا سکتا ہے۔ MicroVMs کو Lambda Worker ہارڈویئر پلیٹ فارم کے بلڈنگ بلاکس میں پیک کیا جاتا ہے، جو AWS کی ملکیت اور چلاتا ہے۔ ایک ہی رن ٹائم مختلف فنکشنز کے ذریعے استعمال نہیں کیا جا سکتا، اور نہ ہی مائیکرو وی ایم مختلف AWS اکاؤنٹس کے لیے منفرد ہیں۔

AWS Lambda کا تفصیلی تجزیہ

اے ڈبلیو ایس لیمبڈا آئسولیشن ماڈل

رن ٹائم ماحول کی تنہائی کو کئی میکانزم کا استعمال کرتے ہوئے لاگو کیا جاتا ہے۔ ہر ماحول کی اوپری سطح پر درج ذیل اجزاء کی الگ الگ کاپیاں ہوتی ہیں۔

  • فنکشن کوڈ
  • فنکشن کے لیے منتخب کردہ کوئی بھی لیمبڈا پرتیں۔
  • فنکشن پر عمل درآمد کا ماحول
  • ایمیزون لینکس پر مبنی صارف کی کم سے کم جگہ

عمل درآمد کے مختلف ماحول کو الگ کرنے کے لیے درج ذیل میکانزم استعمال کیے جاتے ہیں:

  • cgroups - ہر رن ٹائم ماحول کے لیے CPU، میموری، اسٹوریج اور نیٹ ورک کے وسائل تک رسائی کو محدود کرتا ہے۔
  • نام کی جگہیں - گروپ بندی کے عمل کی IDs، صارف IDs، نیٹ ورک انٹرفیس اور لینکس کرنل کے زیر انتظام دیگر وسائل۔ ہر رن ٹائم اپنے نام کی جگہ پر چلتا ہے۔
  • seccomp-bpf - سسٹم کالز کو محدود کرتا ہے جو رن ٹائم میں استعمال کی جا سکتی ہیں۔
  • iptables اور روٹنگ ٹیبلز - ایک دوسرے سے عملدرآمد کے ماحول کو الگ تھلگ کرنا؛
  • chroot - بنیادی فائل سسٹم تک محدود رسائی فراہم کرتا ہے۔

AWS ملکیتی تنہائی کی ٹیکنالوجیز کے ساتھ مل کر، یہ میکانزم قابل اعتماد رن ٹائم علیحدگی کو یقینی بناتے ہیں۔ اس طرح سے الگ تھلگ ماحول دوسرے ماحول سے ڈیٹا تک رسائی یا ترمیم نہیں کر سکتا۔

اگرچہ ایک ہی AWS اکاؤنٹ کے متعدد رن ٹائمز ایک ہی مائیکرو وی ایم پر چل سکتے ہیں، لیکن کسی بھی حالت میں مختلف AWS اکاؤنٹس کے درمیان مائیکرو وی ایم کا اشتراک نہیں کیا جا سکتا۔ AWS Lambda microVMs کو الگ تھلگ کرنے کے لیے صرف دو میکانزم استعمال کرتا ہے: EC2 مثالیں اور فائر کریکر۔ EC2 کی بنیاد پر لیمبڈا میں مہمانوں کی تنہائی 2015 سے ہے۔ فائر کریکر ایک نیا اوپن سورس ہائپر وائزر ہے جسے خاص طور پر AWS نے بغیر سرور کے کام کے بوجھ کے لیے ڈیزائن کیا ہے اور اسے 2018 میں متعارف کرایا گیا ہے۔ مائیکرو وی ایم چلانے والے فزیکل ہارڈویئر کو مختلف اکاؤنٹس میں کام کے بوجھ کے درمیان شیئر کیا جاتا ہے۔

ماحول اور عمل کی ریاستوں کو بچانا

اگرچہ لیمبڈا رن ٹائمز مختلف فنکشنز کے لیے منفرد ہیں، لیکن وہ ایک ہی فنکشن کو بار بار کال کر سکتے ہیں، یعنی رن ٹائم تباہ ہونے سے پہلے کئی گھنٹوں تک زندہ رہ سکتا ہے۔

ہر لیمبڈا رن ٹائم میں ایک قابل تحریر فائل سسٹم بھی ہوتا ہے جو /tmp ڈائریکٹری کے ذریعے قابل رسائی ہے۔ دوسرے رن ٹائمز سے اس کے مواد تک رسائی حاصل نہیں کی جا سکتی۔ جہاں تک عمل کی حالت استقامت کا تعلق ہے، /tmp پر لکھی گئی فائلیں رن ٹائم ماحول کے پورے لائف سائیکل کے لیے موجود ہیں۔ یہ متعدد کالوں کے نتائج کو جمع کرنے کی اجازت دیتا ہے، جو خاص طور پر مہنگے آپریشنز جیسے لوڈنگ مشین لرننگ ماڈلز کے لیے مفید ہے۔

ڈیٹا ٹرانسفر کو کال کریں۔

Invoke API کو دو موڈ میں استعمال کیا جا سکتا ہے: ایونٹ موڈ اور ریکوسٹ رسپانس موڈ۔ ایونٹ موڈ میں، کال کو بعد میں انجام دینے کے لیے قطار میں شامل کیا جاتا ہے۔ درخواست کے جواب کے موڈ میں، فنکشن کو فراہم کردہ پے لوڈ کے ساتھ فوری طور پر بلایا جاتا ہے، جس کے بعد جواب واپس کر دیا جاتا ہے۔ دونوں صورتوں میں، فنکشن لیمبڈا ماحول میں چلتا ہے، لیکن مختلف پے لوڈ راستوں کے ساتھ۔

درخواست کے جوابی کالوں کے دوران، پے لوڈ ایک درخواست پراسیسنگ API (API کالر)، جیسے AWS API گیٹ وے یا AWS SDK سے لوڈ بیلنسر، اور پھر Lambda کال سروس (Invoke Service) تک جاتا ہے۔ مؤخر الذکر فنکشن کو انجام دینے کے لیے مناسب ماحول کا تعین کرتا ہے اور کال کو مکمل کرنے کے لیے وہاں پے لوڈ پاس کرتا ہے۔ لوڈ بیلنسر انٹرنیٹ پر TLS سے محفوظ ٹریفک حاصل کرتا ہے۔ Lambda سروس کے اندر ٹریفک — لوڈ بیلنسر کے بعد — ایک مخصوص AWS علاقے میں اندرونی VPC سے گزرتی ہے۔

AWS Lambda کا تفصیلی تجزیہ

AWS Lambda کال پروسیسنگ ماڈل: Request-response Mode

ایونٹ کالز فوری طور پر کی جا سکتی ہیں یا قطار میں شامل کی جا سکتی ہیں۔ کچھ صورتوں میں، قطار کو Amazon SQS (Amazon Simple Queue Service) کا استعمال کرتے ہوئے لاگو کیا جاتا ہے، جو اندرونی پولر کے عمل کے ذریعے Lambda کال کی تکمیل کی خدمت کو کالز پاس کرتی ہے۔ منتقل شدہ ٹریفک TLS کے ذریعہ محفوظ ہے، اور Amazon SQS میں ذخیرہ شدہ ڈیٹا کی کوئی اضافی خفیہ کاری نہیں ہے۔

ایونٹ کالز جوابات واپس نہیں کرتی ہیں — لیمبڈا ورکر کسی بھی جوابی معلومات کو صرف نظر انداز کر دیتا ہے۔ Amazon S3، Amazon SNS، CloudWatch، اور دیگر ذرائع سے ایونٹ پر مبنی کالز پر Lambda کے ذریعے ایونٹ موڈ میں کارروائی کی جاتی ہے۔ Amazon Kinesis اور DynamoDB اسٹریمز، SQS قطاروں، ایپلیکیشن لوڈ بیلنسر، اور API گیٹ وے کالز کی کالز درخواست کے جواب کے انداز میں پروسیس کی جاتی ہیں۔

نگرانی

آپ مختلف قسم کے AWS میکانزم اور خدمات کا استعمال کرتے ہوئے لیمبڈا کے افعال کی نگرانی اور آڈٹ کر سکتے ہیں، بشمول درج ذیل۔

ایمیزون کلاؤڈ واچ
مختلف اعدادوشمار جمع کرتا ہے جیسے درخواستوں کی تعداد، درخواستوں کی مدت، اور ناکام ہونے والی درخواستوں کی تعداد۔

ایمیزون کلاؤڈ ٹریل
آپ کو آپ کے AWS انفراسٹرکچر سے وابستہ اکاؤنٹ کی سرگرمی کی معلومات کو لاگ ان کرنے، مسلسل مانیٹر کرنے اور برقرار رکھنے کی اجازت دیتا ہے۔ آپ کے پاس AWS مینجمنٹ کنسول، AWS SDK، کمانڈ لائن ٹولز، اور دیگر AWS سروسز کا استعمال کرتے ہوئے انجام پانے والے اعمال کی مکمل تاریخ ہوگی۔

AWS ایکس رے
اس کے اندرونی اجزاء کے نقشے کی بنیاد پر آپ کی درخواست میں درخواست کی کارروائی کے تمام مراحل میں مکمل مرئیت فراہم کرتا ہے۔ آپ کو ترقی کے دوران اور پیداواری ماحول میں ایپلی کیشنز کا تجزیہ کرنے کی اجازت دیتا ہے۔

AWS ترتیب
آپ لیمبڈا فنکشن کنفیگریشن (بشمول ڈیلیٹ کرنے) اور رن ٹائمز، ٹیگز، ہینڈلر کے نام، کوڈ سائز، میموری ایلوکیشن، ٹائم آؤٹ سیٹنگز اور کنکرنسی سیٹنگز کے ساتھ ساتھ Lambda IAM ایگزیکیوشن رول، سب نیٹنگ، اور سیکیورٹی گروپ بائنڈنگز میں تبدیلیوں کو ٹریک کرنے کے قابل ہو جائیں گے۔ .

حاصل يہ ہوا

AWS Lambda محفوظ اور قابل توسیع ایپلی کیشنز بنانے کے لیے ٹولز کا ایک طاقتور سیٹ پیش کرتا ہے۔ AWS Lambda میں بہت سے حفاظتی اور تعمیل کے طریقے دوسری AWS سروسز کی طرح ہیں، حالانکہ اس میں مستثنیات ہیں۔ مارچ 2019 تک، Lambda SOC 1، SOC 2، SOC 3، PCI DSS، ہیلتھ انشورنس پورٹیبلٹی اینڈ اکاؤنٹیبلٹی ایکٹ (HIPAA) کی تعمیل، اور دیگر ضوابط کے مطابق ہے۔ اس لیے، جب آپ اپنی اگلی ایپلیکیشن کو لاگو کرنے کے بارے میں سوچ رہے ہوں، تو AWS Lambda سروس پر غور کریں - یہ آپ کے کام کے لیے بہترین ہو سکتا ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں