د کوډ په توګه زیربنا: لومړی پیژندنه

زموږ شرکت د SRE ټیم ته د ننوتلو په پروسه کې دی. زه دې ټولې کیسې ته د پراختیا اړخ څخه راغلم. په پروسه کې، زه د فکرونو او بصیرت سره راغلم چې زه غواړم د نورو پراختیا کونکو سره شریک کړم. په دې انعکاس مقاله کې زه د هغه څه په اړه خبرې کوم چې څه پیښیږي ، دا څنګه پیښیږي ، او څنګه هرڅوک کولی شي ژوند ته دوام ورکړي.

د کوډ په توګه زیربنا: لومړی پیژندنه

زموږ په داخلي پیښه کې د وینا پراساس لیکل شوي مقالو لړۍ دوام دیوفورم:

1. د شروډینګر پیشو له بکس پرته: په ویشل شوي سیسټمونو کې د توافق ستونزه.
2. د کوډ په توګه زیربنا. (تاسو دلته یاست)
3. د C# ماډلونو په کارولو سره د ټایپ سکریپټ قراردادونو تولید. (د پرمختګ په حال کې...)
4. د رافټ توافق الګوریتم پیژندنه. (د پرمختګ په حال کې...)
...

موږ پریکړه وکړه چې د SRE ټیم جوړ کړو، د نظرونو پلي کول google sre. دوی د خپلو پراختیا کونکو څخه پروګرام کونکي استخدام کړل او د څو میاشتو لپاره یې روزنې ته واستول.

ټیم لاندې روزنیز دندې درلودې:

  • زموږ زیربنا تشریح کړئ، کوم چې ډیری یې په مایکروسافټ Azure کې د کوډ په بڼه (Terraform او شاوخوا هرڅه).
  • پراختیا کونکو ته ښوونه وکړئ چې څنګه د زیربنا سره کار وکړي.
  • د دندې لپاره پراختیا کونکي چمتو کړئ.

موږ د زیربنا مفهوم د کوډ په توګه معرفي کوو

د نړۍ په معمول ماډل کې (کلاسیک اداره)، د زیربنا په اړه پوهه په دوو ځایونو کې موقعیت لري:

  1. یا د پوهانو په سرونو کې د پوهې په بڼه.د کوډ په توګه زیربنا: لومړی پیژندنه
  2. یا دا معلومات په ځینو ټایپ رایټرونو کې دي، چې ځینې یې متخصصینو ته پیژندل شوي. مګر دا حقیقت ندی چې یو بهرنی (په هغه صورت کې چې زموږ ټوله ټیم ناڅاپه مړ شي) به وکوالی شي معلومه کړي چې څه کار کوي او څنګه کار کوي. په ماشین کې ډیری معلومات شتون لري: لوازم، کرونجبونه، ډار شوي (وګورئ. د ډیسک نصب کول) ډیسک او یوازې د هغه څه نه ختمیدونکي لیست چې پیښ کیدی شي. دا ستونزمنه ده چې پوه شي چې واقعیا څه پیښیږي.د کوډ په توګه زیربنا: لومړی پیژندنه

په دواړو حالتونو کې، موږ خپل ځان په انحصار کې ګیر یو:

  • یا د هغه چا څخه چې مړ وي، د ناروغۍ تابع وي، په مینه کې راښکته شي، د مزاج بدلون او په ساده ډول د ممنوع برخلیک؛
  • یا د فزیکي پلوه د کار کولو ماشین څخه، کوم چې هم رالویږي، غلا کیږي، او حیرانتیا او تکلیفونه وړاندې کوي.

دا پرته له دې چې ووایی چې په مثالي توګه هرڅه باید د انسان لوستلو وړ ، ساتلو وړ ، ښه لیکل شوي کوډ کې وژباړل شي.

په دې توګه، د کوډ په توګه زیربنا (Incfastructure as Code - IaC) د کوډ په بڼه د ټولو موجوده زیربناوو توضیحات دي، او همدارنګه د دې سره د کار کولو او له هغې څخه د ریښتینې زیربنا پلي کولو لپاره اړوند وسایل دي.

ولې هر څه په کوډ کې ژباړئ؟خلک ماشین نه دي. دوی نشي کولی هرڅه په یاد وساتي. د یو شخص او ماشین عکس العمل توپیر لري. هر هغه څه چې په اتوماتيک ډول د انسان لخوا ترسره کیږي په بالقوه توګه ګړندي دي. ترټولو مهمه خبره د حقیقت یوه سرچینه ده.

د SRE نوي انجنیران له کوم ځای څخه راځي؟نو، موږ پریکړه وکړه چې نوي SRE انجنیران وګمارو، مګر دوی له کوم ځای څخه ترلاسه کړو؟ کتاب د سمو ځوابونو سره (د ګوګل SRE کتاب) موږ ته وایی: د پراختیا کونکو څخه. په هرصورت، دوی د کوډ سره کار کوي، او تاسو مثالی حالت ترلاسه کوئ.

موږ د دوی لپاره زموږ د شرکت څخه بهر د پرسونل بازار کې د اوږدې مودې لپاره ډیر لټون وکړ. مګر موږ باید دا ومنو چې موږ داسې څوک ونه موندل چې زموږ د غوښتنو سره سم وي. زه باید د خپلو خلکو په منځ کې لټون وکړم.

د کوډ په توګه د زیربنا ستونزې

اوس راځئ چې مثالونه وګورو چې څنګه زیربنا په کوډ کې هارډ کوډ کیدی شي. کوډ ښه لیکل شوی، لوړ کیفیت، د تبصرو او اشارو سره.

د Terraforma څخه کوډ مثال.

د کوډ په توګه زیربنا: لومړی پیژندنه

د ځواب کوډ مثال.

د کوډ په توګه زیربنا: لومړی پیژندنه

ښاغلو، که یوازې دا دومره ساده وای! موږ په ریښتینې نړۍ کې یو، او دا تل چمتو یو چې تاسو حیران کړو، تاسو حیرانتیا او ستونزې وړاندې کړئ. دلته هم د دوی پرته نشي کولی.

1. لومړۍ ستونزه دا ده چې په ډیری مواردو کې IaC یو ډول dsl دی.

او DSL، په پایله کې، د جوړښت تشریح دی. په دقیقه توګه، هغه څه چې تاسو یې باید ولرئ: Json، Yaml، د ځینو لوی شرکتونو څخه تعدیلات چې د دوی د dsl سره راغلي (HCL په ټرافورم کې کارول کیږي).

ستونزه دا ده چې دا ممکن په اسانۍ سره داسې پیژندل شوي شیان نلري لکه:

  • متغیرات
  • شرایط
  • چیرته چې هیڅ نظر شتون نلري، د بیلګې په توګه، په Json کې، په ډیفالټ ډول دوی ندي چمتو شوي؛
  • دندې
  • او زه حتی د داسې لوړې کچې شیانو په اړه خبرې نه کوم لکه ټولګي، میراث او دا ټول.

2. د دې ډول کوډ سره دویمه ستونزه دا ده چې ډیری وختونه دا یو متضاد چاپیریال دی. معمولا تاسو ناست یاست او د C# سره کار کوئ، د بیلګې په توګه. د یوې ژبې سره، یو سټیک، یو ایکوسیستم سره. او دلته تاسو د ټیکنالوژیو لوی ډولونه لرئ.

دا یو خورا ریښتینی حالت دی کله چې د پیتون سره باش یو څه پروسه پیلوي چې Json پکې داخلیږي. تاسو یې تحلیل کړئ، بیا یو بل جنریټر نور 30 ​​فایلونه تولیدوي. د دې ټولو لپاره ، د ان پټ متغیرونه د Azure Key Vault څخه ترلاسه کیږي ، کوم چې په Go کې لیکل شوي drone.io لپاره د پلگ ان لخوا یوځای ایستل شوي ، او دا متغیرونه د یامل له لارې تیریږي ، کوم چې د jsonnet ټیمپلیټ انجن څخه د نسل په پایله کې رامینځته شوی. دا خورا ستونزمن کار دی چې په کلکه ښه بیان شوي کوډ ولرئ کله چې تاسو داسې متنوع چاپیریال ولرئ.

د یوې دندې په چوکاټ کې دودیز پرمختګ د یوې ژبې سره راځي. دلته موږ د ډیرو ژبو سره کار کوو.

3. دریمه ستونزه د ټون کولو ده. موږ د یډیټورانو سړو لپاره کارول کیږو (د میرمن لید سټوډیو ، جیټبرین رائډر) چې زموږ لپاره هرڅه کوي. او حتی که موږ احمقان یو، دوی به ووایي چې موږ غلط یو. دا نورمال او طبیعي ښکاري.

مګر په کوم ځای کې نږدې VSCode شتون لري ، په کوم کې چې ځینې پلگ ان شتون لري چې په یو ډول نصب شوي ، ملاتړ شوي یا نه ملاتړ شوي. نوې نسخې راوتلې او نه ملاتړ شوي. د فنکشن پلي کولو لپاره یو اړخیز لیږد (حتی که شتون ولري) یوه پیچلې او غیر معمولي ستونزه کیږي. د متغیر ساده نوم بدلول د درجن فایلونو په پروژه کې بیا پلی کول دي. تاسو به خوشحاله شئ که چیرې هغه هغه څه ځای په ځای کړي چې تاسو ورته اړتیا لرئ. البته، دلته او هلته بیرته رڼا شتون لري، د اتوماتیک بشپړتیا شتون لري، چیرته چې فارمیټ شتون لري (که څه هم دا زما لپاره په وینډوز کې په ټرافورم کې کار نه دی کړی).

د دې لیکلو په وخت کې vscode-terraform پلگ ان لا تر اوسه د 0.12 نسخه مالتړ لپاره ندی خپور شوی، که څه هم دا د 3 میاشتو لپاره خپور شوی.

دا د هیرولو وخت دی ...

  1. Debugging.
  2. د بیاکتنې وسیله.
  3. اتوماتیک بشپړول.
  4. د تالیف پرمهال د غلطیو کشف کول.

دا مسخره ده، مګر دا د پراختیا وخت هم زیاتوي او د غلطیو شمیر زیاتوي چې په ناڅاپي ډول واقع کیږي.

ترټولو بد شی دا دی چې موږ مجبور یو چې د دې په اړه فکر ونه کړو چې څنګه فایلونه په فولډرونو کې ډیزاین کړو، فایلونه تنظیم کړو، تخریب کړو، کوډ د ساتلو وړ، د لوستلو وړ او داسې نور، مګر دا چې زه څنګه کولی شم دا کمانډ په سمه توګه ولیکم، ځکه چې ما یو څه غلط لیکلي. .

د یو ابتکار په توګه، تاسو هڅه کوئ چې د ټرافورم زده کړئ، او IDE ستاسو سره هیڅ مرسته نه کوي. کله چې اسناد شتون ولري، لاړ شئ او وګورئ. مګر که تاسو د پروګرام کولو نوې ژبه داخل کړئ، IDE به تاسو ته ووایي چې دا ډول ډول شتون لري، مګر داسې هیڅ شی شتون نلري. لږترلږه د int یا تار په کچه. دا ډیری وختونه ګټور دي.

د ازموینو په اړه څه؟

تاسو پوښتنه کوئ: "د ازموینو په اړه څه، ښاغلو پروګرامرانو؟" جدي هلکان په تولید کې هرڅه ازموي ، او دا سخت دی. دلته د ویب پاڼې څخه د ټرافورم ماډل لپاره د واحد ازموینې مثال دی د Microsoft.

د کوډ په توګه زیربنا: لومړی پیژندنه

دوی ښه اسناد لري. ما تل د اسنادو او روزنې لپاره مایکروسافټ د دې چلند لپاره خوښ کړی دی. مګر تاسو اړتیا نلرئ د کاکا باب اوسئ ترڅو پوه شئ چې دا بشپړ کوډ ندی. ښي خوا ته د اعتبار یادونه وکړئ.

د یونټ ازموینې سره ستونزه دا ده چې تاسو او زه کولی شو د Json محصول درستیت وګورو. ما په 5 پیرامیټرو کې وغورځاوه او د 2000 لینونو سره د Json فوټ کلاټ ورکړل شو. زه کولی شم تحلیل کړم چې دلته څه پیښیږي ، د ازموینې پایله تایید کړئ ...

په Go کې د Json تجزیه کول ستونزمن دي. او تاسو اړتیا لرئ په Go کې ولیکئ، ځکه چې په Go کې ټریفارم په هغه ژبه کې د ازموینې لپاره ښه تمرین دی چې تاسو یې لیکئ. د کوډ تنظیم پخپله خورا کمزوری دی. په ورته وخت کې، دا د ازموینې لپاره غوره کتابتون دی.

مایکروسافټ پخپله خپل ماډلونه لیکي، په دې طریقه یې ازموینه کوي. البته دا خلاص سرچینه ده. هرڅه چې زه یې په اړه خبرې کوم تاسو کولی شئ راشئ او سم کړئ. زه کولی شم ناست شم او په یوه اونۍ کې هرڅه سم کړم ، د خلاصې سرچینې VS کوډ پلگ انونه ، ټیرفارمونه ، د سوار لپاره پلگ ان جوړ کړئ. کیدای شي یو څو تحلیل کونکي ولیکئ، لینټ اضافه کړئ، د ازموینې لپاره کتابتون کې مرسته وکړئ. زه هرڅه کولی شم. مګر دا هغه څه ندي چې زه یې باید وکړم.

د کوډ په توګه د زیربنا غوره تمرینونه

راځئ چې حرکت وکړو. که چیرې په IaC کې هیڅ ازموینې شتون ونلري، IDE او ټیوننګ خراب وي، نو لږترلږه باید غوره تمرینونه وي. زه یوازې د ګوګل انلاینز ته لاړم او د دوه لټون پوښتنو پرتله یې کړه: د Terraform غوره کړنې او c# غوره کړنې.

د کوډ په توګه زیربنا: لومړی پیژندنه

موږ څه وینو؟ بې رحمه احصایې زموږ په ګټه ندي. د موادو اندازه ورته ده. د C# پراختیا کې، موږ په ساده ډول په موادو کې یو، موږ خورا غوره تمرینونه لرو، د متخصصینو لخوا لیکل شوي کتابونه شتون لري، او همدارنګه د نورو کارپوهانو لخوا په کتابونو لیکل شوي کتابونه چې په دې کتابونو نیوکه کوي. د رسمي اسنادو، مقالو، روزنیزو کورسونو سمندر، او اوس هم د خلاصې سرچینې پراختیا.

لکه څنګه چې د IaC غوښتنې لپاره: دلته تاسو هڅه کوئ چې د لوړ لوډ یا HashiConf راپورونو څخه ، د رسمي اسنادو او په ګیتوب کې ډیری مسلو څخه دقیق معلومات راټول کړئ. دا ماډلونه څنګه په عمومي توګه وویشئ، د دوی سره څه وکړي؟ داسې بریښي چې دا ریښتیا ستونزه ده ... دلته یوه ټولنه شتون لري ، ښاغلو ، چیرې چې د هرې پوښتنې لپاره تاسو ته به د ګیتوب په اړه 10 نظرونه درکړل شي. خو دا دقیقا نه ده.

له بده مرغه، په دې وخت کې، متخصصین یوازې د راڅرګندیدو پیل کوي. تر دې دمه د دوی ډیر لږ شتون لري. او ټولنه پخپله په ابتدايي کچه ځړول کیږي.

دا ټول چیرته ځي او څه وکړي

تاسو کولی شئ هرڅه پریږدئ او بیرته C# ته لاړ شئ ، د سوار نړۍ ته. مګر نه. ولې تاسو حتی د دې کار کولو زحمت کوئ که تاسو د حل لاره ونه مومئ. لاندې زه زما موضوعي پایلې وړاندې کوم. تاسو کولی شئ زما سره په نظرونو کې بحث وکړئ، دا به په زړه پورې وي.

په شخصي توګه، زه په یو څو شیانو شرط کوم:

  1. په دې سیمه کې پرمختګ په چټکۍ سره ترسره کیږي. دلته د DevOps لپاره د غوښتنو مهالویش دی.

    د کوډ په توګه زیربنا: لومړی پیژندنه

    موضوع ښایي هېپ وي، مګر دا حقیقت چې ساحه وده کوي یو څه امید ورکوي.

    که یو څه په چټکۍ سره وده وکړي، نو هوښیار خلک به خامخا راښکاره شي څوک به تاسو ته ووایي چې څه باید وکړئ او څه ونه کړئ. د شهرت زیاتوالی د دې حقیقت لامل کیږي چې شاید یو څوک به په پای کې د vscode لپاره jsonnet ته د پلگ ان اضافه کولو وخت ولري ، کوم چې تاسو ته اجازه درکوي د ctrl+shift+f له لارې د لټون کولو پرځای د فنکشن پلي کولو ته لاړشئ. لکه څنګه چې شیان وده کوي، نور مواد ښکاره کیږي. د SRE په اړه د ګوګل څخه د کتاب خپرول د دې یوه غوره بیلګه ده.

  2. په دودیز پرمختګ کې پرمختللي تخنیکونه او تمرینونه شتون لري چې موږ کولی شو په بریالیتوب سره دلته پلي کړو. هو، د ازموینې او متفاوت چاپیریال، ناکافي وسیلې سره باریکي شتون لري، مګر یو لوی شمیر تمرینونه راټول شوي چې ګټور او ګټور وي.

    یو کوچنی مثال: د جوړه برنامې له لارې همکاري. دا د پیژندلو لپاره ډیره مرسته کوي. کله چې تاسو نږدې ګاونډی ولرئ چې هڅه کوي په یو څه پوه شي، تاسو به یوځای ښه پوه شئ.

    د دې پوهیدل چې څنګه د ریفکتور کولو ترسره کیږي حتی په داسې حالت کې د دې ترسره کولو کې مرسته کوي. یعني هر څه په یو ځل نه شي بدلولای، خو نوم بدل کړئ، بیا ځای بدل کړئ، بیا یو څه برخه روښانه کړئ، هو، خو دلته کافي نظرونه نشته.

پایلې

د دې حقیقت سره سره چې زما استدلال ممکن نا امیدي ښکاري، زه راتلونکي ته په امید او صادقانه امید سره ګورم چې هرڅه به زموږ (او تاسو) لپاره کار وکړي.

د مقالې دویمه برخه راتلونکی چمتو کیږي. په دې کې، زه به د دې په اړه وغږیږم چې څنګه موږ هڅه وکړه چې زموږ د زده کړې پروسې ښه کولو او د زیربناوو سره کار کولو لپاره د چټک پرمختیایي کړنو څخه کار واخلو.

سرچینه: www.habr.com

Add a comment