Бизнис

Beyond Bugs: Architecting for Resilience in Distributed Teams

Надвор од баговите: Архитектура за отпорност во дистрибуирани тимови

Дистрибуираниот тим ретко пропаѓа затоа што некој напишал лоша линија код. Грешките се видливи, познати и често поправливи. Потешките неуспеси се појавуваат во просторот меѓу луѓето: нејасна одлука, аларм без сопственик, предавање без контекст или план за лансирање што претпоставува дека сите ќе бидат онлајн во исто време.

Затоа, отпорноста не е само својство на системите. Таа е својство на начинот на кој тимот носи одлуки, споделува знаење, реагира на неизвесност и испорачува работа кога идеалните услови не се присутни. За техничките лидери, дизајнирањето на таа отпорност е дел од производот.

Градете за условите што навистина ги имате

Дистрибуираната работа ја менува работната средина. Колегите работат низ временски зони, вниманието е расцепкано, а прашање во разговор може да чека со часови за одговор. Процес дизајниран околу итно појаснување на крајот ќе се претвори во доцнење, дуплирање или тивко нагаѓање.

Одговорот не е да се пополни секој термин во календарот или да се бараат постојани ажурирања за статусот. Тој е важната работа да се направи полесна за асинхроно продолжување. Корисно правило е едноставно: способен соиграч треба да може да ја разбере тековната состојба на значајна задача без да закажува состанок.

Тоа бара да се запише контекстот што инаку живее во нечија глава. За функција, тоа може да ги вклучува проблемот на клиентот, очекуваното однесување, релевантните ограничувања, сопственикот на одлуката и начинот на кој ќе се проценува успехот. За инцидент, тоа значи да се евидентира што е познато, што е испробано и што е безбедно да се направи понатаму.

Документацијата не е бирократија кога ја отстранува зависноста од една личност. Таа е облик на оперативна редундантност.

Направете ја сопственоста експлицитна без да создавате силоси

„Тимот го поседува тоа“ може да опише здрава заедничка одговорност, но може и да прикрие празнина. Кога ќе се појави проблем во продукција, ќе пристигне прашање од клиент или мора да се донесе одлука, некому му е потребна јасна овластеност да ја придвижи работата напред.

Добрата сопственост има два дела: именувана личност одговорна за напредокот и видлива група што може да придонесе. Сопственикот не мора да ја извршува секоја задача. Тој се грижи задачата да има следен чекор, да се вклучени вистинските луѓе и нерешените компромиси да не се одолговлекуваат бесконечно.

Разгледајте услуга што е бавна само при одреден работен тек на клиентот. На инженерството можеби му се потребни траги, производот можеби треба да го објасни влијанието, а поддршката можеби ги има првите пријави. Ако никој не ја поседува координацијата, секоја функција може да работи разумно, додека клиентот сепак доживува долго молчење. Именуван сопственик на инцидент или проблем создава кохерентен одговор.

  • За системите: идентификувајте примарен сопственик, резервен сопственик, локација на прирачникот и патека за ескалација.
  • За иницијативите: идентификувајте кој одлучува за опсегот, кој ја потврдува вредноста за клиентот и кој ги соопштува промените.
  • За одлуките: забележете ја одлуката, нејзиното образложение и условите што би оправдале нејзино преиспитување.

Сопственоста треба да биде видлива, но не треба да стане територијална. Тимовите стануваат кревки кога само една личност може да распореди услуга, да објасни критична интеграција или да зборува за потреба на клиентот. Работа во пар, прегледи, ротација и концизни оперативни белешки помагаат индивидуалната одговорност да се претвори во колективна способност.

Дизајнирајте го патот на испораката, не само функцијата

Функцијата не е завршена кога кодот е споен. Таа е завршена кога корисниците можат безбедно да добијат вредност, тимот може да набљудува што се случува и постои разумен начин да се реагира ако реалноста се разликува од планот.

Оваа производно насочена дефиниција за завршеност ги подобрува техничките избори. Малото издание зад feature flag може да биде повредно од поголемо издание што не може да се ограничи. Контролната табла може да биде исто толку важна како елегантната внатрешна апстракција кога му овозможува на тимот да открие нарушено корисничко патување пред клиентите да му го објаснат тоа.

Поставувајте оперативни прашања рано

За време на дизајнирањето и планирањето, поставувајте прашања што ја поврзуваат имплементацијата со испораката:

  • Кое однесување на клиентот треба да се промени ако ова успее?
  • Како ќе препознаеме неуспех или неочекуван исход?
  • Може ли промената да се оневозможи, ограничи или врати?
  • Кои зависности би можеле да спречат искуството да функционира од почеток до крај?
  • Кој треба да знае за изданието, вклучително и поддршката и тимовите што работат со клиенти?

Овие прашања не бараат тежок процес. Тие спречуваат вообичаен начин на неуспех: распоредувањето да се третира како целна линија и подоцна да се открие дека никој не може со сигурност да го оцени резултатот.

Отпорноста значи и почитување на патеката за опоравување. Планот за враќање треба да биде практичен, а не церемонијален. Ако промена во базата на податоци е тешко да се врати, признајте го тоа во стратегијата за пуштање. Ако зависност од трета страна е суштинска, дефинирајте што треба да прави производот кога таа е недостапна. Постепената деградација не е секогаш можна, но неиспитаниот ризик од зависност е избор.

Користете ја комуникацијата како инженерска алатка

Кај дистрибуираните тимови, квалитетот на комуникацијата е дел од квалитетот на извршувањето. Нејасните пораки создаваат прекини бидејќи читателите мора повторно да го состават недостигачкиот контекст. Јасните ажурирања ја намалуваат дополнителната работа и им дозволуваат на луѓето да придонесуваат според сопствениот распоред.

Силното асинхроно ажурирање обично одговара на четири прашања: што се промени, зошто е важно, што следува и каде е потребна помош. Не мора да биде долго. Целта е да се намали двосмисленоста, а не да се изведува претстава на зафатеност.

Пишувајте ажурирања така што некој што ќе се разбуди неколку часа подоцна да може да донесе корисна одлука без прво да побара состанок.

Овој стандард е особено вреден во услови на неизвесност. Кога истрагата е нецелосна, кажете што е потврдено, што останува хипотеза и кога се очекува следното ажурирање. Преправањето дека постои сигурност ја оштетува довербата; споделувањето ограничена неизвесност им дава на другите реална основа за дејствување.

Заштитете одржливо темпо

Тим што постојано спасува изданија со доцноноќен хероизам може краткорочно да изгледа одзивен. Со време, станува помалку отпорен. Знаењето се концентрира кај луѓето кои се секогаш достапни, квалитетната работа се одложува, а нормалните проблеми почнуваат да изгледаат како итни случаи.

Одржливата испорака е грижа на техничкото лидерство бидејќи заморот го менува расудувањето. Тој ги прави тимовите помалку склони да оспоруваат ризични претпоставки, да пишуваат корисни белешки, да ги подобруваат тестовите или да паузираат пуштање кога сигналите се нејасни.

Лидерите можат да го подобрат системот со тоа што повторувачката итност ќе ја третираат како податоци. Ако изданијата рутински бараат рачна интервенција, подобрете ја патеката на издавање. Ако истиот инцидент се враќа, инвестирајте во основната состојба наместо да го славите одговорот. Ако една личност постојано е тесното грло, создадете можности другите да ја научат областа.

Отпорноста е способност да се продолжи со учење

Најсилните дистрибуирани тимови не се стремат кон беспрекорен процес. Тие градат начин да забележат кога процесот не успева и да се приспособат пред да порасне цената. Ја прават сопственоста јасна, го зачувуваат контекстот, издаваат во набљудливи чекори и го третираат опоравувањето како дел од испораката.

Таквиот пристап носи повеќе од помалку прекини и помазни предавања. Тој создава работно место каде луѓето можат да вршат промислена работа без да бидат постојано онлајн, каде производите се подобруваат преку докази и каде успехот не зависи од неколку исцрпени експерти што држат сè заедно.

Надвор од грешките, тоа е вистинската архитектура: тим дизајниран да продолжи да испорачува кога условите се несовршени, бидејќи условите секогаш се такви.

Портрет на автор на блогот

Mihajlo

Јас сум Михајло - развивач поттикнат од љубопитност, дисциплина и постојаната желба да создадам нешто значајно. Споделувам увиди, упатства и бесплатни услуги за да им помогнам на другите да ја поедностават својата работа и да растат во постојано развивачкиот свет на софтверот и вештачката интелигенција.