په سافټویر کې انعطاف د یو غوښتنلیک وړتیا ته اشاره کوي چې په اسانۍ او باوري توګه فعالیت ته دوام ورکړي ، حتی د غیر متوقع مسلو یا ناکامیو سره مخ. په Fintech پروژو کې انعطاف په ځانګړي ډول د ډیری دلایلو له امله خورا مهم دی. لومړی، شرکتونه مکلف دي چې تنظیمي اړتیاوې پوره کړي او مالي تنظیم کونکي په سیسټم کې د ثبات ساتلو لپاره په عملیاتي انعطاف ټینګار کوي. سربیره پردې ، د ډیجیټل وسیلو خپریدل او د دریمې ډلې خدماتو چمتو کونکو باندې تکیه د Fintech سوداګرۍ لوړ امنیتي ګواښونو ته رسوي. انعطاف هم د مختلفو فکتورونو لکه سایبر ګواښونو، وبا، یا جیو پولیټیکل پیښو، د اصلي سوداګریزو عملیاتو او مهمې شتمنیو ساتنه د خنډونو د خطرونو کمولو کې مرسته کوي.
د انعطاف د نمونو په واسطه، موږ د غوره تمرینونو او ستراتیژیو سیټ پوهیږو چې ډیزاین شوي ترڅو ډاډ ترلاسه کړي چې سافټویر کولی شي د خنډونو سره مقاومت وکړي او خپل عملیات وساتي. دا نمونې د خوندیتوب جالونو په څیر عمل کوي، د غلطیو اداره کولو لپاره میکانیزمونه چمتو کوي، بار اداره کوي، او د ناکامیو څخه بیرته راګرځي، په دې توګه ډاډ ترلاسه کوي چې غوښتنلیکونه په ناوړه شرایطو کې پیاوړي او د باور وړ پاتې کیږي.
د مقاومت ترټولو عام ستراتیژیو کې بلک هیډ، کیچ، فال بیک، بیا هڅه، او سرکټ بریکر شامل دي. په دې مقاله کې، زه به د دوی په اړه په تفصیل سره بحث وکړم، د ستونزو مثالونو سره چې دوی کولی شي د حل کولو کې مرسته وکړي.
راځئ چې پورته ترتیب ته یو نظر وکړو. موږ یو ډیر عادي غوښتنلیک لرو چې زموږ شاته د څو شالیدونو سره یو څو معلومات ترلاسه کړو. د دې شالیدونو سره تړلي ډیری HTTP پیرودونکي شتون لري. دا معلومه شوه چې دوی ټول د ورته ارتباط پول شریکوي! او همدارنګه نورې سرچینې لکه CPU او RAM.
څه به پیښ شي، که چیرې یو له شالید څخه یو ډول ستونزې تجربه کړي چې د لوړې غوښتنې ځنډ لامل کیږي؟ د لوړ غبرګون وخت له امله، د پیوستون ټول پول به په بشپړ ډول د هغو غوښتنو لخوا اشغال شي چې د backend1 څخه ځوابونو ته انتظار کوي. د پایلې په توګه، د صحي backend2 او backend3 لپاره غوښتل شوي غوښتنې به د دې توان ونلري چې پرمخ لاړ شي ځکه چې حوض ختم شوی. دا پدې مانا ده چې زموږ په یو شاتړ کې ناکامي کولی شي په ټول غوښتنلیک کې د ناکامۍ لامل شي. په عین حال کې، موږ یوازې هغه فعالیت غواړو چې د ناکامۍ بیک انډ سره تړاو لري ترڅو د تخریب تجربه وکړي، پداسې حال کې چې پاتې غوښتنلیک په نورمال ډول کار کولو ته دوام ورکوي.
د بلک هیډ نمونه څه ده؟
اصطلاح، د بلک هیډ نمونه، د کښتۍ جوړونې څخه اخیستل کیږي، پدې کې د کښتۍ دننه د څو جلا جلا برخو جوړول شامل دي. که په یوه کڅوړه کې لیک رامنځته شي، دا د اوبو څخه ډکیږي، مګر نورې برخې بې اغیزې پاتې کیږي. دا انزوا د یوې سرغړونې له امله د ټول کشتۍ د ډوبیدو مخه نیسي.
د بلک هیډ نمونه د غوښتنلیک دننه د مختلف ډول سرچینو جلا کولو لپاره کارول کیدی شي ، په یوه برخه کې د ناکامۍ مخه نیولو څخه په ټول سیسټم اغیزه کوي. دلته موږ څنګه کولی شو دا زموږ په ستونزه کې پلي کړو:
راځئ فرض کړو چې زموږ د بیکینډ سیسټمونه په انفرادي ډول د غلطیو سره مخ کیدو احتمال لږ دی. په هرصورت، کله چې یو عملیات په موازي ډول د دې ټولو شالیدونو پوښتنه کوي، هر یو کولی شي په خپلواکه توګه یوه تېروتنه بیرته راولي. ځکه چې دا تېروتنې په خپلواکه توګه واقع کیږي، زموږ په غوښتنلیک کې د تېروتنې احتمال د هر یو پس منظر د غلطۍ احتمال څخه لوړ دی. د مجموعي غلطۍ احتمال د P_total=1−(1−p)^n فورمول په کارولو سره محاسبه کیدی شي، چیرته چې n د شالید سیسټمونو شمیر دی.
د بېلګې په توګه، که موږ لس شاتړونه ولرو، هر یو د p=0.001 د غلطۍ احتمال سره (د 99.9٪ SLA سره مطابقت لري)، د پایلې احتمالي تېروتنه دا ده:
P_total=1−(1−0.001)^10=0.009955
دا پدې مانا ده چې زموږ ګډ SLA نږدې 99٪ ته راښکته کیږي، دا په ګوته کوي چې څنګه په موازي توګه د ډیری بیکینډونو پوښتنې کولو په وخت کې عمومي اعتبار کمیږي. د دې مسلې د کمولو لپاره، موږ کولی شو په حافظه کې کیچ پلي کړو.
په حافظه کې کیچ د لوړ سرعت ډیټا بفر په توګه کار کوي ، په مکرر ډول لاسرسي شوي ډیټا ذخیره کوي او هر وخت د احتمالي ورو سرچینو څخه د راوړلو اړتیا له مینځه وړي. څرنګه چې په حافظه کې زیرمه شوي کیچونه په شبکه کې د معلوماتو ترلاسه کولو په پرتله د غلطۍ 0٪ چانس لري، دوی د پام وړ زموږ د غوښتنلیک اعتبار زیاتوي. سربیره پردې ، کیچ کول د شبکې ترافیک کموي ، د غلطیو چانس نور هم کموي. په پایله کې، د حافظې د زیرمې په کارولو سره، موږ کولی شو زموږ د بیکینډ سیسټمونو په پرتله زموږ په غوښتنلیک کې حتی ټیټه تېروتنه ترلاسه کړو. سربیره پردې، په حافظه کې کیچونه د شبکې پراساس راوړلو په پرتله د ګړندي ډیټا بیرته ترلاسه کولو وړاندیز کوي ، پدې توګه د غوښتنلیک ځنډ کموي — د پام وړ ګټه.
د شخصي معلوماتو لپاره، لکه د کاروونکي پروفایل یا سپارښتنې، د حافظې کې کیچ کارول هم خورا اغیزمن کیدی شي. مګر موږ اړتیا لرو ډاډ ترلاسه کړو چې د کارونکي ټولې غوښتنې په دوامداره توګه ورته غوښتنلیک مثال ته ځي ترڅو د دوی لپاره زیرمه شوي ډیټا وکاروي ، کوم چې چپچکي غونډو ته اړتیا لري. د چپچینې غونډو پلي کول ممکن ننګونکي وي، مګر د دې سناریو لپاره، موږ پیچلي میکانیزمونو ته اړتیا نلرو. د ټرافیک لږ توازن د منلو وړ دی، نو د ثابت بار بیلانس الګوریتم لکه دوامداره هشنګ به کافي وي.
نور څه دي، د نوډ د ناکامۍ په صورت کې، دوامداره هش کول ډاډ ورکوي چې یوازې هغه کاروونکي چې د ناکام شوي نوډ سره تړاو لري د بیا توازن سره مخ کیږي، سیسټم ته خنډ کموي. دا طریقه د شخصي کیچونو مدیریت ساده کوي او زموږ د غوښتنلیک عمومي ثبات او فعالیت ته وده ورکوي.
که هغه معلومات چې موږ یې د زیرمه کولو اراده لرو خورا مهم وي او په هره غوښتنه کې کارول کیږي چې زموږ سیسټم اداره کوي ، لکه د لاسرسي پالیسۍ ، د ګډون پلانونه ، یا زموږ په ډومین کې نور حیاتي ادارې — د دې معلوماتو سرچینه کولی شي زموږ په سیسټم کې د ناکامۍ مهم ټکی رامینځته کړي. د دې ننګونې د حل کولو لپاره، یوه طریقه دا ده چې دا ډاټا په مستقیم ډول زموږ د غوښتنلیک په حافظه کې نقل کړي.
پدې سناریو کې ، که چیرې په سرچینه کې د ډیټا حجم د مدیریت وړ وي ، موږ کولی شو پروسه زموږ د غوښتنلیک په پیل کې د دې ډیټا سنیپ شاټ ډاونلوډ کولو سره پیل کړو. وروسته، موږ کولی شو تازه پیښې ترلاسه کړو ترڅو ډاډ ترلاسه کړو چې زیرمه شوي ډاټا د سرچینې سره همغږي پاتې دي. د دې میتود په غوره کولو سره، موږ دې مهم معلوماتو ته د لاسرسي اعتبار ته وده ورکوو، ځکه چې هره لاسته راوړنه په مستقیم ډول د 0٪ غلطی احتمال سره د حافظې څخه واقع کیږي. سربیره پردې ، د حافظې څخه د معلوماتو ترلاسه کول خورا ګړندي دي ، پدې توګه زموږ د غوښتنلیک فعالیت ښه کوي. دا ستراتیژي په مؤثره توګه د بهرنۍ ډیټا سرچینې باندې تکیه کولو سره تړلي خطر کموي ، زموږ د غوښتنلیک عملیاتو لپاره مهم معلوماتو ته دوامداره او د باور وړ لاسرسي تضمینوي.
په هرصورت، د غوښتنلیک په پیل کې د معلوماتو ډاونلوډ کولو اړتیا، په دې توګه د پیل پروسې ځنډول، د '12-فکتور غوښتنلیک' یو له اصولو څخه سرغړونه کوي چې د ګړندي غوښتنلیک پیل کولو ملاتړ کوي. مګر، موږ نه غواړو د کیشینګ کارولو ګټې له لاسه ورکړو. د دې ستونزې د حل لپاره، اجازه راکړئ چې احتمالي حلونه وپلټئ.
ګړندی پیل خورا مهم دی ، په ځانګړي توګه د کبرنیټس په څیر پلیټ فارمونو لپاره ، کوم چې مختلف فزیکي نوډونو ته د ګړندي غوښتنلیک مهاجرت تکیه کوي. په خوشبختۍ سره، Kubernetes کولی شي د سټارټ اپ پروبونو په څیر د ځانګړتیاوو په کارولو سره ورو پیل شوي غوښتنلیکونه اداره کړي.
بله ننګونه چې موږ ورسره مخ کیدی شي د تشکیلاتو تازه کول دي پداسې حال کې چې غوښتنلیک روان وي. ډیری وختونه ، د کیچ وختونه تنظیم کول یا د وخت پای ته رسیدو غوښتنه کول د تولید مسلو حل کولو لپاره اړین دي. حتی که موږ کولی شو ژر تر ژره زموږ غوښتنلیک ته تازه شوي تشکیلاتي فایلونه ځای په ځای کړو ، د دې بدلونونو پلي کول معمولا بیا پیل ته اړتیا لري. د هر غوښتنلیک د غزیدلي پیل وخت سره، یو رولینګ بیا پیل کولی شي زموږ کاروونکو ته د فکسونو پلي کول د پام وړ ځنډوي.
د دې سره د مبارزې لپاره، یو حل دا دی چې ترتیبونه په یو متغیر متغیر کې ذخیره کړئ او د شالید تار ولرئ چې په وخت سره یې تازه کړئ. په هرصورت، ځینې پیرامیټونه، لکه د HTTP غوښتنې وخت پای ته رسیدو، ممکن د HTTP یا ډیټابیس مراجعینو بیا پیل کولو ته اړتیا ولري کله چې ورته ترتیب بدل شي، احتمالي ننګونه رامنځته کوي. بیا هم، ځینې پیرودونکي، لکه د جاوا لپاره د Cassandra ډرایور، د دې پروسې ساده کولو، د ترتیبونو اتوماتیک بیا بارولو ملاتړ کوي.
د بیا پورته کولو وړ تشکیلاتو پلي کول کولی شي د اوږد غوښتنلیک پیل کولو وختونو منفي اغیزه کمه کړي او اضافي ګټې وړاندیز کړي ، لکه د فیچر بیرغ پلي کولو اسانتیا. دا طریقه موږ ته د دې توان راکوي چې د غوښتنلیک اعتبار او ځواب ویونکي وساتو پداسې حال کې چې په اغیزمنه توګه د ترتیب تازه کولو اداره کول.
اوس راځئ چې یوې بلې ستونزې ته وګورو: زموږ په سیسټم کې ، کله چې د کارونکي غوښتنه ترلاسه کیږي او د بیک انډ یا ډیټابیس ته د پوښتنې لیږلو سره پروسس کیږي ، کله ناکله د تمه شوي ډیټا پرځای د غلطۍ ځواب ترلاسه کیږي. وروسته، زموږ سیسټم کارونکي ته د 'غلطۍ' سره ځواب ورکوي.
په هرصورت، په ډیری سناریوګانو کې، دا به غوره وي چې د یو پیغام سره یو څه زاړه ډیټا ښکاره کړئ چې دا په ګوته کوي چې د ډیټا ریفریش ځنډ شتون لري، د دې پرځای چې کاروونکي د لوی سور غلط پیغام سره پریږدي.
د دې مسلې د حل کولو او زموږ د سیسټم چلند ته وده ورکولو لپاره، موږ کولی شو د فال بیک نمونه پلي کړو. د دې بڼې تر شا مفهوم د ثانوي معلوماتو سرچینې درلودل شامل دي، کوم چې ممکن د لومړني سرچینې په پرتله د ټیټ کیفیت یا تازه والی ډاټا ولري. که چیرې د معلوماتو لومړنۍ سرچینه شتون ونلري یا غلطۍ بیرته راوباسي، سیسټم کولی شي د دې ثانوي سرچینې څخه د معلوماتو بیرته ترلاسه کولو لپاره بیرته راشي، دا ډاډ ترلاسه کوي چې د غلط پیغام ښودلو پر ځای د معلوماتو ځینې بڼه کارونکي ته وړاندې کیږي.
که تاسو پورته عکس ته ګورئ ، نو تاسو به د هغه مسلې ترمینځ ورته والی ومومئ چې موږ اوس ورسره مخ یو او هغه یو چې موږ د کیچ مثال سره مخ شو.
د دې د حل کولو لپاره، موږ کولی شو د بیاکتنې په نوم پیژندل شوي نمونې پلي کولو ته پام وکړو. په کیچونو تکیه کولو پرځای ، سیسټم ډیزاین کیدی شي ترڅو د غلطۍ په صورت کې غوښتنه په اوتومات ډول بیرته واستوي. دا بیا هڅه کول یو ساده بدیل وړاندې کوي او کولی شي په مؤثره توګه زموږ په غوښتنلیک کې د غلطیو احتمال کم کړي. د کیچ کولو برخلاف ، کوم چې ډیری وختونه د ډیټا بدلونونو اداره کولو لپاره پیچلي کیچ باطل میکانیزمونو ته اړتیا لري ، د ناکامو غوښتنو بیا هڅه کول د پلي کولو لپاره نسبتا ساده دي. لکه څنګه چې د کیچ باطلول په پراخه کچه د سافټویر انجینرۍ کې یو له خورا ننګونو څخه شمیرل کیږي ، د بیاکتنې ستراتیژۍ غوره کول کولی شي د خطا اداره کول اسانه کړي او د سیسټم انعطاف ښه کړي.
په هرصورت، د احتمالي پایلو په پام کې نیولو پرته د بیاکتنې ستراتیژۍ غوره کول کولی شي نور پیچلتیاوې رامینځته کړي.
اجازه راکړئ تصور وکړو چې زموږ یو شاته د ناکامۍ تجربه کوي. په داسې یوه سناریو کې، د ناکامۍ شالید ته د بیاکتنې پیل کول د ټرافیک په حجم کې د پام وړ زیاتوالی المل کیدی شي. په ټرافیک کې دا ناڅاپه زیاتوالی ممکن د شاتنۍ برخې له پامه غورځوي، د ناکامۍ زیاتوالی او په احتمالي توګه په ټول سیسټم کې د کیسکید اغیزې لامل کیږي.
د دې ننګونې سره د مقابلې لپاره ، دا مهمه ده چې د سرکټ بریکر نمونې سره د بیا هڅه کولو نمونه بشپړ کړئ. سرکټ بریکر د محافظت میکانیزم په توګه کار کوي چې د لاندې خدماتو غلطۍ کچه څاري. کله چې د خطا کچه له مخکې ټاکل شوي حد څخه تیریږي، د سرکټ بریکر د یوې ټاکلې مودې لپاره اغیزمن شوي خدمت ته غوښتنې مداخله کوي. د دې دورې په جریان کې، سیسټم د اضافي غوښتنو لیږلو څخه ډډه کوي ترڅو د ناکام خدمت وخت بیرته ترلاسه کولو ته اجازه ورکړي. د ټاکل شوي وقفې وروسته، سرکټ بریکر په احتیاط سره د محدود شمیر غوښتنو ته د تیریدو اجازه ورکوي، دا تصدیق کوي چې ایا خدمت ثبات لري. که خدمت بیرته راستانه شي، نورمال ترافیک په تدریجي ډول بیرته راستانه کیږي؛ که نه نو، سرکیټ خلاص پاتې کیږي، د غوښتنو بندولو ته دوام ورکوي تر هغه چې خدمت نورمال عملیات بیا پیل کړي. د بیا هڅه کولو منطق سره د سرکټ بریکر نمونې ادغام کولو سره ، موږ کولی شو په مؤثره توګه د خطا وضعیت اداره کړو او د بیک اینډ ناکامیو پرمهال د سیسټم ډیر بار مخه ونیسو.
په پایله کې، د دې انعطاف نمونو په پلي کولو سره، موږ کولی شو خپل غوښتنلیکونه د بیړني حالتونو په وړاندې پیاوړي کړو، لوړ شتون وساتو، او کاروونکو ته بې سیمه تجربه وړاندې کړو. برسیره پردې، زه غواړم ټینګار وکړم چې ټیلی میټری لاهم یوه بله وسیله ده چې باید د پروژې انعطاف چمتو کولو په وخت کې له پامه ونه غورځول شي. ښه لاګونه او میټریکونه کولی شي د پام وړ د خدماتو کیفیت لوړ کړي او د دوی په فعالیت کې ارزښتناکه بصیرت چمتو کړي، د دوی د لا ښه کولو لپاره باخبره پریکړې کولو کې مرسته کوي.