Бизнис

Own Your Product's Future by Architecting for Perpetual Evolution

Обезбедете ја иднината на вашиот производ со архитектура за трајна еволуција

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

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

Тоа значи да ја поседувате иднината на производот: да архитектурате за постојана еволуција.

Архитектурата е деловна одлука со долга меморија

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

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

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

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

Изградете граници околу причините за промена

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

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

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

Користете договори намерно

Интерфејсите, API шемите, миграциите на базата на податоци и форматите на настани се ветувања меѓу деловите на системот. Третирајте ги како минијатурни производи. Верзионирајте ги внимателно, документирајте ја намерата и избегнувајте изложување внатрешни структури на податоци како да се траен јавен јазик.

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

  • Капсулирајте ги нестабилните интеграции. Надворешните API-ја, добавувачите и деталите за инфраструктурата не треба да ја одредуваат формата на целиот ваш домен.
  • Направете ги стандардните поставки експлицитни. Скриените претпоставки за временски зони, дозволи, повторни обиди и цени подоцна стануваат скапи изненадувања.
  • Одржувајте ги миграциите повратни кога е практично. Проширете ги структурите на податоци, распоредете компатибилен код, мигрирајте ја употребата, па отстранете ги старите патеки откако ќе се докаже преминот.
  • Дизајнирајте за делумен неуспех. Мрежите откажуваат, позадинската работа се повторува, а трети страни одговараат бавно. Важните операции имаат потреба од јасно однесување за повторен обид и закрепнување.

Способноста за испорака е дел од архитектурата

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

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

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

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

Направете ја сопственоста видлива, особено на далечина

Оддалечените и дистрибуираните тимови ја прават слабата сопственост поочигледна. Прашање оставено во канал може да остане неодговорено затоа што секој претпоставува дека некој друг го разбира системот. Нејасен „платформски тим“ може да стане редица наместо извор на предност. Дијаграмите на архитектурата не можат да надоместат нејасна одговорност.

На секоја значајна област ѝ е потребен сопственик кој е одговорен за нејзината здравствена состојба, нејзините компромиси и нејзината иднина — не некој што мора лично да ја одобри секоја линија код. Добрата сопственост им дава на луѓето овластување да подобрат систем и обврска да ја објаснат неговата тековна состојба.

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

Дајте им простор на тимовите да ја подобрат работата

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

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

Изберете еволуција наместо досетливост

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

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

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

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

Mihajlo

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