هره ورځ، هره شیبه زموږ د انجینرۍ مسلک په جریان کې ، موږ د مختلف پیچلتیاو او شرایطو ډیری بیلابیل ستونزو سره مخ کیږو چیرې چې موږ اړتیا لرو پریکړه وکړو یا د معلوماتو نشتوالي له امله یې وځنډوو. هرکله چې موږ نوي خدمات رامینځته کوو، زیربناوې جوړې کوو، یا حتی د پراختیا پروسې رامینځته کوو، موږ د مختلفو ننګونو یوه لویه نړۍ لمس کوو.
دا ننګونه ده، او شاید حتی ناممکن، د ټولو ستونزو لیست کول. تاسو به یوازې د دې مسلو سره مخ شئ که تاسو په یو ځانګړي ځای کې کار کوئ. له بلې خوا، ډیری شتون لري چې موږ ټول باید پوه شو چې څنګه حل کړو، ځکه چې دا د معلوماتي ټیکنالوژۍ سیسټمونو جوړولو لپاره خورا مهم دي. د لوړ احتمال سره، تاسو به په ټولو پروژو کې ورسره مخامخ شئ.
په دې لیکنه کې به خپلې تجربې د ځینو هغو ستونزو سره شریکې کړم چې د سافټویر پروګرامونو د جوړولو پر مهال ورسره مخ شوې.
که موږ ويکيپېډيا ته وګورو، موږ به لاندې تعريف پيدا کړو
د اړخ پر بنسټ سافټویر پراختیا کې، د کراس-کټینګ اندیښنې د یو پروګرام اړخونه دي چې په ډیری ماډلونو اغیزه کوي، پرته له دې چې په هیڅ یو کې د پټیدو احتمال شتون ولري. دا اندیښنې ډیری وختونه د ډیزاین او پلي کولو په دواړو برخو کې د سیسټم له پاتې برخې څخه په پاکه توګه نه شي مینځل کیدی، او کیدای شي د ویشلو (کوډ نقل)، ټنګنګ (د سیسټمونو ترمنځ د پام وړ انحصار)، یا دواړه پایله ولري.
دا په پراخه کچه تشریح کوي چې دا څه دي، مګر زه غواړم دا یو څه پراخ او ساده کړم:
د کراس پرې کولو اندیښنه د سیسټم/سازمان یوه مفکوره یا برخه ده چې په نورو ډیری برخو اغیزه کوي (یا "پرې پرې کول").
د دې ډول اندیښنو غوره مثالونه د سیسټم جوړښت، ننوتل، امنیت، د لیږد مدیریت، ټیلی میټری، ډیټابیس ډیزاین او ډیری نور دي. موږ به وروسته پدې مقاله کې د دوی ډیری په اړه توضیح کړو.
د کوډ په کچه، د کراس-کټینګ اندیښنې اکثرا د تخنیکونو په کارولو سره پلي کیږي لکه د اړخ اورینټ پروګرام (AOP) ، چیرې چې دا اندیښنې په جلا برخو کې ماډل شوي چې د غوښتنلیک په اوږدو کې پلي کیدی شي. دا د سوداګرۍ منطق د دې اندیښنو څخه جلا ساتي، کوډ د لوستلو وړ او ساتلو وړ کوي.
ډیری ممکنه لارې شتون لري چې څنګه د اړخونو طبقه بندي کولو له لارې د مختلف ملکیتونو لکه دائره ، اندازې ، فعالیت ، اهمیت ، هدف او نورو سره طبقه بندي کړئ ، مګر پدې مقاله کې زه د ساده ساحې طبقه بندي کارولو لپاره ځم. له دې څخه، زما مطلب دا دی چې چیرې دا ځانګړی اړخ لارښوونه کیږي که دا ټول سازمان وي، یو ځانګړی سیسټم، یا د دې سیسټم یو ځانګړی عنصر.
نو، زه به اړخونه په میکرو او مایکرو ویشم.
د میکرو اړخ څخه زما مطلب دا دی چې په عمده ډول هغه نظرونه چې موږ یې د ټول سیسټم لپاره تعقیب کوو لکه د ټاکل شوي سیسټم جوړښت او د هغې ډیزاین (مونولیتیک، مایکرو خدمتونه، د خدماتو پر بنسټ جوړښت)، د ټیکنالوژۍ سټیک، سازمان جوړښت، او داسې نور. د میکرو اړخونه په عمده توګه د ستراتیژیکو او لوړې کچې پورې تړاو لري. پریکړې
په ورته وخت کې، مایکرو اړخ د کوډ کچې او پراختیا ته خورا نږدې دی. د مثال په توګه، کوم چوکاټ د ډیټابیس سره د تعامل لپاره کارول کیږي، د فولډرونو او ټولګیو پروژې جوړښت، یا حتی د ځانګړو شیانو ډیزاین نمونې.
پداسې حال کې چې دا طبقه بندي غوره نه ده، دا د ممکنه ستونزو د پوهیدو او د هغو حلونو اهمیت او اغیزو په جوړښت کې مرسته کوي چې موږ یې پلي کوو.
پدې مقاله کې، زما لومړنی تمرکز به په میکرو اړخونو وي.
کله چې ما یوازې د سافټویر جوړښت په اړه زده کړه پیل کړه، ما د کانوی د قانون او په سازماني جوړښت باندې د هغې اغیزې په اړه ډیری په زړه پورې مقالې ولوستلې. په ځانګړې توګه دا یو . نو، دا قانون وايي
هر هغه سازمان چې یو سیسټم ډیزاین کوي (په پراخه کچه تعریف شوی) به داسې ډیزاین تولید کړي چې جوړښت یې د سازمان د ارتباطي جوړښت یوه کاپي وي.
زه تل په دې باور یم چې دا مفهوم په حقیقت کې خورا نړیوال دی او د طلایی اصول استازیتوب کوي.
بیا ما د ماډلینګ سیسټمونو لپاره د ایریک ایونز ډومین چلونکي ډیزاین (DDD) چلند زده کول پیل کړل. ایریک ایونز د محدودو شرایطو پیژندنې په اهمیت ټینګار کوي. پدې مفهوم کې د پیچلي ډومین ماډل ویشل شامل دي په کوچنیو، ډیر مدیریت وړ برخو کې، هر یو د خپلې محدودې پوهې سره. دا طریقه د ټیم په اغیزمنه اړیکو کې مرسته کوي، ځکه چې دا د ټول ډومین پراخې پوهې ته اړتیا کموي او د شرایطو بدلون کموي، پدې توګه د خبرو اترو اغیزمن کول. د متن بدلول د هرکله ترټولو خراب او خورا سرچینې مصرفونکی شی دی. حتی کمپیوټرونه ورسره مبارزه کوي. که څه هم دا امکان نلري چې د شرایطو بدلولو بشپړ نشتوالی ترلاسه کړي، زه فکر کوم چې دا هغه څه دي چې موږ یې باید هڅه وکړو.
د کانوی قانون ته راستنیدل ، ما د دې سره ډیری مسلې وموندلې.
لومړۍ مسله چې زه د کانوی قانون سره مخ شوی یم ، کوم چې وړاندیز کوي چې د سیسټم ډیزاین تنظیمي جوړښت منعکس کوي ، د پیچلي او هراړخیز محدود شرایطو رامینځته کولو احتمال دی. دا پیچلتیا هغه وخت رامینځته کیږي کله چې سازماني جوړښت د ډومین سرحدونو سره سمون نه لري، د پابند شرایطو لامل کیږي چې په پراخه کچه یو له بل سره تړلي او د معلوماتو سره ډک شوي. دا د پرمختیایی ټیم لپاره د بار بار شرایطو بدلولو لامل کیږي.
بله مسله دا ده چې تنظیمي اصطلاحات د کوډ کچې ته لیکي. کله چې سازماني جوړښتونه بدل شي، دا د کوډبیس بدلونونو ته اړتیا لري، ارزښتناکه سرچینې مصرفوي.
په دې توګه، د Inverse Conway Maneuver تعقیب د سیسټم او سازمان په جوړولو کې مرسته کوي چې د مطلوب سافټویر جوړښت هڅوي. په هرصورت، دا د یادونې وړ ده چې ووایو چې دا طریقه به د پخوا څخه جوړ شوي جوړښت او جوړښتونو کې ډیر ښه کار ونکړي ځکه چې پدې مرحله کې بدلونونه اوږد دي، مګر دا په استثنایی ډول په پیل کې ترسره کوي ځکه چې دوی د هر ډول بدلونونو معرفي کولو لپاره ګړندي دي.
دا نمونه یا "د نمونې ضد" پرته له کوم جوړښت څخه سیسټم رامینځته کوي. دلته هیڅ قواعد شتون نلري، نه سرحدونه، او هیڅ ستراتیژي شتون نلري چې څنګه د ناباوره وده کونکي پیچلتیا کنټرول کړي. پیچلتیا د سافټویر سیسټمونو جوړولو په سفر کې ترټولو سخت دښمن دی.
د دې لپاره چې د دې ډول سیسټم جوړولو څخه مخنیوی وشي، موږ اړتیا لرو چې ځانګړي مقررات او محدودیتونه تعقیب کړو.
د سافټویر آرکیټیکچر لپاره بې شمیره تعریفونه شتون لري. زه ډیری یې خوښوم ځکه چې دوی د دې مختلف اړخونه پوښي. په هرصورت، د معمارۍ په اړه د استدلال کولو وړتیا لپاره، موږ په طبیعي توګه اړتیا لرو چې ځینې یې زموږ په ذهنونو کې جوړ کړو. او دا د یادونې وړ ده چې دا تعریف ممکن وده وکړي. نو، لږترلږه د اوس لپاره، زه د ځان لپاره لاندې توضیحات لرم.
د سافټویر جوړښت د پریکړو او انتخابونو په اړه دی چې تاسو هره ورځ کوئ چې جوړ شوي سیسټم اغیزه کوي.
د پریکړو کولو لپاره تاسو اړتیا لرئ د "باغ" اصولو او د رامینځته کیدونکو ستونزو د حل لپاره نمونې ولرئ، دا هم اړینه ده چې ووایاست چې د اړتیاو پوهیدل د هغه څه رامینځته کولو لپاره کلیدي ده چې سوداګرۍ ته اړتیا لري. په هرصورت، ځینې وختونه اړتیاوې شفافې نه وي یا حتی تعریف شوي ندي، پدې حالت کې، دا غوره ده چې نور وضاحت ترلاسه کولو لپاره انتظار وکړئ یا په خپل تجربه تکیه وکړئ او په خپل وجدان باور وکړئ. مګر په هرصورت، تاسو نشئ کولی په سمه توګه پریکړې وکړئ که تاسو د تکیه کولو لپاره اصول او نمونې نلرئ. دا هغه ځای دی چې زه د سافټویر آرکیټیکچر سټایل تعریف ته راځم.
د سافټویر آرکیټیکچر سټایل د اصولو او نمونو مجموعه ده چې د سافټویر جوړولو څرنګوالی ډیزاین کوي.
دلته ډیری بیلابیل معماري سټایلونه شتون لري چې د پلان شوي معمارۍ مختلف اړخونو باندې تمرکز کوي ، او په یوځل کې د دوی ډیری پلي کول یو عادي حالت دی.
د مثال په توګه، لکه:
Monolithic معمارۍ
د ډومین لخوا پرمخ وړل شوي ډیزاین
د اجزاو پر بنسټ
کوچني خدمتونه
پایپ او فلټرونه
د پیښې لخوا پرمخ وړل کیږي
مایکروکرنل
د خدمت پر بنسټ
او داسې نور…
البته، دوی خپلې ګټې او زیانونه لري، مګر ترټولو مهم شی چې ما زده کړل هغه دا دی چې جوړښت په تدریجي ډول وده کوي پداسې حال کې چې د حقیقي ستونزو پورې اړه لري. د واحد معمارۍ سره پیل کول د عملیاتي پیچلتیاو کمولو لپاره غوره انتخاب دی، ډیر احتمال لري چې دا جوړښت به ستاسو اړتیاوې پوره کړي حتی د محصول تولید بازار فټ (PMI) مرحلې ته رسیدو وروسته. په پیمانه، تاسو ممکن د پیښې پرمخ وړونکي چلند او مایکرو خدماتو ته د خپلواک ځای په ځای کولو ، متفاوت ټیک سټیک چاپیریال ، او لږ جوړ شوي جوړښت (او په ورته وخت کې د پیښې لخوا پرمخ وړل شوي او پب - فرعي چلندونو طبیعت له امله لږ شفاف) ته د رسیدو په اړه فکر وکړئ که چیرې دا منل شوي دي). سادگي او موثریت نږدې دي او په یو بل باندې لوی تاثیر لري. معمولا، پیچلي جوړښتونه د نوي ځانګړتیاوو د پراختیا سرعت اغیزه کوي، د موجوده موجوداتو ملاتړ او ساتنه، او د سیسټم طبیعي تکامل ننګوي.
په هرصورت، پیچلي سیسټمونه ډیری وختونه پیچلي او جامع جوړښت ته اړتیا لري، کوم چې ناگزیر دی.
په عادلانه توګه، دا یوه خورا پراخه موضوع ده، او د طبیعي تکامل لپاره د سیسټمونو جوړښت او جوړولو په اړه ډیری عالي نظرونه شتون لري. زما د تجربې پر بنسټ، ما لاندې طریقې کار کړی دی:
دا هم اړینه ده چې د شمیرو او میټریکونو پوه شئ لکه DAU (ورځني فعال کارونکي) ، MAU (میاشتنۍ فعال کارونکي) ، RPC (په ثانیه کې غوښتنه) ، او TPC (په هره ثانیه کې لیږد) ځکه چې دا کولی شي تاسو سره د انتخاب کولو کې مرسته وکړي ځکه چې جوړښت 100 فعال کاروونکي او 100 ملیون فعال کاروونکي توپیر لري.
د وروستي یادښت په توګه، زه به ووایم چې جوړښت د محصول په بریالیتوب کې د پام وړ اغیزه لري. په اندازه کولو کې د محصولاتو لپاره ضعیف ډیزاین شوي جوړښت ته اړتیا ده ، کوم چې احتمال د ناکامۍ لامل کیږي ځکه چې پیرودونکي به انتظار ونه کړي پداسې حال کې چې تاسو سیسټم اندازه کوئ ، دوی به سیالي غوره کړي ، نو موږ باید د احتمالي پیمانه کولو څخه مخکې واوسو. که څه هم زه دا منم چې ځینې وختونه دا یو کمزوری چلند نه وي، نظر دا دی چې د توزیع وړ مګر دمخه اندازه شوی سیسټم نه وي. له بلې خوا، د یو خورا پیچلي او دمخه پیمانه شوي سیسټم درلودل چې پیرودونکي نلري یا د دوی ډیری ترلاسه کولو پلانونه به تاسو ته ستاسو په سوداګرۍ کې د هیڅ شی لپاره پیسې مصرف نه کړي.
د ټیکنالوژۍ سټیک غوره کول هم د لوی کچې پریکړه ده ځکه چې دا په استخدام، د سیسټم طبیعي تکامل لید، توزیع، او د سیسټم فعالیت اغیزه کوي.
دا د ټیکنالوژۍ سټیک غوره کولو لپاره د لومړني ملاحظاتو لیست دی:
د ډیری ټیکنالوژۍ سټیک درلودل څنګه د سوداګرۍ وده اغیزه کولی شي؟
له یوې لید څخه ، د یو بل سټیک معرفي کول ستاسو استخدام اندازه کولی شي ، مګر له بلې خوا ، دا د ساتنې اضافي لګښتونه راوړي ځکه چې تاسو اړتیا لرئ د دواړو سټیکونو ملاتړ وکړئ. نو، لکه څنګه چې ما مخکې وویل، زما په نظر کې، یوازې اضافي اړتیا باید د نورو ټیکنالوژۍ سټیکونو شاملولو لپاره دلیل وي.
مګر د یوې ځانګړې ستونزې لپاره د غوره وسیلې غوره کولو اصول څه دي؟
ځینې وختونه تاسو بل انتخاب نلرئ پرته له دې چې د یوې ځانګړې ستونزې حل کولو لپاره نوي وسیلې راوړو چې پورته ذکر شوي ورته نظرونو پراساس ، پدې حالت کې ، دا معنی لري چې غوره حل غوره کړئ.
د سیسټمونو رامینځته کول پرته له دې چې یو ځانګړي ټیکنالوژۍ ته لوړ یوځای کول یوه ننګونه وي. بیا هم، دا ګټوره ده چې د داسې حالت لپاره هڅه وکړئ چیرې چې سیسټم په کلکه د ټیکنالوژۍ سره یوځای شوی نه وي، او دا به مړ نشي که سبا، یو ځانګړی چوکاټ یا وسیله زیانمن شي یا حتی ضایع شي.
بل مهم پام د خلاصې سرچینې او ملکیت سافټویر انحصار پورې اړه لري. د ملکیت سافټویر تاسو ته لږ انعطاف او د دودیز کیدو امکان درکوي. بیا هم، ترټولو خطرناک فاکتور د پلورونکي لاک ان دی، چیرې چې تاسو د پلورونکي محصولاتو، نرخونو، شرایطو او سړک نقشه پورې تړلي یاست. دا خطرناک کیدی شي که چیرې پلورونکی سمت بدل کړي، نرخونه لوړ کړي، یا محصول بند کړي. د خلاصې سرچینې سافټویر دا خطر کموي، ځکه چې یو واحد اداره دا کنټرول نه کوي. په ټولو کچو کې د ناکامۍ یو واحد ټکی له مینځه وړل د ودې لپاره د باور وړ سیسټمونو رامینځته کولو کلیدي ده.
د ناکامۍ یو واحد ټکی (SPOF) د سیسټم هرې برخې ته اشاره کوي چې، که دا ناکام شي، د ټول سیسټم د فعالیت مخه نیسي. په ټولو کچو کې د SPOFs له منځه وړل د هر هغه سیسټم لپاره خورا مهم دي چې لوړ شتون ته اړتیا لري. هرڅه، پشمول د پوهې، پرسونل، سیسټم اجزا، کلاوډ چمتو کونکي، او انټرنیټ کیبلونه، ناکام کیدی شي.
ډیری بنسټیز تخنیکونه شتون لري چې موږ یې د ناکامۍ د واحد ټکي له منځه وړلو لپاره کارولی شو:
پدې مقاله کې ، موږ د میکرو ډیری کلیدي اړخونه پوښلي او موږ څنګه کولی شو د دوی پیچلتیا سره معامله وکړو.
د لوستلو لپاره مننه! بل ځل به ګورو!