Terraform سے CloudFormation میں بدل گیا - اور اس پر افسوس ہوا۔

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

Terraform سے CloudFormation میں بدل گیا - اور اس پر افسوس ہوا۔
Terraform اور CloudFormation کے ساتھ تجربے کا موازنہ کرنا

آنے سے پہلے مروڑ (وہ ہے ایمیزون جونیئر) میں نے کام کیا ایک آغاز میں اور تین سال تک Terraform استعمال کیا۔ نئی جگہ پر، میں نے اپنی پوری طاقت کے ساتھ Terraform کا بھی استعمال کیا، اور پھر کمپنی نے CloudFormation سمیت ہر چیز کو لا ایمیزون پر منتقل کیا۔ میں نے تندہی سے دونوں کے لیے بہترین طریق کار تیار کیے ہیں، اور دونوں ٹولز کو بہت پیچیدہ، تنظیمی وسیع ورک فلو میں استعمال کیا ہے۔ بعد میں، سوچ سمجھ کر Terraform سے CloudFormation میں منتقل ہونے کے مضمرات کو تولنے کے بعد، مجھے یقین ہو گیا کہ Terraform شاید تنظیم کے لیے بہترین انتخاب ہے۔

ٹیرافارم خوفناک

بیٹا سافٹ ویئر

ٹیرافارم نے ابھی تک ورژن 1.0 بھی جاری نہیں کیا ہے، جو اسے استعمال نہ کرنے کی ایک اچھی وجہ ہے۔ جب سے میں نے پہلی بار خود اسے آزمایا، لیکن اس کے بعد یہ بہت بدل گیا ہے۔ terraform apply اکثر کئی اپ ڈیٹس کے بعد یا صرف چند سالوں کے استعمال کے بعد ٹوٹ جاتا ہے۔ میں کہوں گا کہ "اب سب کچھ مختلف ہے،" لیکن... ایسا لگتا ہے کہ ہر کوئی کہتا ہے، نہیں؟ ایسی تبدیلیاں ہیں جو پچھلے ورژن کے ساتھ مطابقت نہیں رکھتی ہیں، حالانکہ وہ مناسب ہیں، اور یہاں تک کہ ایسا محسوس ہوتا ہے کہ وسائل کی دکانوں کے نحو اور تجرید اب ہماری ضرورت ہے۔ ایسا لگتا ہے کہ آلہ واقعی بہتر ہو گیا ہے، لیکن... :-0

دوسری طرف، AWS نے پسماندہ مطابقت کو برقرار رکھتے ہوئے اچھا کام کیا ہے۔ یہ شاید اس لیے ہے کہ ان کی خدمات کو اکثر تنظیم کے اندر اچھی طرح جانچا جاتا ہے اور تب ہی، نام بدل کر شائع کیا جاتا ہے۔ لہذا "انہوں نے سخت کوشش کی" ایک چھوٹی بات ہے۔ AWS کی طرح متنوع اور پیچیدہ نظام کے لیے APIs کے ساتھ پسماندہ مطابقت کو برقرار رکھنا ناقابل یقین حد تک مشکل ہے۔ کسی کو بھی جس کو عوامی APIs کو برقرار رکھنا پڑا ہے جو اتنے ہی وسیع پیمانے پر استعمال ہوتے ہیں اسے سمجھنا چاہئے کہ اتنے سالوں سے ایسا کرنا کتنا مشکل ہے۔ لیکن CloudFormation کا رویہ، میری یاد میں، سالوں میں کبھی نہیں بدلا۔

ٹانگ سے ملو... یہ ایک گولی ہے۔

جہاں تک میں جانتا ہوں، وسائل کو حذف کر دیں۔ بیرونی آپ کے CF اسٹیک سے CloudFormation اسٹیک ممکن نہیں ہے۔ ٹیرافارم کے ساتھ بھی ایسا ہی ہے۔ یہ آپ کو اپنے اسٹیک میں موجودہ وسائل درآمد کرنے کی اجازت دیتا ہے۔ فنکشن کو حیرت انگیز کہا جا سکتا ہے، لیکن بڑی طاقت کے ساتھ بڑی ذمہ داری آتی ہے۔ آپ کو صرف اسٹیک میں ایک وسیلہ شامل کرنے کی ضرورت ہے، اور جب آپ اپنے اسٹیک کے ساتھ کام کر رہے ہیں، تو آپ اس وسائل کو حذف یا تبدیل نہیں کر سکتے۔ ایک دن اس نے جواب دیا۔ ایک دن Twitch پر، کسی نے غلطی سے کسی اور کے AWS سیکیورٹی گروپ کو اپنے Terraform اسٹیک میں درآمد کر لیا جب کہ کوئی شرارت نہیں ہوئی۔ میں نے کئی کمانڈ داخل کیے اور... سیکیورٹی گروپ (آنے والی ٹریفک کے ساتھ) غائب ہوگیا۔

ٹیرافارم گریٹ

نامکمل حالتوں سے بازیافت

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

دوسری طرف، Terraform، ناکام ٹرانزیشنز سے بہت زیادہ خوبصورتی سے بازیافت کرتا ہے اور ڈیبگنگ کے جدید ٹولز پیش کرتا ہے۔

دستاویز کی حالت میں واضح تبدیلیاں

"ٹھیک ہے، لوڈ بیلنسر، آپ بدل رہے ہیں۔ لیکن کس طرح؟"

پریشان انجینئر، "قبول کریں" کے بٹن کو دبانے کے لیے تیار۔

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

Terraform اس سلسلے میں بہت زیادہ شفاف ہے۔ بعض اوقات وہ بہت زیادہ شفاف بھی ہوتا ہے (پڑھیں: بورنگ)۔ خوش قسمتی سے، تازہ ترین ورژن میں تبدیلیوں کا بہتر ڈسپلے شامل ہے تاکہ آپ اب بالکل وہی دیکھ سکیں جو تبدیل ہو رہا ہے۔

لچک۔

سافٹ ویئر کو پیچھے کی طرف لکھیں۔

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

گٹ میں ماڈیولز

ٹیرافارم کوڈ کو ایک سے زیادہ اسٹیکوں میں شیئر کرنا CloudFormation کوڈ کو شیئر کرنے سے کہیں زیادہ آسان ہے۔ Terraform کے ساتھ، آپ اپنے کوڈ کو گٹ ریپوزٹری میں رکھ سکتے ہیں اور سیمنٹک ورژن کنٹرول کا استعمال کرتے ہوئے اس تک رسائی حاصل کر سکتے ہیں۔ اس ذخیرہ تک رسائی رکھنے والا کوئی بھی شخص مشترکہ کوڈ کو دوبارہ استعمال کرسکتا ہے۔ کلاؤڈ فارمیشن کا مساوی S3 ہے، لیکن اس کے ایک جیسے فوائد نہیں ہیں، اور اس کی کوئی وجہ نہیں ہے کہ ہمیں S3 کے حق میں گٹ کو بالکل ترک کرنا چاہیے۔

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

کوڈ کے طور پر آپریشنز

"آئیے اسے اسکرپٹ کریں اور ٹھیک ہے۔"

ٹیرافارم سائیکل ایجاد کرنے سے 3 سال پہلے ایک انجینئر۔

جب سافٹ ویئر ڈویلپمنٹ کی بات آتی ہے تو گو یا جاوا پروگرام صرف کوڈ نہیں ہوتا ہے۔

Terraform سے CloudFormation میں بدل گیا - اور اس پر افسوس ہوا۔
کوڈ بطور کوڈ

انفراسٹرکچر بھی ہے جس پر یہ کام کرتا ہے۔

Terraform سے CloudFormation میں بدل گیا - اور اس پر افسوس ہوا۔
بنیادی ڈھانچہ بطور ضابطہ

لیکن وہ کہاں سے ہے؟ اس کی نگرانی کیسے کی جائے؟ آپ کا کوڈ کہاں رہتا ہے؟ کیا ڈویلپرز کو رسائی کی اجازت درکار ہے؟

Terraform سے CloudFormation میں بدل گیا - اور اس پر افسوس ہوا۔
کوڈ کے طور پر آپریشنز

سافٹ ویئر ڈویلپر ہونے کا مطلب صرف کوڈ لکھنا نہیں ہے۔

AWS صرف ایک نہیں ہے: آپ شاید دوسرے فراہم کنندگان کا استعمال کرتے ہیں۔ سگنل ایف ایکس، پیجر ڈیوٹی یا گیتھب۔ ہوسکتا ہے کہ آپ کے پاس CI/CD کے لیے جینکنز کا اندرونی سرور ہو یا مانیٹرنگ کے لیے اندرونی گرافانا ڈیش بورڈ ہو۔ Infra as Code کا انتخاب مختلف وجوہات کی بنا پر کیا جاتا ہے، اور ہر ایک سافٹ ویئر سے متعلق ہر چیز کے لیے یکساں طور پر اہم ہے۔

جب میں نے Twitch میں کام کیا تو ہم نے Amazon کے مخلوط ایمبیڈڈ اور AWS سسٹم کے اندر خدمات کو تیز کیا۔ ہم نے آپریشنل لاگت میں اضافہ کرتے ہوئے بہت سی مائیکرو سروسز کی حمایت کی اور مدد کی۔ بات چیت کچھ اس طرح ہوئی:

  • Я: لات، یہ ایک مائیکرو سروس کو اوور کلاک کرنے کے لیے بہت سارے اشارے ہیں۔ مجھے AWS اکاؤنٹ بنانے کے لیے اس کوڑے کا استعمال کرنا پڑے گا (ہم 2 اکاؤنٹس پر گئے۔ مائیکرو سروس)، پھر یہ الرٹس ترتیب دینے کے لیے، یہ کوڈ کے ذخیرے کے لیے، اور یہ ای میل کی فہرست کے لیے، اور پھر یہ...
  • لیڈ: آئیے اسے اسکرپٹ کرتے ہیں اور ٹھیک ہے۔
  • Я: ٹھیک ہے، لیکن اسکرپٹ خود بدل جائے گا۔ ہمیں یہ چیک کرنے کے لیے ایک طریقہ درکار ہوگا کہ یہ تمام بلٹ ان ایمیزون گیزموز اپ ٹو ڈیٹ ہیں۔
  • لیڈ: اچھا لگتا ہے. اور ہم اس کے لیے اسکرپٹ لکھیں گے۔
  • Я: زبردست! اور اسکرپٹ کو شاید اب بھی پیرامیٹرز سیٹ کرنے کی ضرورت ہوگی۔ کیا وہ انہیں قبول کرے گا؟
  • لیڈ: اسے لے جانے دو جہاں وہ جاتا ہے!
  • Я: عمل بدل سکتا ہے اور پسماندہ مطابقت ختم ہو جائے گی۔ کسی قسم کے سیمنٹک ورژن کنٹرول کی ضرورت ہوگی۔
  • لیڈ: عظیم خیال!
  • Я: ٹولز کو یوزر انٹرفیس کے اندر دستی طور پر تبدیل کیا جا سکتا ہے۔ ہمیں اسے چیک کرنے اور اسے ٹھیک کرنے کا طریقہ درکار ہوگا۔

…3 سال بعد:

  • لیڈ: اور ہمیں ٹیرافارم ملا۔

کہانی کا اخلاق یہ ہے: یہاں تک کہ اگر آپ ایمیزون کی ہر چیز میں ایڑیوں کے اوپر سر، آپ اب بھی کوئی ایسی چیز استعمال کر رہے ہیں جو AWS سے نہیں ہے، اور ان سروسز میں ایسی حالت ہے جو اس حالت کو مطابقت پذیر رکھنے کے لیے کنفیگریشن لینگویج استعمال کرتی ہے۔

کلاؤڈ فارمیشن لیمبڈا بمقابلہ گٹ ماڈیول ٹیرافارم

lambda CloudFormation کا کسٹم منطق کے مسئلے کا حل ہے۔ لیمبڈا کے ساتھ آپ کر سکتے ہیں۔ میکرو بنائیں یا صارف کے وسائل. یہ نقطہ نظر اضافی پیچیدگیوں کو متعارف کرایا ہے جو ٹیرافارم کے گٹ ماڈیولز کے سیمنٹک ورژن میں موجود نہیں ہیں۔ میرے لیے، سب سے اہم مسئلہ ان تمام صارف لیمبڈاس کے لیے اجازتوں کا انتظام کرنا تھا (اور یہ درجنوں AWS اکاؤنٹس ہیں)۔ ایک اور اہم مسئلہ یہ تھا کہ "پہلے کیا آیا، چکن یا انڈا؟" مسئلہ: اس کا تعلق لیمبڈا کوڈ سے تھا۔ یہ فنکشن خود انفراسٹرکچر اور کوڈ ہے، اور اسے خود نگرانی اور اپ ڈیٹس کی ضرورت ہے۔ تابوت میں آخری کیل لیمبڈا کوڈ کی تبدیلیوں کو معنوی طور پر اپ ڈیٹ کرنے میں دشواری تھی۔ ہمیں یہ بھی یقینی بنانا تھا کہ براہ راست کمانڈ کے بغیر اسٹیک ایکشنز رنز کے درمیان تبدیل نہ ہوں۔

مجھے یاد ہے کہ ایک بار میں نے کلاسک لوڈ بیلنسر کے ساتھ لچکدار بین اسٹالک ماحول کے لیے کینری تعیناتی بنانا چاہا تھا۔ سب سے آسان کام یہ ہوگا کہ EB کے لیے پیداواری ماحول کے ساتھ دوسری تعیناتی کی جائے، اسے ایک قدم آگے بڑھاتے ہوئے: آٹو اسکیلنگ کینری تعیناتی گروپ کو پیداواری ماحول میں تعیناتی LB کے ساتھ ملانا۔ اور چونکہ Terraform استعمال کرتا ہے۔ ASG beantalk بطور نتیجہ، اس کے لیے Terraform میں کوڈ کی 4 اضافی لائنوں کی ضرورت ہوگی۔ جب میں نے پوچھا کہ کیا CloudFormation میں کوئی موازنہ حل موجود ہے، تو انہوں نے مجھے ایک مکمل گٹ ریپوزٹری کی طرف اشارہ کیا جس میں ایک تعیناتی پائپ لائن اور ہر چیز ہے، یہ سب کچھ اس لیے کہ Terraform کوڈ کی ناقص 4 لائنیں کیا کر سکتی ہیں۔

یہ بڑھنے کا بہتر طور پر پتہ لگاتا ہے۔

یقینی بنائیں کہ حقیقت توقعات سے ملتی ہے۔

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

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

CDK اور کلاؤڈ فارمیشن کا مستقبل

CloudFormation کا بڑے، کراس انفراسٹرکچر پیمانے پر انتظام کرنا مشکل ہے۔ ان میں سے بہت سی مشکلات کو تسلیم کیا گیا ہے اور اس آلے کو چیزوں کی ضرورت ہے۔ aws-cdk، کوڈ میں کلاؤڈ انفراسٹرکچر کی وضاحت کرنے اور اسے AWS CloudFormation کے ذریعے چلانے کا ایک فریم ورک۔ یہ دیکھنا دلچسپ ہوگا کہ مستقبل aws-cdk کے لیے کیا رکھتا ہے، لیکن اسے Terraform کی دیگر طاقتوں کے ساتھ مقابلہ کرنے میں مشکل پیش آئے گی۔ CloudFormation کو تازہ ترین لانے کے لیے، عالمی تبدیلیوں کی ضرورت ہوگی۔

تاکہ ٹیرافارم مایوس نہ ہو۔

یہ "بطور کوڈ" بنیادی ڈھانچہ ہے، نہ کہ "بطور متن"۔

ٹیرافارم کے بارے میں میرا پہلا تاثر بہت برا تھا۔ مجھے لگتا ہے کہ میں صرف نقطہ نظر کو سمجھ نہیں پایا۔ تقریباً تمام انجینئرز غیر ارادی طور پر اسے ایک ٹیکسٹ فارمیٹ کے طور پر سمجھتے ہیں جسے مطلوبہ انفراسٹرکچر میں تبدیل کرنے کی ضرورت ہے۔ اسے اس طرح مت کرو۔

اچھے سافٹ ویئر ڈویلپمنٹ کے اصول Terraform پر بھی لاگو ہوتے ہیں۔

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

کوڈ کی دستاویز کیسے نہیں کی جا سکتی؟

میں نے بغیر کسی دستاویزات کے بہت بڑے ٹیرافارم اسٹیک دیکھے ہیں۔ آپ صفحات میں کوڈ کیسے لکھ سکتے ہیں - بغیر کسی دستاویز کے؟ ایسی دستاویزات شامل کریں جو آپ کی وضاحت کرتی ہیں۔ کوڈ Terraform (لفظ "کوڈ" پر زور)، یہ سیکشن اتنا اہم کیوں ہے، اور آپ کیا کرتے ہیں۔

ہم ان خدمات کو کیسے تعینات کر سکتے ہیں جو کبھی ایک بڑا مین () فنکشن ہوا کرتی تھیں؟

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

کیا آپ کی کمپنی لائبریریوں کا استعمال نہیں کرتی؟

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

کیا آپ PEP8 یا gofmt استعمال نہیں کر رہے ہیں؟

زیادہ تر زبانوں میں معیاری، قبول شدہ فارمیٹنگ اسکیم ہوتی ہے۔ Python میں یہ PEP8 ہے۔ گو میں - gofmt. Terraform کا اپنا ہے: terraform fmt. اپنی صحت کے لیے اس کا لطف اٹھائیں!

کیا آپ جاوا اسکرپٹ کو جانے بغیر React استعمال کریں گے؟

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

کیا آپ سنگلٹن یا انحصار انجیکشن کے ساتھ کوڈنگ کر رہے ہیں؟

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

کیا آپ کی لائبریریاں دس چیزیں اچھی کرتی ہیں یا ایک اچھی چیز؟

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

پسماندہ مطابقت کے بغیر آپ لائبریریوں میں تبدیلیاں کیسے کرتے ہیں؟

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

کیا آپ کی پروڈکشن سروس آپ کے لیپ ٹاپ پر چل رہی ہے یا ڈیٹا سینٹر میں؟

Hashicorp جیسے ٹولز ہیں۔ ٹیرافارم بادل اپنے ٹیرافارم کو چلانے کے لیے۔ یہ مرکزی خدمات ٹیرافارم کی تبدیلیوں کا انتظام، آڈٹ اور منظوری کو آسان بناتی ہیں۔

کیا آپ ٹیسٹ نہیں لکھتے؟

انجینئر تسلیم کرتے ہیں کہ کوڈ کو جانچنے کی ضرورت ہے، لیکن وہ خود اکثر ٹیرافارم کے ساتھ کام کرتے وقت جانچ کے بارے میں بھول جاتے ہیں۔ بنیادی ڈھانچے کے لئے، یہ غدار لمحات سے بھرا ہوا ہے. میرا مشورہ یہ ہے کہ CI/CD کے دوران جانچ کے لیے درست طریقے سے تعینات کیے جانے والے ماڈیولز کا استعمال کرتے ہوئے "ٹیسٹ کریں" یا "مثال بنائیں"۔

ٹیرافارم اور مائیکرو سروسز

مائیکرو سروسز کمپنیوں کی زندگی اور موت کا انحصار نئے مائیکرو سروسز ورک اسٹیکس کی رفتار، اختراع اور خلل پر ہے۔

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

ماخذ: www.habr.com

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