Architecture Decision Record

Active theme: Light

← నిర్ణయ రికార్డు ఉదాహరణలు

Microsoft Azure DevOps

విషయసూచిక:

సారాంశం

సమస్య

మా ప్రాజెక్టులను బిల్డ్ చేయడానికి, ఇంటిగ్రేట్ చేయడానికి, డిప్లాయ్ చేయడానికి, హోస్ట్ చేయడానికి మేము డెవ్ఆప్స్ను వాడాలనుకుంటున్నాం. మేము Microsoft Azure DevOpsను పరిశీలిస్తున్నాం.

  • డెవ్ఆప్స్ సెటప్ (ఉదా. కాన్ఫిగర్ చేయడం), కొనసాగుతున్న వాడకం (ఉదా. వేగవంతమైన బిల్డ్ సమయాలు) కోసం డెవలపర్ అనుభవం వేగంగా, నమ్మదగినదిగా ఉండాలని మేము కోరుకుంటున్నాం.

  • ప్రాజెక్ట్ యాప్లు, డేటాబేస్లు మొదలైన వాటిని హోస్ట్ చేయడానికి మేము Microsoft Azureను మొత్తంగా వాడటాన్ని పరిశీలించాలనుకుంటున్నాం.

నిర్ణయం

Microsoft Azure DevOpsకు వ్యతిరేకంగా నిర్ణయించాం.

స్థితి

నిర్ణయించబడింది. కొత్త ముఖ్యమైన సమాచారం వస్తే/వచ్చినప్పుడు పునఃపరిశీలనకు సిద్ధంగా ఉన్నాం.

వివరాలు

ఊహలు

Accelerate పుస్తకంలో ఉన్న వంటి అన్ని సాధారణ డెవ్ఆప్స్ ఊహలు.

  • వేగవంతమైన బిల్డ్లు గణనీయమైన సహాయం. ఇది ఫీడ్బ్యాక్ లూప్లను వేగవంతం చేస్తుంది.

  • మనం ప్రత్యామ్నాయ విక్రేతల నుండి భాగాలను మార్చి వేయవచ్చు, అంటే మనం మన స్వంత అధిక-వేగ బిల్డ్ సర్వర్లను తీసుకురావాలనుకోవచ్చు, లేదా వెర్షన్ నియంత్రణ వ్యవస్థను మన స్వంత ఎంపికగా వాడవచ్చు, లేదా స్వీయ-హోస్ట్ చేసిన నిరంతర ఇంటిగ్రేషన్ సర్వర్తో సమన్వయం చేసుకోవచ్చు.

  • క్రమబద్ధీకరించిన వాడుక సౌలభ్యం డెవలపర్ అనుభవానికి, తద్వారా స్థిరత్వం, స్పష్టత, భద్రత, నేర్చుకునే వక్రరేఖ సౌలభ్యం వంటి సూక్ష్మ రంగాలకు గణనీయమైన సహాయం.

  • ఏదైనా విరిగిపోయినప్పుడు లేదా సమస్యాత్మకంగా ఉన్నప్పుడు, సమస్యను నివేదించడానికి మాకు సమర్థవంతమైన మార్గం కావాలి. భద్రతకు సంబంధించిన ఏ సమస్యలకైనా ఇది ముఖ్యంగా ముఖ్యం.

పరిమితులు

తెలిసినవి ఏవీ లేవు. బాహ్య సాధనాలతో చక్కగా కలిసి పనిచేస్తామని Azure ప్రచురించిన నిబద్ధత ఉంది.

వైఖరులు

మేము Microsoft Azure Devopsను, ప్రస్తుతం వాడుకలో ఉన్న AWSతో పోల్చి వాడటాన్ని పరిగణించాం.

మేము Azure DevOps, Azure Pipelines, Azure Repo, Terraform ద్వారా కొత్త సర్వర్ను Azureలో ప్రారంభించడాన్ని ప్రయోగించాం.

మేము Microsoft ప్రతినిధుల నుండి మద్దతు పొందడాన్ని ప్రయోగించాం.

మేము బ్లాగులు, Hacker Newsలో సహచరుల నుండి సమాచారాన్ని సేకరించాం.

వాదన

Azure DevOps ఒక అద్భుతమైన ఆఫర్ల సమితిని ప్రచారం చేస్తుంది, కానీ అవి నిలబడవు, అవి కలిసి బాగా పనిచేయవు, మద్దతు పేలవంగా ఉంది.

మా ప్రత్యక్ష అనుభవం:

  • Azure సెటప్ UIల గందరగోళం, వీటిలో కొన్ని Microsoft ఖాతాలతో అతివ్యాప్తి చెందుతాయి, కొన్ని కావు. ఉదా. Azure సైన్ ఇన్, Microsoft.com సైన్ ఇన్, Live.com సైన్ ఇన్ మొదలైనవి ఉన్నాయి, అన్నీ ఒకేసారి ఆటలో ఉన్నాయి.

  • సెటప్ సమయంలో మేము ఒక చిన్న భద్రతా సమస్యను ఎదుర్కొన్నాం, పరిష్కారం కనుగొనలేదు. దాన్ని నివేదించడానికి అనేక మార్గాలను, అనేక మంది Microsoft ప్రతినిధులతో ప్రయత్నించాం, విజయం లేదు. దాన్ని Microsoft భద్రతకు విజయవంతంగా నివేదించాం, వారు సరిచేయం అని స్పందించారు.

  • డాక్యుమెంటేషన్ తరచుగా తప్పుగా లేదా పాతదిగా ఉంటుంది. దీనిలో కనీసం కొంత భాగం Microsoft పేలవమైన సెర్చ్ ఇంజిన్ వల్ల, కొంత సగటుకంటే తక్కువ SEO వల్ల.

  • Terraform సెటప్ చక్కగా డాక్యుమెంట్ చేయబడింది, పనిచేస్తుంది. అయితే, AWSతో పోలిస్తే Terraform మద్దతు బలహీనం, ఎందుకంటే Microsoft చైన్-త్రూ Terraform సెటప్ ఉదాహరణలను చేయడానికి విక్రేతలతో వ్యాపార సంబంధాలను నిర్మిస్తోంది.

మా సహచరుల అనుభవాలు:

  • మా స్వంత గుడ్డి అంచనా చేసిన తర్వాత, మేము సహచరుల అనుభవాల కోసం చూశాం. మేము కనుగొన్నవి మా అనుభవాలను నిర్ధారించాయి.

  • సహచరులు బిల్డ్ సమయాలతో అదనపు సమస్యలను, బ్రింగ్-యువర్-ఓన్-బిల్డ్ సర్వర్తో సమస్యలను నివేదించారు. ఈ సమస్యలు UI సమస్యల కంటే గణనీయంగా తీవ్రమైనవి, ఎందుకంటే బిల్డ్లు చేయడం బిల్డ్ పైప్లైన్ ప్రధాన ఉద్దేశం, మేము రోజుకు చాలా చేయాలని ఆశిస్తున్నాం.

  • చర్చా ప్రాంతాలలో Azure సహచరుల అద్భుతమైన భాగస్వామ్యాన్ని మేము కనుగొన్నాం. ఇందుకు Microsoftకు అభినందనలు. Azure PM, కోడర్ Edward Thomson భాగస్వామ్యం, సూటిదనం, సాంకేతిక వివరణల కారణంగా ఆయన పట్ల మేము ముఖ్యంగా ముగ్ధులమయ్యాం.

పర్యవసానాలు

Microsoft Azure DevOpsను ఎంచుకోవడం, Azureను ఎంచుకోకపోవడంతో పోలిస్తే సమయం, ఖర్చులో ఎక్కువ ఖరీదైనది (~3 రెట్లు)గా కనిపిస్తోంది.

సంబంధితాలు

సంబంధిత నిర్ణయాలు

Azure DevOpsను ఎంచుకుంటే, Azure Repo, Azure Pipeline మొదలైన అనేక సంబంధిత ఆఫర్లు ఉన్నాయి. Azure Devopsను ఎంచుకుంటే, ఇది మరిన్ని Azure సామర్థ్యాలను వాడటాన్ని సులభతరం చేయవచ్చని, లేదా ఇతర విక్రేతల సామర్థ్యాలను వాడటాన్ని కష్టతరం చేయవచ్చని మేము నమ్ముతున్నాం.

డెవలపర్ అనుభవంలో Microsoft గొప్ప పురోగతి సాధిస్తోందని మేము నమ్ముతున్నాం, డెవలపర్ సాధనాల (ఉదా. GitHub), ఆధారితాల (ఉదా. Citus) పెద్ద కొనుగోళ్లను Microsoft చేయడం మేము చూస్తున్నాం.

Azure DevOpsను ఎంచుకుంటే, మేము Microsoft కొనుగోలు చేసిన ఆఫర్లను ఎంచుకోవడంపై ప్రాధాన్యత ఇవ్వాలనుకోవచ్చు, సంభావ్య కణజాల-తిరస్కరణ, ఉదా. సిబ్బంది మార్పిడి ప్రమాదం కారణంగా కొనుగోలు ఆఫర్లను మరింత జాగ్రత్త/అంచనాతో సమీపించాలనుకోవచ్చు.

సంబంధిత అవసరాలు

బిల్డ్ సమయాలు చాలా వేగంగా ఉండాలని మేము కోరుకుంటున్నాం. దీనికి అధిక ప్రీమియం చెల్లించడానికి మేము అంగీకరిస్తాం. ఎందుకంటే మేము చాలా వేగంగా పునరావృతం చేయాలనుకుంటున్నాం.

విశ్వసనీయత చాలా ఎక్కువగా ఉండాలని మేము కోరుకుంటున్నాం. దీనికి అధిక ప్రీమియం చెల్లించడానికి మేము అంగీకరిస్తాం. ఎందుకంటే మేము ఆర్థిక లావాదేవీలు, గోప్య లావాదేవీలు మొదలైన అధిక-విలువ వినియోగ సందర్భాలను పరీక్షిస్తున్నాం.

మా అగ్ర 4 డెవ్ఆప్స్ KPIలలో సగటు పునరుద్ధరణ సమయం ఉంది, ఇది వేగవంతమైన బిల్డ్లను, అధిక విశ్వసనీయతను తప్పనిసరి చేస్తుంది.

సంబంధిత రచనలు

Artifactory వంటి ఇతర వ్యవస్థలలో వాడటానికి అనువైన ఆర్టిఫాక్ట్లను బిల్డ్ సిస్టమ్ అవుట్పుట్ చేయాలని మేము కోరుకుంటున్నాం.

సంబంధిత సూత్రాలు

సులభంగా వెనక్కి తీసుకోగలగడం. ప్రస్తుతం వాడుకలో ఉన్న AWSతో సమాంతరంగా Azure DevOpsను మనం మూల్యాంకనం చేయవచ్చు.

గమనికలు

Microsoft Devops CI: An Unsatisfying Adventure

https://toxicbakery.github.io/vsts-devops/microsoft-devops-ci/

బ్లాగ్ పోస్ట్.

"సాఫ్ట్వేర్ డెవలపర్గా, నాణ్యమైన ఉత్పత్తులను త్వరగా, చౌకగా నిర్మించడం ఎంత కష్టమో నాకు ప్రత్యక్షంగా తెలుసు. అది మనం కొన్నిసార్లు సరిగా చేసే, మరికొన్నిసార్లు ఒబామా కాలం నాటి ఆరోగ్య సంరక్షణ ప్రభుత్వ సైట్ లాంటిదిగా మారే కళా రూపం. ఫలిత ఉత్పత్తిపై మన నియంత్రణ స్థాయి మారుతుంది, వైఫల్యం నిందలు తరచుగా నిర్ణయం తీసుకునే శ్రేణిలో తప్పు వ్యక్తులపై పడతాయి. Microsoft Azure DevOps (గతంలో Visual Studio Team Services అని పిలిచేవారు), స్పష్టంగా మంచి ఉద్దేశాలున్నప్పటికీ, చెడు నిర్ణయాలు, పేలవమైన అమలు యొక్క పరిపూర్ణ తుఫాను."

Hacker News చర్చ ముఖ్యాంశాలు

https://news.ycombinator.com/item?id=18983586

"మేము మా పనిలో Azure DevOpsను విస్తృతంగా వాడతాం, GitHub, Gitlab, స్వీయ-హోస్ట్ పరిష్కారాలు, Jenkins, TeamCity వాడిన తర్వాత... Azure DevOps చివరి స్థానంలో ఉంది."

"UI ప్రతిచోటా భయంకరంగా అసౌకర్యంగా ఉంది. నాకు అన్నింటికంటే చెత్త పుల్ రిక్వెస్ట్లు. పుల్ రిక్వెస్ట్పై వ్యక్తులతో పని చేయడం నమ్మశక్యం కాని కష్టం. నేను "ఒక" నిర్దిష్ట సమస్యను కూడా చూపలేను - మాకు ఇది ప్రతిచోటా విరిగిపోయింది."

"Azure Devops అనేది నేను ప్రేమించాలనుకునేది. UI మారుతూనే ఉంటుంది, కానీ చాలా కాలంగా ఉన్న అంతర్లీన బగ్లను సరిచేయదు."

"సాధనాలు బాగా అనుసంధానించబడలేదు, UI నిజంగా నెమ్మదిగా ఉంది, నా ఇష్టమైన రెపోల కోసం క్రియాశీల పుల్ రిక్వెస్ట్లు, బిల్డ్లు, రిలీజ్లు మొదలైన వాటి డాష్బోర్డ్ వీక్షణ లేదు. బిల్డ్/డిప్లాయ్ సమయాలు నమ్మశక్యం కానంత నెమ్మదిగా ఉన్నాయి."

"మేము Azure Boardsను (వర్క్ ఐటమ్లు, బోర్డులు, బ్యాక్లాగ్లు మొదలైనవి) కూడా వాడటానికి ప్రయత్నించాం. అయ్యో. ఇది అసంబద్ధ ఆలోచనల పూర్తి UI గందరగోళం. ఒక్కదాన్ని చక్కగా అమలు చేయడానికి బదులు, వారు రెండు డజన్ల విషయాలను భయంకరంగా అమలు చేశారు."

Windows డెవలప్మెంట్ MVP

ఇక్కడ Windows డెవలప్మెంట్ MVPని. ఈ సమస్యల గురించి మరింత బిగ్గరగా చెప్పనందుకు నేను కొంత బాధ్యత వహించాలని భావిస్తున్నాను. కానీ UX సమస్యల గురించి మీరు "ఆశ్చర్యపోయారు" అని వినడం నిరాశ కలిగిస్తోందని చెప్పాలి. UX భయంకరంగా ఉందని (ఉదా. ప్రారంభానికి ముందు కాలం నుండే) మీ వాళ్లకు చెబుతూనే ఉన్నాను, "మాకు తెలుసు, సరిచేస్తున్నాం" అని వింటూనే ఉన్నాను. నేను అభిప్రాయాన్ని అధికారికంగా రూపొందించి, పైప్లైన్ల ద్వారా పంపడం ప్రారంభిస్తాను, వేచి ఉండండి. నేను కూడా స్థానికుడిని (Bellevue), వచ్చి మా సాపేక్షంగా సరళమైన oss .net/wpf/uwp యాప్ను పైప్లైన్ చేసి చూడాలనుకుంటున్నాను. ఇది మా ఇద్దరికీ కళ్ళు తెరిపిస్తుందని నా అనుమానం.

కొన్ని ఉదాహరణలు:

  • సబ్మాడ్యూళ్లు ఉన్న git రెపోతో మీరు పైప్లైన్ను నిర్మించలేరు

  • కొన్ని కస్టమ్ సాధనాల కోసం PATHను సవరించడం అసాధ్యమని కనుగొన్నాం

  • కొత్త పైప్లైన్ అనుభవానికి అర్థమే లేదు, క్లిక్ చేస్తూ తిరిగే కొత్త వినియోగదారులు చివరికి తప్పు డాక్స్కు చేరతారు.

Edward Thomson (Azure PM) సారాంశం

మీ పుల్ రిక్వెస్ట్లను విలీనం చేసే కోడ్ను నేను రాశాను. Azure DevOps కోసం Microsoftలో ప్రోగ్రామ్ మేనేజర్; గతంలో GitHub, Microsoft, SourceGearలో వెర్షన్ నియంత్రణ సాధనాలపై సాఫ్ట్వేర్ ఇంజనీర్.

https://www.edwardthomson.com/

libgit2 సహ-నిర్వాహకుడు. https://libgit2.github.io

All Things Git, Git గురించిన పాడ్కాస్ట్ సహ-హోస్ట్. https://www.allthingsgit.com/

Developer Tools Weekly, అభివృద్ధి సాధనాల గురించిన వార్తాపత్రిక క్యూరేటర్. https://developertoolsweekly.com/