Бір аптада 100,000 XNUMX жол кодты қалай оқуға және түзетуге болады

Бір аптада 100,000 XNUMX жол кодты қалай оқуға және түзетуге болады
Бастапқыда үлкен және ескі жобаны түсіну әрқашан қиын. Архитектура – ​​сәулетші бағалау қызметінің бірі. Әдетте үлкен, ескі жобалармен жұмыс істеуге тура келеді және нәтиже бір аптада жеткізілуі керек.

Клиент үшін шынымен пайдалы нәтижелерді бере отырып, бір аптада 100 мың немесе одан да көп код жолынан тұратын жобаны қалай бағалауға болады.

Сәулетшілер мен техникалық жетекшілердің көпшілігі жобаның ұқсас бағалауларына тап болды. Бұл жартылай ресми процесс немесе біздің компанияда орындалатын жеке қызмет ретінде көрінуі мүмкін, сіздердің көпшілігіңіз мұнымен айналысқансыз.

Орысша сөйлемейтін достарыңызға ағылшын тіліндегі түпнұсқасы мына жерде: Бір аптада сәулетті бағалау.

Біздің компанияның тәсілі

Мен сізге оның біздің компанияда қалай жұмыс істейтінін және ұқсас жағдайларда қалай әрекет ететінімді айтып беремін, бірақ сіз бұл тәсілді жобаңыз бен компанияңыздың қажеттіліктеріне қарай оңай өзгерте аласыз.

Архитектураны бағалаудың екі түрі бар.

Интерьер – Біз мұны әдетте компания ішіндегі жобалар үшін жасаймыз. Кез келген жоба бірнеше себептер бойынша архитектуралық бағалауды сұрай алады:

  1. Команда өз жобасын мінсіз деп санайды және бұл күдікті. Бізде мұндай жағдайлар болды, көбінесе мұндай жобаларда бәрі идеалдан алыс.
  2. Команда өз жобаларын және шешімдерін сынап көргісі келеді.
  3. Команда жағдайдың нашар екенін біледі. Олар тіпті негізгі проблемалар мен себептерді тізімдей алады, бірақ проблемалардың толық тізімін және жобаны жақсарту бойынша ұсыныстарды қалайды.

Сыртқы ішкі бағалаудан гөрі ресми процесс. Клиент әрқашан бір жағдайда ғана келеді, бәрі нашар - өте нашар. Әдетте клиент жаһандық проблемалардың бар екенін түсінеді, бірақ себептерін дұрыс анықтай алмайды және оларды құрамдас бөліктерге бөле алмайды.

Сыртқы клиент үшін архитектураны бағалау күрделірек жағдай. Процесс формальды болуы керек. Жобалар әрқашан үлкен және ескі. Оларда көптеген проблемалар, қателер және қисық код бар. Орындалған жұмыс туралы есеп ең көп дегенде бірнеше апта ішінде дайын болуы керек, онда негізгі проблемалар мен жақсарту бойынша ұсыныстар болуы керек. Сондықтан, жобаны сыртқы бағалаумен айналысатын болсақ, онда ішкі бағалау бір түйір болмақ. Ең қиын жағдайды қарастырайық.

Кәсіпорын жобасының архитектурасын бағалау

Бағалауға арналған типтік жоба - көптеген проблемалары бар үлкен, ескі, кәсіпорын жобасы. Клиент бізге келіп, өз жобасын жөндеуді сұрайды. Бұл айсберг сияқты, клиент өз проблемаларының ұшын ғана көреді және судың астында не барын білмейді (кодтың тереңдігінде).

Тұтынушы шағымдануы мүмкін және білуі мүмкін мәселелер:

  • Өнімділік мәселелері
  • Қолдану мәселелері
  • Ұзақ мерзімді орналастыру
  • Бірліктің және басқа сынақтардың болмауы

Клиент білмейтін, бірақ жобада болуы мүмкін мәселелер:

  • Қауіпсіздік мәселелері
  • Дизайн мәселелері
  • Қате архитектура
  • Алгоритмдік қателер
  • Сәйкес емес технологиялар
  • Техникалық қарыз
  • Дұрыс емес даму процесі

Формальды архитектураны тексеру процесі

Бұл біз компания ретінде орындайтын ресми процесс, бірақ сіз оны компанияңызға және жобаңызға байланысты реттей аласыз.

Клиенттен сұрау

Клиент ағымдағы жобаның архитектурасын бағалауды сұрайды. Біздің тараптағы жауапты адам жоба туралы негізгі ақпаратты жинап, қажетті сарапшыларды таңдайды. Жобаға байланысты бұл әртүрлі сарапшылар болуы мүмкін.

Шешім сәулетшісі – бағалау мен үйлестіруге жауапты негізгі тұлға (және көбінесе жалғыз).
Арнайы мамандарды жинаңыз – .Net, Java, Python және жоба мен технологияларға байланысты басқа да техникалық мамандар
Бұлт мамандары – бұл Azure, GCP немесе AWS бұлттық сәулетшілері болуы мүмкін.
Инфрақұрылым – DevOps, жүйелік әкімші және т.б.
Басқа сарапшылар – мысалы, үлкен деректер, машиналық оқыту, өнімділік инженері, қауіпсіздік сарапшысы, QA жетекші.

Жоба туралы ақпарат жинау

Сіз жоба туралы мүмкіндігінше көбірек ақпарат жинауыңыз керек. Жағдайға байланысты әртүрлі әдістерді қолдануға болады:

  • Сауалнамалар және пошта арқылы байланысудың басқа әдістері. Ең тиімсіз әдіс.
  • Онлайн кездесулер.
  • Ақпарат алмасуға арналған арнайы құралдар, мысалы: Google doc, Confluence, репозиторийлер және т.б.
  • Сайттағы «тікелей» кездесулер. Ең тиімді және ең қымбат әдіс.

Клиенттен не алу керек?

Негізгі ақпарат. Жоба не туралы? Оның мақсаты мен құндылығы. Негізгі мақсаттар мен болашаққа жоспарлар. Бизнестің мақсаттары мен стратегиялары. Негізгі мәселелер және қалаған нәтижелер.

Жоба туралы ақпарат. Технологиялық стек, фреймворктар, бағдарламалау тілдері. Жергілікті немесе бұлтты орналастыру. Егер жоба бұлтта болса, қандай қызметтер қолданылады. Қандай архитектуралық және дизайн үлгілері қолданылды.

Функционалды емес талаптар. Жүйенің өнімділігіне, қолжетімділігіне және пайдаланудың қарапайымдылығына қатысты барлық талаптар. Қауіпсіздік талаптары және т.б.

Негізгі пайдалану жағдайлары және деректер ағындары.

Бастапқы кодқа қол жеткізу. Ең маңызды бөлігі! Сіз міндетті түрде репозиторийлерге және жобаны құру туралы құжаттамаға қол жеткізуіңіз керек.

Инфрақұрылымға қол жеткізу. Тікелей жүйемен жұмыс істеу үшін сахнаға немесе өндірістік инфрақұрылымға қол жеткізу жақсы болар еді. Клиентте инфрақұрылым мен өнімділікті бақылау құралдары болса, бұл үлкен жетістік. Бұл құралдар туралы келесі бөлімде айтатын боламыз.

жазбалар. Егер клиенттің құжаты болса, бұл жақсы бастама. Ол ескірген болуы мүмкін, бірақ бұл әлі де жақсы бастама. Құжаттамаға ешқашан сенбеңіз - оны клиентпен, нақты инфрақұрылымда және бастапқы кодта сынаңыз.

Архитектураны бағалау процесі

Осындай үлкен көлемдегі ақпаратты қысқа мерзімде қалай өңдеуге болады? Ең алдымен, жұмысты параллельдеңіз.

DevOps инфрақұрылымды қарастыруы керек. Кодқа техникалық жетекші. Өнімділік көрсеткіштерін көру үшін өнімділік инженері. Деректер қорының маманы деректер құрылымдарын тереңірек зерттеуі керек.

Бірақ бұл сізде көп ресурстар болған кезде тамаша жағдай. Әдетте жобаны бір-үш адам бағалайды. Сіз тіпті бағалауды өзіңіз де жүргізе аласыз, бұл көбінесе жобаның барлық салаларында тиісті біліміңіз бен тәжірибеңіз болса. Бұл жағдайда сіз барлық процестерді мүмкіндігінше автоматтандыруыңыз керек.

Өкінішке орай, құжаттаманы қолмен оқуға тура келеді. Тиісті тәжірибенің арқасында сіз құжаттаманың сапасын тез түсіне аласыз. Ненің шындығы, ненің шындыққа сәйкес келмейтіні анық. Кейде сіз нақты өмірде ешқашан жұмыс істемейтін құжаттамада архитектураны көре аласыз. Бұл жобада іс жүзінде қалай жасалғаны туралы ойлануға мүмкіндік береді.

Жобаны бағалауды автоматтандыруға арналған пайдалы құралдар

Кодты бағалау - қарапайым жаттығу. Сіз дизайн, өнімділік және қауіпсіздік мәселелерін көрсететін статикалық код анализаторларын пайдалана аласыз. Міне, олардың бірнешеуі:

Құрылым 101 сәулетші үшін тамаша құрал болып табылады. Ол сізге үлкен суретті, модульдер арасындағы тәуелділікті және рефакторингке арналған ықтимал аймақтарды көрсетеді. Барлық жақсы құралдар сияқты, бұл жақсы ақшаны талап етеді, бірақ сіз 30 күндік сынақ нұсқасын пайдалана аласыз.

SonarQube - жақсы ескі құрал. Статикалық кодты талдау құралы. 20-дан астам бағдарламалау тілдері үшін нашар кодты, қателерді және қауіпсіздік мәселелерін анықтауға мүмкіндік береді.

Барлық бұлттық провайдерлерде инфрақұрылымды бақылау құралдары бар. Бұл сіздің инфрақұрылымыңыздың тиімділігін құны мен өнімділігі тұрғысынан дұрыс бағалауға мүмкіндік береді. AWS үшін бұл сенімді кеңесші. Azure үшін бұл оңай Azure кеңесшісі.

Қосымша өнімділікті бақылау және тіркеу барлық деңгейлерде өнімділік мәселелерін табуға көмектеседі. Тиімсіз сұраулары бар дерекқордан бастап, сервер және фронтпен аяқталады. Клиент бұл құралдарды бұрын орнатпаған болса да, өнімділік мәселелерін анықтау үшін оларды бар жүйеге тез біріктіруге болады.

Әдеттегідей, жақсы құралдар оған тұрарлық. Мен бірнеше ақылы құралдарды ұсына аламын. Әрине, сіз ашық бастапқы кодты пайдалана аласыз, бірақ бұл сізге көп уақытты алады. Және бұл сәулеттік бағалау процесінде емес, алдын ала жасалуы керек.

Жаңа Relic – қолданбаның өнімділігін бағалау құралы
Датог – бұлттық жүйені бақылау қызметі

Қауіпсіздікті тексеруге арналған көптеген құралдар бар. Бұл жолы мен сізге тегін жүйені сканерлеу құралын ұсынамын.

OWASP ZAP – қауіпсіздік стандарттарына сәйкес веб-қосымшаларды сканерлеу құралы.

Барлығын бір бүтінге біріктірейік.

Есепті дайындау

Есепті клиенттен жинаған деректерден бастаңыз. Жобаның мақсаттарын, шектеулерін, функционалды емес талаптарын сипаттаңыз. Осыдан кейін барлық кіріс деректерін атап өту керек: бастапқы код, құжаттама, инфрақұрылым.

Келесі қадам. Қолмен немесе автоматтандырылған құралдарды пайдаланып тапқан кез келген мәселелерді тізімдеңіз. Автоматты түрде жасалған үлкен есептерді қолданбалар бөлімінің соңында орналастырыңыз. Табылған мәселелердің қысқа және нақты дәлелдері болуы керек.
Қате, ескерту, ақпарат шкаласы бойынша табылған мәселелерге басымдық беріңіз. Сіз өзіңіздің шкалаңызды таңдай аласыз, бірақ бұл жалпы қабылданған.

Нағыз сәулетші ретінде табылған мәселелерді түзету үшін ұсыныстар беру сіздің жауапкершілігіңіз. Тұтынушы алатын жақсартулар мен бизнес құндылығын сипаттаңыз. Бизнес құндылығын қалай көрсетуге болады архитектуралық рефакторинг бұрын талқыладық.

Кішігірім итерациялармен жол картасын дайындаңыз. Әрбір итерацияда аяқтау уақыты, сипаттамасы, жақсартуға қажетті ресурстар көлемі, техникалық құндылық және іскерлік құндылық болуы керек.

Біз архитектуралық бағалауды аяқтаймыз және клиентке есеп береміз

Ешқашан жай ғана есеп жібермеңіз. Ол мүлде оқылмауы мүмкін немесе дұрыс түсіндірілмей оқылып, түсінілмеуі мүмкін. Қысқасы, жанды байланыс адамдар арасындағы түсініспеушілікті жоюға көмектеседі. Сіз клиентпен кездесуді жоспарлап, ең маңыздыларына назар аудара отырып, табылған мәселелер туралы сөйлесуіңіз керек. Клиенттің назарын өзі білмейтін мәселелерге аударған жөн. Қауіпсіздік мәселелері сияқты және олардың бизнеске қалай әсер ететінін түсіндіріңіз. Жақсартулармен жол картасын көрсетіңіз және клиентке қолайлырақ әртүрлі нұсқаларды талқылаңыз. Бұл уақыт, ресурстар, жұмыс көлемі болуы мүмкін.

Кездесудің қысқаша мазмұны ретінде клиентке есеп жіберіңіз.

Қорытындылай келе

Архитектураны бағалау күрделі процесс. Бағалауды дұрыс жүргізу үшін сізге жеткілікті тәжірибе мен білім қажет.

Небәрі бір апта ішінде клиентке өзіне және оның бизнесіне пайдалы нәтижелерді ұсынуға болады. Тіпті жалғыз жасасаңыз да.

Менің тәжірибеме сүйене отырып, көптеген жақсартулар ортасында жүктелді, кейде ешқашан басталмайды. Өздері үшін алтын ортаны таңдаған және ең аз еңбек шығындарымен бизнес үшін ең пайдалы жақсартулардың бір бөлігін ғана жасағандар өз өнімінің сапасын айтарлықтай жақсартты. Ештеңе жасамағандар бір-екі жылдан кейін жобаны толығымен жауып тастауы мүмкін.

Сіздің мақсатыңыз - клиентке ең төменгі баға үшін максималды жақсартуларды көрсету.

Бөлімдегі басқа мақалалар Сәулет бос уақытта оқи аласыз.

Сізге таза код және жақсы архитектуралық шешімдер тілеймін.

Біздің Facebook тобымыз - Бағдарламалық жасақтаманың архитектурасы және дамуы.

Ақпарат көзі: www.habr.com

пікір қалдыру