సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ అండ్ సిస్టమ్స్ డిజైన్: ది బిగ్ పిక్చర్ అండ్ రిసోర్స్ గైడ్

హలో సహోద్యోగులు.

ఆధునిక సాఫ్ట్‌వేర్ సిస్టమ్‌లను రూపొందించే సూత్రాలను సాపేక్షంగా చిన్న వాల్యూమ్‌లో వివరించడానికి చేపట్టిన టగ్‌బెర్క్ ఉగుర్లు రాసిన వ్యాసం యొక్క అనువాదాన్ని ఈ రోజు మేము మీ పరిశీలన కోసం అందిస్తున్నాము. రచయిత తన గురించి సారాంశంలో చెప్పేది ఇక్కడ ఉంది:

సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ అండ్ సిస్టమ్స్ డిజైన్: ది బిగ్ పిక్చర్ అండ్ రిసోర్స్ గైడ్
2019 నాటికి ఆర్కిటెక్చరల్ నమూనాలు + డిజైన్ నమూనాలు వంటి భారీ అంశాన్ని హాబ్రో కథనంలో కవర్ చేయడం పూర్తిగా అసాధ్యం కాబట్టి, మిస్టర్ ఉరుగ్లు యొక్క వచనాన్ని మాత్రమే కాకుండా, అతను దయతో అందులో చేర్చిన అనేక లింక్‌లను కూడా మేము సిఫార్సు చేస్తున్నాము. మీకు నచ్చితే, పంపిణీ చేయబడిన సిస్టమ్‌ల రూపకల్పన గురించి మేము మరింత ప్రత్యేకమైన వచనాన్ని ప్రచురిస్తాము.

సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ అండ్ సిస్టమ్స్ డిజైన్: ది బిగ్ పిక్చర్ అండ్ రిసోర్స్ గైడ్

స్నాప్‌షాట్ ఐజాక్ స్మిత్ అన్‌స్ప్లాష్ నుండి

మీరు స్క్రాచ్ నుండి సాఫ్ట్‌వేర్ సిస్టమ్‌ను రూపొందించడం వంటి సవాళ్లను ఎప్పుడూ ఎదుర్కోనట్లయితే, అటువంటి పనిని ప్రారంభించేటప్పుడు, కొన్నిసార్లు ఎక్కడ ప్రారంభించాలో కూడా స్పష్టంగా తెలియదు. మీరు మొదట సరిహద్దులను గీయాలని నేను నమ్ముతున్నాను, తద్వారా మీరు సరిగ్గా ఏమి డిజైన్ చేయబోతున్నారనే దాని గురించి మీకు ఎక్కువ లేదా తక్కువ విశ్వాసం ఉంటుంది, ఆపై మీ స్లీవ్‌లను చుట్టండి మరియు ఆ సరిహద్దుల్లో పని చేయండి. ప్రారంభ బిందువుగా, మీరు ఒక ఉత్పత్తి లేదా సేవను తీసుకోవచ్చు (ఆదర్శంగా మీరు నిజంగా ఇష్టపడేది) మరియు దానిని ఎలా అమలు చేయాలో గుర్తించండి. ఈ ఉత్పత్తి ఎంత సరళంగా కనిపిస్తుందో మరియు వాస్తవానికి ఇది ఎంత సంక్లిష్టతను కలిగి ఉందో మీరు ఆశ్చర్యపోవచ్చు. మర్చిపోవద్దు: సాధారణ - సాధారణంగా సంక్లిష్టమైనది, మరియు అది సరే.

సిస్టమ్‌ను రూపొందించడం ప్రారంభించే ఎవరికైనా నేను ఇవ్వగల ఉత్తమ సలహా ఇది అని నేను భావిస్తున్నాను: ఎటువంటి అంచనాలు చేయవద్దు! మొదటి నుండి, మీరు ఈ వ్యవస్థ గురించి తెలిసిన వాస్తవాలను మరియు దానితో అనుబంధించబడిన అంచనాలను పేర్కొనాలి. మీ డిజైన్‌ను ప్రారంభించడంలో మీకు సహాయపడటానికి ఇక్కడ కొన్ని మంచి ప్రశ్నలు ఉన్నాయి:

  • మనం పరిష్కరించడానికి ప్రయత్నిస్తున్న సమస్య ఏమిటి?
  • మా సిస్టమ్‌తో పరస్పర చర్య చేసే వినియోగదారుల గరిష్ట సంఖ్య ఎంత?
  • మేము డేటాను వ్రాయడం మరియు చదవడం యొక్క ఏ నమూనాలను ఉపయోగిస్తాము?
  • ఆశించిన వైఫల్యం కేసులు ఏమిటి, మనం వాటిని ఎలా నిర్వహించబోతున్నాం?
  • సిస్టమ్ స్థిరత్వం మరియు లభ్యత కోసం అంచనాలు ఏమిటి?
  • పని చేసేటప్పుడు బాహ్య ధృవీకరణ మరియు నియంత్రణకు సంబంధించిన ఏవైనా అవసరాలను మీరు పరిగణనలోకి తీసుకోవాలా?
  • మేము ఏ రకమైన సున్నితమైన డేటాను నిల్వ చేయబోతున్నాము?

ఇవి నాకు మరియు నేను సంవత్సరాల వృత్తిపరమైన కార్యకలాపాలలో పాల్గొన్న జట్లకు ఉపయోగకరమైన కొన్ని ప్రశ్నలు మాత్రమే. ఈ ప్రశ్నలకు సమాధానాలు మీకు తెలిస్తే (మరియు మీరు పని చేయాల్సిన సందర్భానికి సంబంధించిన ఏవైనా ఇతరాలు), అప్పుడు మీరు సమస్య యొక్క సాంకేతిక వివరాలను క్రమంగా పరిశోధించవచ్చు.

ప్రారంభ స్థాయిని సెట్ చేయండి

నేను ఇక్కడ "బేస్‌లైన్" అంటే ఏమిటి? వాస్తవానికి, మన కాలంలో, సాఫ్ట్‌వేర్ పరిశ్రమలోని చాలా సమస్యలను ఇప్పటికే ఉన్న పద్ధతులు మరియు సాంకేతికతలను ఉపయోగించి పరిష్కరించవచ్చు. తదనుగుణంగా, ఈ ల్యాండ్‌స్కేప్‌ను నావిగేట్ చేయడం ద్వారా, మీ ముందు ఎవరైనా పరిష్కరించాల్సిన సమస్యలను ఎదుర్కొన్నప్పుడు మీరు ఒక నిర్దిష్ట ప్రారంభాన్ని పొందుతారు. వ్యాపార మరియు వినియోగదారు సమస్యలను పరిష్కరించడానికి ప్రోగ్రామ్‌లు వ్రాయబడిందని మర్చిపోవద్దు, కాబట్టి మేము సమస్యను చాలా సూటిగా మరియు సరళంగా (యూజర్ యొక్క కోణం నుండి) పరిష్కరించడానికి ప్రయత్నిస్తాము. ఇది ఎందుకు గుర్తుంచుకోవడం ముఖ్యం? మీ కోఆర్డినేట్ సిస్టమ్‌లో మీరు అన్ని సమస్యలకు ప్రత్యేకమైన పరిష్కారాల కోసం వెతకడానికి ఇష్టపడవచ్చు, ఎందుకంటే "నేను ప్రతిచోటా నమూనాలను అనుసరిస్తే నేను ఎలాంటి ప్రోగ్రామర్‌ని" అని మీరు అనుకుంటున్నారా? నిజానికి, ఇక్కడ కళ ఎక్కడ మరియు ఏమి చేయాలనే దాని గురించి నిర్ణయాలు తీసుకుంటుంది. వాస్తవానికి, మనలో ప్రతి ఒక్కరూ ఎప్పటికప్పుడు ప్రత్యేకమైన సమస్యలను ఎదుర్కోవలసి ఉంటుంది, వీటిలో ప్రతి ఒక్కటి నిజమైన సవాలు. అయినప్పటికీ, మన ప్రారంభ స్థాయి స్పష్టంగా నిర్వచించబడితే, మన శక్తిని దేనిపై ఖర్చు చేయాలో మనకు తెలుసు: మన ముందు ఉన్న సమస్యను పరిష్కరించడానికి సిద్ధంగా ఉన్న ఎంపికల కోసం శోధించడం లేదా దానిని మరింత అధ్యయనం చేయడం మరియు లోతైన అవగాహన పొందడం.

కొన్ని అద్భుతమైన సాఫ్ట్‌వేర్ సిస్టమ్‌ల యొక్క నిర్మాణ భాగం ఏమిటో నిపుణుడు నమ్మకంగా అర్థం చేసుకుంటే, వాస్తుశిల్పి కళలో ప్రావీణ్యం సంపాదించడానికి మరియు ఈ రంగంలో బలమైన ఆధారాన్ని అభివృద్ధి చేయడానికి ఈ జ్ఞానం ఎంతో అవసరం అని నేను మిమ్మల్ని ఒప్పించగలిగాను.

సరే, ఎక్కడ ప్రారంభించాలి? యు డోనా మార్టినా GitHub అనే రిపోజిటరీ ఉంది సిస్టమ్-డిజైన్-ప్రైమర్, దీని నుండి మీరు పెద్ద-స్థాయి వ్యవస్థలను ఎలా రూపొందించాలో తెలుసుకోవచ్చు, అలాగే ఈ అంశంపై ఇంటర్వ్యూలకు సిద్ధం చేయవచ్చు. రిపోజిటరీ ఉదాహరణలతో కూడిన విభాగాన్ని కలిగి ఉంది నిజమైన నిర్మాణాలు, ఎక్కడ, ముఖ్యంగా, వారు తమ వ్యవస్థల రూపకల్పనను ఎలా చేరుకుంటారో పరిగణించబడుతుంది కొన్ని ప్రసిద్ధ కంపెనీలుఉదా. ట్విట్టర్, ఉబెర్ మొదలైనవి.

అయితే, ఈ మెటీరియల్‌కు వెళ్లే ముందు, ఆచరణలో మనం ఎదుర్కొనే అత్యంత ముఖ్యమైన నిర్మాణ సవాళ్లను నిశితంగా పరిశీలిద్దాం. ఇది చాలా ముఖ్యం ఎందుకంటే మీరు మొండి పట్టుదలగల మరియు బహుముఖ సమస్య యొక్క అనేక అంశాలను పేర్కొనాలి, ఆపై ఇచ్చిన సిస్టమ్‌లో అమలులో ఉన్న నిబంధనల చట్రంలో దాన్ని పరిష్కరించాలి. జాక్సన్ గబ్బార్డ్, ఒక మాజీ Facebook ఉద్యోగి, రాశారు సిస్టమ్స్ డిజైన్ ఇంటర్వ్యూల గురించి 50 నిమిషాల వీడియో, అక్కడ అతను వందలాది మంది దరఖాస్తుదారులను పరీక్షించడంలో తన స్వంత అనుభవాన్ని పంచుకున్నాడు. వీడియో పెద్ద సిస్టమ్ రూపకల్పన మరియు అటువంటి స్థానం కోసం అభ్యర్థి కోసం వెతుకుతున్నప్పుడు ముఖ్యమైన విజయ ప్రమాణాలపై ఎక్కువగా దృష్టి కేంద్రీకరిస్తున్నప్పటికీ, సిస్టమ్‌లను రూపకల్పన చేసేటప్పుడు ఏ అంశాలు అత్యంత ముఖ్యమైనవి అనే దానిపై ఇది ఇప్పటికీ సమగ్ర వనరుగా ఉపయోగపడుతుంది. నేను కూడా సూచిస్తున్నాను సారాంశం ఈ వీడియో.

డేటాను నిల్వ చేయడం మరియు తిరిగి పొందడం గురించి జ్ఞానాన్ని పెంపొందించుకోండి

సాధారణంగా, మీరు దీర్ఘకాలికంగా మీ డేటాను ఎలా నిల్వ చేయాలి మరియు తిరిగి పొందాలి అనే దానిపై మీ నిర్ణయం సిస్టమ్ పనితీరుపై క్లిష్టమైన ప్రభావాన్ని చూపుతుంది. కాబట్టి, మీరు ముందుగా మీ సిస్టమ్ యొక్క ఆశించిన వ్రాయడం మరియు చదవడం లక్షణాలను అర్థం చేసుకోవాలి. అప్పుడు మీరు ఈ సూచికలను మూల్యాంకనం చేయగలగాలి మరియు చేసిన అసెస్‌మెంట్‌ల ఆధారంగా ఎంపికలు చేసుకోవాలి. అయితే, మీరు ఇప్పటికే ఉన్న డేటా నిల్వ నమూనాలను అర్థం చేసుకుంటే మాత్రమే మీరు ఈ పనిని సమర్థవంతంగా ఎదుర్కోగలరు. సూత్రప్రాయంగా, ఇది సంబంధించిన ఘన జ్ఞానాన్ని సూచిస్తుంది డేటాబేస్ ఎంపిక.

డేటాబేస్‌లను చాలా స్కేలబుల్ మరియు మన్నికైన డేటా స్ట్రక్చర్‌లుగా భావించవచ్చు. అందువల్ల, నిర్దిష్ట డేటాబేస్‌ను ఎన్నుకునేటప్పుడు డేటా నిర్మాణాల పరిజ్ఞానం మీకు చాలా ఉపయోగకరంగా ఉండాలి. ఉదాహరణకి, Redis వివిధ రకాల విలువలకు మద్దతు ఇచ్చే డేటా స్ట్రక్చర్ సర్వర్. ఇది జాబితాలు మరియు సెట్‌ల వంటి డేటా నిర్మాణాలతో పని చేయడానికి మరియు బాగా తెలిసిన అల్గారిథమ్‌లను ఉపయోగించి డేటాను చదవడానికి మిమ్మల్ని అనుమతిస్తుంది, ఉదాహరణకు, ఎల్‌ఆర్‌యు, అటువంటి పనిని మన్నికైన మరియు అత్యంత ప్రాప్యత శైలిలో నిర్వహించడం.

సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ అండ్ సిస్టమ్స్ డిజైన్: ది బిగ్ పిక్చర్ అండ్ రిసోర్స్ గైడ్

స్నాప్‌షాట్ శామ్యూల్ జెల్లర్ అన్‌స్ప్లాష్ నుండి

మీరు వివిధ డేటా నిల్వ నమూనాల గురించి తగినంత అవగాహన కలిగి ఉన్న తర్వాత, డేటా స్థిరత్వం మరియు లభ్యతను అధ్యయనం చేయడానికి వెళ్లండి. అన్నింటిలో మొదటిది, మీరు అర్థం చేసుకోవాలి CAP సిద్ధాంతం కనీసం సాధారణ పరంగా, ఆపై స్థాపించబడిన నమూనాలను నిశితంగా పరిశీలించడం ద్వారా ఈ జ్ఞానాన్ని మెరుగుపరచండి స్థిరత్వం и సౌలభ్యాన్ని. ఈ విధంగా, మీరు ఫీల్డ్‌పై అవగాహనను పెంపొందించుకుంటారు మరియు డేటాను చదవడం మరియు వ్రాయడం వాస్తవానికి రెండు విభిన్నమైన సమస్యలు, ఒక్కొక్కటి దాని స్వంత ప్రత్యేక సవాళ్లతో ఉన్నాయని అర్థం చేసుకుంటారు. కొన్ని అనుగుణ్యత మరియు లభ్యత నమూనాలతో సాయుధమై, మీరు మీ అప్లికేషన్‌లకు మృదువైన డేటా ప్రవాహాన్ని నిర్ధారించేటప్పుడు సిస్టమ్ పనితీరును గణనీయంగా పెంచవచ్చు.

చివరగా, డేటా నిల్వ సమస్యల గురించి సంభాషణను ముగించడం, మేము కాషింగ్ గురించి కూడా ప్రస్తావించాలి. ఇది క్లయింట్ మరియు సర్వర్‌లో ఏకకాలంలో అమలు చేయాలా? మీ కాష్‌లో ఏ డేటా ఉంటుంది? మరియు ఎందుకు? మీరు కాష్ చెల్లుబాటును ఎలా నిర్వహిస్తారు? ఇది క్రమం తప్పకుండా, నిర్దిష్ట వ్యవధిలో జరుగుతుందా? అవును అయితే, ఎంత తరచుగా? ఈ అంశాలను అధ్యయనం చేయడం ప్రారంభించాలని నేను సిఫార్సు చేస్తున్నాను తదుపరి విభాగం పైన పేర్కొన్న సిస్టమ్ డిజైన్ ప్రైమర్.

కమ్యూనికేషన్ నమూనాలు

వ్యవస్థలు వివిధ భాగాలను కలిగి ఉంటాయి; ఇవి ఒకే ఫిజికల్ నోడ్‌లో నడుస్తున్న విభిన్న ప్రక్రియలు కావచ్చు లేదా మీ నెట్‌వర్క్‌లోని వివిధ భాగాలలో నడుస్తున్న విభిన్న మెషీన్‌లు కావచ్చు. మీ నెట్‌వర్క్‌లోని ఈ వనరులలో కొన్ని ప్రైవేట్‌గా ఉండవచ్చు, కానీ మరికొన్ని పబ్లిక్‌గా ఉండాలి మరియు బయటి నుండి వాటిని యాక్సెస్ చేసే వినియోగదారులకు అందుబాటులో ఉండాలి.

ఈ వనరులను ఒకదానితో ఒకటి కమ్యూనికేషన్, అలాగే మొత్తం వ్యవస్థ మరియు బయటి ప్రపంచం మధ్య సమాచార మార్పిడిని నిర్ధారించడం అవసరం. సిస్టమ్స్ డిజైన్ సందర్భంలో, ఇక్కడ మళ్లీ మనం కొత్త మరియు ప్రత్యేకమైన సవాళ్లను ఎదుర్కొంటాము. అవి ఎలా ఉపయోగపడతాయో చూద్దాం అసమకాలిక విధి ప్రవాహాలు, మరియు ఏమి pవివిధ రకాల కమ్యూనికేషన్ నమూనాలు అందుబాటులో ఉన్నాయి.

సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ అండ్ సిస్టమ్స్ డిజైన్: ది బిగ్ పిక్చర్ అండ్ రిసోర్స్ గైడ్

స్నాప్‌షాట్ టోనీ స్టోడార్డ్ అన్‌స్ప్లాష్ నుండి

బయటి ప్రపంచంతో కమ్యూనికేషన్ నిర్వహించేటప్పుడు, ఇది ఎల్లప్పుడూ చాలా ముఖ్యమైనది భద్రత, దీని నియమాన్ని కూడా తీవ్రంగా మరియు చురుకుగా కొనసాగించాల్సిన అవసరం ఉంది.

కనెక్షన్ పంపిణీ

ఈ అంశాన్ని ప్రత్యేక విభాగంలో ఉంచడం అందరికీ సమర్ధనీయమని నాకు ఖచ్చితంగా తెలియదు. అయినప్పటికీ, నేను ఈ భావనను ఇక్కడ వివరంగా ప్రదర్శిస్తాను మరియు ఈ విభాగంలోని మెటీరియల్ "కనెక్షన్ డిస్ట్రిబ్యూషన్" అనే పదం ద్వారా చాలా ఖచ్చితంగా వివరించబడిందని నేను నమ్ముతున్నాను.

అనేక భాగాలను సరిగ్గా కనెక్ట్ చేయడం ద్వారా వ్యవస్థలు ఏర్పడతాయి మరియు ఒకదానికొకటి వారి కమ్యూనికేషన్ తరచుగా ఏర్పాటు చేయబడిన ప్రోటోకాల్‌ల ఆధారంగా నిర్వహించబడుతుంది, ఉదాహరణకు, TCP మరియు UDP. అయినప్పటికీ, ఆధునిక వ్యవస్థల యొక్క అన్ని అవసరాలను తీర్చడానికి ఈ ప్రోటోకాల్‌లు తరచుగా సరిపోవు, ఇవి తరచుగా అధిక లోడ్‌లో నిర్వహించబడతాయి మరియు వినియోగదారు అవసరాలపై కూడా ఎక్కువగా ఆధారపడి ఉంటాయి. సిస్టమ్‌లో ఇటువంటి అధిక లోడ్‌లను ఎదుర్కోవటానికి కనెక్షన్‌లను పంపిణీ చేయడానికి మార్గాలను కనుగొనడం తరచుగా అవసరం.

ఈ పంపిణీ బాగా తెలిసిన వాటిపై ఆధారపడి ఉంటుంది డొమైన్ పేరు వ్యవస్థ (DNS). అటువంటి వ్యవస్థ డొమైన్ నేమ్ పరివర్తనలను వెయిటెడ్ రౌండ్ రాబిన్ మరియు లాటెన్సీ-బేస్డ్ మెథడ్స్ వంటి లోడ్‌ను పంపిణీ చేయడంలో సహాయపడుతుంది.

లోడ్ బ్యాలెన్సింగ్ ప్రాథమికంగా ముఖ్యమైనది మరియు ఈ రోజు మనం వ్యవహరించే ప్రతి పెద్ద ఇంటర్నెట్ సిస్టమ్ ఒకటి లేదా అంతకంటే ఎక్కువ లోడ్ బ్యాలెన్సర్‌ల వెనుక ఉంది. అందుబాటులో ఉన్న బహుళ సందర్భాలలో క్లయింట్ అభ్యర్థనలను పంపిణీ చేయడంలో లోడ్ బ్యాలెన్సర్‌లు సహాయపడతాయి. లోడ్ బ్యాలెన్సర్‌లు హార్డ్‌వేర్ మరియు సాఫ్ట్‌వేర్ రెండింటిలోనూ వస్తాయి, అయితే, ఆచరణలో, మీరు తరచుగా సాఫ్ట్‌వేర్ వాటితో వ్యవహరించాల్సి ఉంటుంది, ఉదాహరణకు. HAProxy и ELB. రివర్స్ ప్రాక్సీలు సంభావితంగా కూడా లోడ్ బ్యాలెన్సర్‌లకు చాలా పోలి ఉంటుంది, అయితే మొదటి మరియు రెండవ వాటి మధ్య పరిధి ఉంటుంది విభిన్న తేడాలు. మీ అవసరాల ఆధారంగా సిస్టమ్‌ను రూపొందించేటప్పుడు ఈ తేడాలు తప్పనిసరిగా పరిగణనలోకి తీసుకోవాలి.

గురించి కూడా తెలుసుకోవాలి కంటెంట్ డెలివరీ నెట్‌వర్క్‌లు (CDN). CDN అనేది ప్రాక్సీ సర్వర్‌ల యొక్క గ్లోబల్ డిస్ట్రిబ్యూట్ నెట్‌వర్క్, ఇది భౌగోళికంగా నిర్దిష్ట వినియోగదారుకు దగ్గరగా ఉన్న నోడ్‌ల నుండి సమాచారాన్ని అందిస్తుంది. మీరు JavaScript, CSS మరియు HTMLలో వ్రాసిన స్టాటిక్ ఫైల్‌లతో పని చేస్తే CDNలను ఉపయోగించడం ఉత్తమం. అదనంగా, ట్రాఫిక్ మేనేజర్‌లను అందించే క్లౌడ్ సేవలు నేడు సర్వసాధారణం, ఉదాహరణకు, అజూర్ ట్రాఫిక్ మేనేజర్, డైనమిక్ కంటెంట్‌తో పని చేస్తున్నప్పుడు మీకు గ్లోబల్ డిస్ట్రిబ్యూషన్ మరియు తగ్గిన జాప్యాన్ని అందిస్తుంది. అయితే, మీరు స్థితిలేని వెబ్ సేవలతో పని చేయాల్సిన సందర్భాల్లో ఇటువంటి సేవలు సాధారణంగా ఉపయోగపడతాయి.

బిజినెస్ లాజిక్ గురించి మాట్లాడుకుందాం. వ్యాపార లాజిక్, టాస్క్ ఫ్లోలు మరియు భాగాలను రూపొందించడం

కాబట్టి, మేము సిస్టమ్ యొక్క వివిధ మౌలిక సదుపాయాల గురించి చర్చించగలిగాము. చాలా మటుకు, వినియోగదారు మీ సిస్టమ్ యొక్క ఈ అన్ని అంశాల గురించి కూడా ఆలోచించరు మరియు స్పష్టంగా, వాటిని అస్సలు పట్టించుకోరు. వినియోగదారు మీ సిస్టమ్‌తో పరస్పర చర్య చేయడం ఎలా ఉంటుంది, దీన్ని చేయడం ద్వారా ఏమి సాధించవచ్చు మరియు సిస్టమ్ వినియోగదారు ఆదేశాలను ఎలా అమలు చేస్తుంది, వినియోగదారు డేటాతో ఏమి మరియు ఎలా చేస్తుంది అనే దానిపై కూడా వినియోగదారు ఆసక్తిని కలిగి ఉంటారు.

ఈ వ్యాసం యొక్క శీర్షిక సూచించినట్లుగా, నేను సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ మరియు సిస్టమ్ డిజైన్ గురించి మాట్లాడబోతున్నాను. దీని ప్రకారం, సాఫ్ట్‌వేర్ భాగాలు ఎలా సృష్టించబడతాయో వివరించే సాఫ్ట్‌వేర్ డిజైన్ నమూనాలను కవర్ చేయడానికి నేను ప్లాన్ చేయలేదు. అయినప్పటికీ, నేను దాని గురించి ఎంత ఎక్కువగా ఆలోచిస్తున్నానో, సాఫ్ట్‌వేర్ డిజైన్ నమూనాలు మరియు నిర్మాణ నమూనాల మధ్య లైన్ చాలా అస్పష్టంగా ఉందని మరియు రెండు భావనలు దగ్గరి సంబంధం కలిగి ఉన్నాయని నాకు అనిపిస్తుంది. ఉదాహరణకు తీసుకుందాం ఈవెంట్ నమోదు (ఈవెంట్ సోర్సింగ్). మీరు ఈ నిర్మాణ నమూనాను స్వీకరించిన తర్వాత, ఇది మీ సిస్టమ్‌లోని దాదాపు ప్రతి అంశాన్ని ప్రభావితం చేస్తుంది: డేటా యొక్క దీర్ఘకాలిక నిల్వ, మీ సిస్టమ్‌లో స్వీకరించబడిన స్థిరత్వం స్థాయి, దానిలోని భాగాల ఆకృతి మొదలైనవి మొదలైనవి. అందువల్ల, వ్యాపార తర్కానికి నేరుగా సంబంధించిన కొన్ని నిర్మాణ నమూనాలను పేర్కొనాలని నేను నిర్ణయించుకున్నాను. ఈ కథనం సాధారణ జాబితాకు పరిమితం అయినప్పటికీ, దానితో పరిచయం పొందడానికి మరియు ఈ నమూనాలతో అనుబంధించబడిన ఆలోచనల గురించి ఆలోచించమని నేను మిమ్మల్ని ప్రోత్సహిస్తున్నాను. నీవు ఇక్కడ ఉన్నావు:

సహకార విధానాలు

సిస్టమ్ రూపకల్పన ప్రక్రియకు పూర్తిగా బాధ్యత వహించే పార్టిసిపెంట్‌గా మీరు ప్రాజెక్ట్‌లో మిమ్మల్ని కనుగొనడం చాలా అసంభవం. దీనికి విరుద్ధంగా, మీరు మీ పని లోపల మరియు వెలుపల పనిచేసే సహోద్యోగులతో చాలా మటుకు సంభాషించవలసి ఉంటుంది. ఈ సందర్భంలో, మీరు ఎంచుకున్న సాంకేతిక పరిష్కారాలను సహోద్యోగులతో విశ్లేషించడం, వ్యాపార అవసరాలను గుర్తించడం మరియు పనులను ఎలా సమాంతరంగా మార్చాలో అర్థం చేసుకోవడం అవసరం.

సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ అండ్ సిస్టమ్స్ డిజైన్: ది బిగ్ పిక్చర్ అండ్ రిసోర్స్ గైడ్

స్నాప్‌షాట్ కాలిడికో అన్‌స్ప్లాష్ నుండి

మీరు సాధించడానికి ప్రయత్నిస్తున్న వ్యాపార లక్ష్యం ఏమిటి మరియు మీరు ఏ కదిలే భాగాలను ఎదుర్కోవాలి అనే దానిపై ఖచ్చితమైన మరియు భాగస్వామ్య అవగాహనను అభివృద్ధి చేయడం మొదటి దశ. గ్రూప్ మోడలింగ్ పద్ధతులు, ముఖ్యంగా తుఫాను సంఘటనలు (ఈవెంట్ స్టార్మింగ్) ఈ ప్రక్రియను గణనీయంగా వేగవంతం చేయడానికి మరియు మీ విజయావకాశాలను పెంచడానికి సహాయపడుతుంది. ఈ పని మీరు అవుట్‌లైన్‌కు ముందు లేదా తర్వాత చేయవచ్చు మీ సేవల సరిహద్దులు, ఆపై ఉత్పత్తి పరిపక్వం చెందుతున్నప్పుడు దానిని లోతుగా చేయండి. ఇక్కడ సాధించబడే స్థిరత్వం స్థాయి ఆధారంగా, మీరు కూడా సూత్రీకరించవచ్చు వాడుక భాష మీరు పని చేసే పరిమిత సందర్భం కోసం. మీరు మీ సిస్టమ్ ఆర్కిటెక్చర్ గురించి మాట్లాడవలసి వచ్చినప్పుడు, అది మీకు ఉపయోగకరంగా ఉండవచ్చు మోడల్ C4, ప్రతిపాదించారు సైమన్ బ్రౌన్, ప్రత్యేకించి మీరు కమ్యూనికేట్ చేయదలిచిన విషయాలను దృశ్యమానం చేస్తూ, సమస్య యొక్క వివరాలలోకి ఎంతమేరకు వెళ్లాలి అనేది మీరు అర్థం చేసుకోవాలి.

డొమైన్ నడిచే డిజైన్ కంటే తక్కువ ఉపయోగకరమైన ఈ అంశంపై బహుశా మరొక పరిణతి చెందిన సాంకేతికత ఉంది. అయితే, మేము ఏదో ఒకవిధంగా సబ్జెక్ట్ ప్రాంతాన్ని అర్థం చేసుకోవడానికి తిరిగి వస్తాము, కాబట్టి ఫీల్డ్‌లో జ్ఞానం మరియు అనుభవం డొమైన్ ఆధారిత డిజైన్ మీకు ఉపయోగకరంగా ఉండాలి.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి