د سافټویر جوړښت او سیسټم ډیزاین: لوی انځور او سرچینې لارښود

سلام همکارانو.

نن ورځ موږ ستاسو د غور لپاره د Tugberk Ugurlu لخوا د یوې مقالې ژباړه وړاندیز کوو، چا چې په نسبتا کوچني حجم کې د عصري سافټویر سیسټمونو ډیزاین کولو اصول په ګوته کړي. دلته هغه څه دي چې لیکوال یې په لنډیز کې د ځان په اړه وايي:

د سافټویر جوړښت او سیسټم ډیزاین: لوی انځور او سرچینې لارښود
څرنګه چې د هابرو په مقاله کې د 2019 پورې د معمارۍ نمونو + ډیزاین نمونو په څیر پراخه موضوع پوښل بالکل ناممکن دي ، نو موږ نه یوازې پخپله د ښاغلي اوروګلو متن وړاندیز کوو ، بلکه ډیری لینکونه چې هغه یې په مهربانۍ سره پکې شامل کړي دي. که تاسو دا خوښ کړئ، موږ به د توزیع شوي سیسټمونو ډیزاین په اړه یو ډیر لوړ ځانګړی متن خپور کړو.

د سافټویر جوړښت او سیسټم ډیزاین: لوی انځور او سرچینې لارښود

سنیپ شاټ اسحاق سمیټ د Unsplash څخه

که تاسو هیڅکله د داسې ننګونو سره مخ شوي نه یاست لکه د سکریچ څخه د سافټویر سیسټم ډیزاین کول ، نو کله چې دا ډول کار پیل کوئ ، ځینې وختونه دا هم روښانه نه وي چې چیرې یې پیل کړئ. زه باور لرم چې تاسو لومړی باید حدونه رسم کړئ ترڅو تاسو د دې په اړه لږ یا لږ باوري نظر ولرئ چې واقعیا تاسو څه ډیزاین کوئ ، او بیا خپل آستینونه پورته کړئ او په دې حدودو کې کار وکړئ. د پیل ټکي په توګه، تاسو کولی شئ یو محصول یا خدمت واخلئ (مثالی یو چې تاسو واقعیا خوښوي) او معلومه کړئ چې څنګه یې پلي کړئ. تاسو شاید حیران شئ چې دا محصول څومره ساده ښکاري، او په حقیقت کې څومره پیچلتیا لري. هېر مو نشي: ساده - معمولا پیچلياو دا سمه ده.

زما په اند ترټولو غوره مشوره چې زه یې هرچا ته د سیسټم ډیزاین کولو پیل کولی شم دا دی: هیڅ انګیرنه مه کوئ! له پیل څخه، تاسو اړتیا لرئ د دې سیسټم په اړه پیژندل شوي حقایق او د هغې سره تړلې هیلې مشخص کړئ. دلته ځینې ښه پوښتنې دي چې تاسو سره ستاسو د ډیزاین سره پیل کولو کې مرسته کولو لپاره پوښتنه وکړئ:

  • کومه ستونزه ده چې موږ یې د حل کولو هڅه کوو؟
  • د کاروونکو لوړ شمیر څومره دی چې زموږ سیسټم سره اړیکه ونیسي؟
  • د معلوماتو لیکلو او لوستلو کومې نمونې به موږ وکاروو؟
  • د متوقع ناکامۍ قضیې کومې دي، موږ به یې څنګه اداره کړو؟
  • د سیسټم دوام او شتون لپاره تمه څه دي؟
  • ایا تاسو باید د کار کولو پرمهال د بهرني تصدیق او مقرراتو پورې اړوند کوم اړتیاوې په پام کې ونیسئ؟
  • موږ کوم ډول حساس معلومات ذخیره کوو؟

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

لومړنۍ کچه تنظیم کړئ

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

زه فکر کوم چې زه توانیدلی وم چې تاسو قانع کړم چې که یو متخصص په ډاډ سره پوه شي چې د ځینې عالي سافټویر سیسټمونو معمارۍ برخه څه ده ، نو دا پوهه به د معمار هنر کې مهارت ترلاسه کولو او پدې برخه کې قوي اساس رامینځته کولو لپاره لازمي وي.

ښه، نو له کوم ځای څخه پیل کول؟ یو دونا مارتینا د GitHub په نوم یو ذخیره شتون لري سیسټم-ډیزاین-پرائمر، له کوم څخه چې تاسو کولی شئ د لوی کچې سیسټمونو ډیزاین کولو څرنګوالي زده کړئ ، او همدارنګه پدې موضوع کې د مرکو لپاره چمتووالی ونیسئ. ذخیره د مثالونو سره یوه برخه لري اصلي معمارۍ، چیرې چې په ځانګړي توګه دا په پام کې نیول کیږي چې دوی څنګه د دوی سیسټم ډیزاین ته نږدې کیږي ځینې ​​مشهور شرکتونهد بیلګې په توګه ټویټر، اوبر، او داسې نور.

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

د معلوماتو ذخیره کولو او ترلاسه کولو په اړه پوهه رامینځته کړئ

عموما، ستاسو پریکړه په دې اړه چې تاسو څنګه د اوږدې مودې لپاره خپل ډاټا ذخیره او بیرته ترلاسه کوئ د سیسټم فعالیت باندې خورا مهم اغیزه لري. له همدې امله، تاسو باید لومړی د خپل سیسټم تمه شوي لیکلو او لوستلو ځانګړتیاو باندې پوه شئ. بیا تاسو اړتیا لرئ د دې شاخصونو ارزونه وکړئ او د ترسره شوي ارزونو پراساس انتخاب وکړئ. په هرصورت، تاسو کولی شئ په مؤثره توګه د دې کار سره مقابله وکړئ یوازې هغه وخت چې تاسو د موجوده ډیټا ذخیره کولو نمونو پوهیږئ. په اصل کې، دا د اړونده پوهه معنی لري د ډیټابیس انتخاب.

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

د سافټویر جوړښت او سیسټم ډیزاین: لوی انځور او سرچینې لارښود

سنیپ شاټ سیمالټ زیلر د Unsplash څخه

یوځل چې تاسو د ډیټا ذخیره کولو مختلف نمونو په اړه کافي پوهه ولرئ ، د معلوماتو دوام او شتون مطالعې ته لاړشئ. لومړی، تاسو باید پوه شئ د CAP نظریه لږترلږه په عمومي شرایطو کې، او بیا دا پوهه د تاسیس شویو نمونو په اړه د نږدې لید په واسطه پالش کړئ ثبات и لاسرسي. په دې توګه، تاسو به د ساحې درک ته وده ورکړئ او پوه شئ چې د معلوماتو لوستل او لیکل په حقیقت کې دوه مختلفې ستونزې دي، هر یو د خپل ځانګړي ننګونې سره. د یو څو دوامدارۍ او موجودیت نمونو سره مسلح ، تاسو کولی شئ د سیسټم فعالیت د پام وړ لوړ کړئ پداسې حال کې چې ستاسو غوښتنلیکونو ته د معلوماتو اسانه جریان ډاډمن کړئ.

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

د اړیکو نمونې

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

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

د سافټویر جوړښت او سیسټم ډیزاین: لوی انځور او سرچینې لارښود

سنیپ شاټ ټوني سټډارډ د Unsplash څخه

کله چې د بهرنۍ نړۍ سره د اړیکو تنظیم کول، دا تل خورا مهم وي خونديتوب، چې د دې حکم هم باید جدي ونیول شي او په فعاله توګه تعقیب شي.

د پیوستون توزیع

زه ډاډه نه یم چې دا موضوع په جلا برخه کې اچول به هرچا ته توجیه ښکاري. په هرصورت، زه به دا مفکوره دلته په تفصیل سره وړاندې کړم، او زه باور لرم چې پدې برخه کې مواد د "اړیکو ویش" اصطلاح لخوا خورا دقیق بیان شوي.

سیسټمونه د ډیری برخو په سمه توګه وصل کولو سره رامینځته کیږي ، او د دوی اړیکې د یو بل سره ډیری وختونه د تاسیس شوي پروتوکولونو پراساس تنظیم کیږي ، د مثال په توګه ، TCP او UDP. په هرصورت، دا پروتوکولونه اکثرا د عصري سیسټمونو ټولو اړتیاو پوره کولو لپاره ناکافي دي، کوم چې ډیری وختونه د لوړ بار لاندې کار کوي او د کاروونکي اړتیاوو پورې هم خورا ډیر تړاو لري. دا ډیری وختونه اړین دي چې په سیسټم کې د دومره لوړ بارونو سره د مقابلې لپاره د ارتباطاتو توزیع کولو لارې ومومئ.

دا ویش د ښه پیژندلو پر بنسټ دی د ډومین نوم سیسټم (DNS). دا ډول سیسټم د ډومین نوم بدلونونو ته اجازه ورکوي لکه وزن لرونکي راؤنډ رابین او د ځنډ پر اساس میتودونه چې د بار توزیع کې مرسته وکړي.

د بار توازن په بنسټیز ډول مهم دی، او په حقیقت کې هر لوی انټرنیټ سیسټم چې موږ نن ورځ ورسره معامله کوو د یو یا ډیرو بار بار بیلنسونو شاته موقعیت لري. د بار توازن کونکي په ډیری موجودو مواردو کې د پیرودونکي غوښتنې توزیع کې مرسته کوي. د بار توازن کونکي په هارډویر او سافټویر دواړو کې راځي، په هرصورت، په عمل کې، ډیری وختونه تاسو باید د سافټویر سره معامله وکړئ، د بیلګې په توګه HAProxy и ELB. د پراکسي برعکس په مفکوره کې هم د بار بیلانسر سره ورته ورته دی، که څه هم د لومړي او دویم تر مینځ یو لړ شتون لري جلا توپیرونه. دا توپیرونه باید په پام کې ونیول شي کله چې ستاسو د اړتیاو پراساس سیسټم ډیزاین کړئ.

تاسو باید په اړه هم پوه شئ د منځپانګې رسولو شبکې (CDN). CDN د پراکسي سرورونو نړیواله توزیع شوې شبکه ده چې د نوډونو څخه معلومات وړاندې کوي چې په جغرافیه کې د ځانګړي کارونکي سره نږدې موقعیت لري. CDNs د کارولو لپاره غوره دي که تاسو په جاواسکریپټ، CSS او HTML کې لیکل شوي جامد فایلونو سره کار کوئ. برسېره پردې، د بادل خدمتونه چې د ترافیک مدیران چمتو کوي نن ورځ عام دي، د بیلګې په توګه، د Azure ترافیک مدیر، تاسو ته نړیوال توزیع درکوي او د متحرک مینځپانګې سره کار کولو پرمهال ځنډ کموي. په هرصورت، دا ډول خدمتونه معمولا په هغو قضیو کې ګټور دي چیرې چې تاسو د بې ریاست ویب خدماتو سره کار کوئ.

راځئ چې د سوداګرۍ منطق په اړه خبرې وکړو. د سوداګرۍ منطق، د کار جریان او اجزاو جوړښت

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

لکه څنګه چې د دې مقالې سرلیک وړاندیز کوي، زه د سافټویر جوړښت او سیسټم ډیزاین په اړه خبرې کوم. په دې اساس، ما پالن نه درلود چې د سافټویر ډیزاین نمونې پوښي چې دا تشریح کوي چې څنګه د سافټویر برخې رامینځته کیږي. په هرصورت، هرڅومره چې زه د دې په اړه فکر کوم ، هومره ماته داسې ښکاري چې د سافټویر ډیزاین نمونو او معمارۍ نمونو ترمینځ کرښه خورا تیاره ده ، او دوه مفکورې نږدې سره تړاو لري. راځئ چې د مثال په توګه واخلو د پیښې ثبت کول (د پیښې سرچینه). یوځل چې تاسو دا معماري نمونه غوره کړئ ، دا به ستاسو د سیسټم نږدې هر اړخ اغیزه وکړي: د ډیټا اوږدمهاله ذخیره کول ، ستاسو په سیسټم کې منل شوي دوامدارۍ کچه ، پدې کې د اجزاو شکل ، او داسې نور. له همدې امله، ما پریکړه وکړه چې ځینې معماري نمونې ذکر کړم چې مستقیم د سوداګرۍ منطق سره تړاو لري. که څه هم دا مقاله باید خپل ځان یو ساده لیست ته محدود کړي، زه تاسو هڅوم چې له دې سره آشنا شئ او د دې نمونو سره تړلي نظرونو په اړه فکر وکړئ. دلته تاسو یاست:

د همکارۍ لارې چارې

دا خورا امکان نلري چې تاسو به خپل ځان په یوه پروژه کې د ګډون کونکي په توګه ومومئ چې یوازې د سیسټم ډیزاین پروسې مسؤلیت لري. برعکس، تاسو به ډیری احتمال د هغه همکارانو سره اړیکه ونیسئ چې ستاسو د دندې دننه او بهر کار کوي. پدې حالت کې، تاسو اړتیا لرئ د همکارانو سره د ټاکل شوي ټیکنالوژۍ حلونو ارزونه وکړئ، د سوداګرۍ اړتیاوې وپیژنئ او پوه شئ چې څنګه د دندو سره موازي کولو لپاره غوره وي.

د سافټویر جوړښت او سیسټم ډیزاین: لوی انځور او سرچینې لارښود

سنیپ شاټ کالیډیکو د Unsplash څخه

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

شاید پدې موضوع کې بل بالغ ټیکنالوژي شتون ولري چې د ډومین چلونکي ډیزاین څخه لږ ګټور ندي. په هرصورت، موږ یو څه د موضوع ساحې پوهیدو ته راستانه شو، نو په ساحه کې پوهه او تجربه د ډومین چلول ډیزاین باید ستاسو لپاره ګټور وي.

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

Add a comment