Amazon Aurora، Amazon Relational Database Service (Amazon RDS)، Amazon DynamoDB، Amazon ElastiCache، اور Amazon Redshift کے درمیان انتخاب کا عمل ایک بنیادی فیصلے سے شروع ہوتا ہے۔ ہمیں یہ طے کرنا ہوگا کہ ورک لوڈ (workload) کس طرح ڈیٹا کو پڑھتا اور لکھتا ہے، اور اسے ڈیٹا کی مستقل مزاجی (consistency)، لیٹنسی (latency)، دستیابی (availability)، اور بحالی (recovery) کے حوالے سے کیا ضمانتیں دینی ہیں۔ اس کورس میں، ہم ایک ایسا قابلِ اعادہ (repeatable) فریم ورک تشکیل دیں گے جو ان ضروریات کو ڈیٹا بیس کے ایسے انتخاب میں تبدیل کرے گا جس کی ہم معقولیت ثابت کر سکیں اور تصدیق کر سکیں۔
یہ کورس AWS کی پانچ ‘مینیجڈ ڈیٹا سروسز’ اور ان کے لیے موزوں ورک لوڈز پر مرکوز ہے۔ Amazon Aurora اور Amazon RDS کا تعلق ‘ریلیشنل انجنز’ (relational engines) میں آن لائن ٹرانزیکشن پروسیسنگ سے ہے۔ Amazon DynamoDB ‘کی-ویلیو’ (key-value) رسائی کے پیٹرنز کے لیے ہے جو بڑے پیمانے پر (at scale) سنگل ڈیجٹ ملی سیکنڈز کی متوقع کارکردگی فراہم کرتا ہے۔ Amazon ElastiCache ایک ‘ان-میموری کیشے’ (in-memory cache) ہے جو ڈیٹا کے اصل ریکارڈ (system of record) کے بجائے ڈیٹا کی کاپیاں محفوظ کرتا ہے۔ Amazon Redshift کا تعلق ایسے اینالیٹکس ورک لوڈز سے ہے جو بڑے ڈیٹا سیٹس کو اسکین اور یکجا (aggregate) کرتے ہیں۔
ہم AWS کی حدود (boundaries) کو بھی واضح طور پر پیشِ نظر رکھتے ہیں۔ Region (ریجن) ایک جغرافیائی خطہ ہے جہاں AWS متعدد اور الگ تھلگ ڈیٹا سینٹرز چلاتا ہے۔ Availability Zone (اویلیبلٹی زون) ایک ریجن کے اندر واقع ایک الگ تھلگ مقام ہوتا ہے۔ پائیداری (durability) اور دستیابی (availability) کی بہت سی خصوصیات کا انحصار اس بات پر ہوتا ہے کہ کوئی سروس ایک ریجن کے اندر متعدد اویلیبلٹی زونز کو کس طرح استعمال کرتی ہے۔
آئیے جائزہ لیتے ہیں کہ یہ پانچوں سروسز ٹرانزیکشن، کیشے، اور اینالیٹکس کے اسپیکٹرم (spectrum) پر کہاں واقع ہیں۔
ہم ہر سبق میں فیصلہ سازی کے اسی عمل (decision loop) کو استعمال کریں گے۔ سب سے پہلے ہم رسائی کے نمونوں (access patterns) اور ڈیٹا ماڈل کا تعین کرتے ہیں۔ پھر ہم ان ضروریات کو ایسے سروس میکانزم سے منسلک کرتے ہیں جو انہیں پورا کرتا ہے۔ اس کے بعد ہم لاگت، آپریشنل ملکیت اور خرابی کی صورت میں رویے (failure behavior) کے حوالے سے درپیش متبادل ترجیحات یا سمجھوتوں (tradeoffs) کی نشاندہی کرتے ہیں۔ آخر میں، ہم مفروضوں کے بجائے مشاہدہ کیے جانے والے شواہد کی بنیاد پر اپنے انتخاب کی تصدیق کرتے ہیں۔
شواہد کا تعلق اسی دائرہ کار (boundary) سے ہونا چاہیے جس کی ہم جانچ کر رہے ہیں۔ میٹرکس اور لاگز یہ ظاہر کرتے ہیں کہ حقیقی رن ٹائم (runtime) کے دوران کیا ہوا؛ جبکہ جامد تجزیہ (static analysis) اور کنفیگریشن کا جائزہ صرف یہ بتاتے ہیں کہ کسی مخصوص کنفیگریشن کی صورت میں کیا ہو سکتا ہے۔ ایک اچھے فیصلے میں کم از کم ایک ایسا رن ٹائم سگنل شامل ہوتا ہے جو ہمارے مفروضوں کو غلط ثابت کر سکے۔
آئیے اس عمل کے تسلسل کا تصور کریں جس کی ہم بار بار مشق کریں گے: ضروریات سے میکانزم اور پھر شواہد تک کا سفر۔