Jakub Ferschmann
6.11.2017

Budoucnost ve vývoji software je Data-Driven

Budoucnost ve vývoji software je Data-Driven

Trendem dnešních dnů v řízení softwarového vývoje je využívání uživatelských dat. V minulosti bylo vydávání nových verzí pod taktovkou tzv. test-driven, dnes je snaha o tzv. data-driven s ohledem na uživatele. Dříve se dělalo mnoho pre-production testování, dnes je více prostoru pro experimenty v produkčním prostředí a monitorování chování zákazníků.

Annotation

Today’s trend in software development management is the utilization of user data. In the past, the release of new versions was test-driven while today it is data-driven with regard to users. Previously, many pre-production testing has been done; today there is more room for experiments in the production environment and customer behavior monitoring.

Náš software vyvíjíme pro uživatele, kteří ho budou používat. Proto bychom měli vědět, co naši uživatelé skutečně chtějí. Jak chtějí naši aplikaci používat? Co se jim líbí a co naopak ne? Jedna z možností, jak tyto informace získat, je aktivně požádat o zpětnou vazbu. Zkušenosti však ukazují, že tato cesta není úplně ideální. Co kdybychom namísto toho použili vhodné monitorování našich uživatelů, jak naše aplikace používají a následně tato data zanalyzovali.

Data-driven business rozhodnutí

Na základě získaných dat bychom se mohli rozhodnout, co uživatelé skutečně chtějí a co naopak nechtějí. Například Facebook nejdříve implementuje jednoduchý prototyp nové funkcionality a následně jí zpřístupní malému procentu vybraných uživatelů, a sleduje její úspěšnost. Až teprve v okamžiku, kdy je prototyp úspěšný, investuje do skutečného vývoje. V opačném případě přijdou pouze o čas strávený tvorbou prototypu, a tím šetří své prostředky. Díky tomuto postupu investuje svoje prostředky jen do funkčností, které uživatelé skutečně chtějí. Uživatelská data, lze využít i k rozhodnutím vzešlých ze statistik nebo dokonce k odhadování chování uživatelů. Například Uber monitoruje uživatelská data k tomu, aby odhadl, kde uživatelé potřebují auto ještě před tím, než oni sami chtějí.

Data-driven testování a deployment

Pro dosažení možnosti testovat nové funkčnosti přímo na uživatelích je potřeba celý proces zautomatizovat. Vývojové týmy mají obvykle zautomatizované dodávky nových verzí až do samotného nasazení do produkčního prostředí, tzv. Continuous delivery. Samotné nasazení do produkčního prostředí už probíhá manuálně. Je totiž potřeba nově vydávanou aplikaci řádně otestovat, nejlépe velkou skupinou testerů, kteří ji na základě testovacích scénářů kompletně proklikají. Co kdybychom ale tento bod jednoduše přeskočili a testovali přímo na reálných uživatelích? Tím bychom celý proces dodávky nové verze zautomatizovali, tzv. Continuous deployment.

continuous-deployment

Následnou analýzou uživatelských dat bychom pak zjistili, jestli je možné novou verzi nechat, nebo se vrátit zpět k verzi předešlé. K tomu se používá souběh dvou produkčních prostředí, přičemž na jednom běží stabilní verze a na druhém verze nová. Pak stačí mezi těmito prostředími jen přepínat. Jedná se o takzvaný Blue/green deployment.

blue-green-deployment

Jak ale udržet vysokou kvalitu a nerozzlobit své uživatele v případě větších chyb či problémů v nové verzi? Jednou z možností je pustit novou verzi jen vybrané malé skupině uživatelů. Pokud bude nová verze bez problémů, tak se procento uživatelů bude zvyšovat. V opačném případě je nutné převést všechny uživatele zpět na předchozí verzi. Takto je zajištěno, že nasazení nové verze při negativním scénáři je pro většinu uživatelů bez dopadu. Tomuto postupu se říká Canary deployment/testing.

canary-testing

Facebook této strategie hojně využívá pro testování nových funkcionalit. Chuck Rossi, vedoucí Release Engineer řekl, že vše, co chce Facebook vydat v následujících 6 až 8 měsících, je již v kódu produkčního prostředí. V prvním kroku zpřístupní novou funkčnost pouze všem zaměstnancům. Následně množinu zvětší, například na 1% všech uživatelů, nebo na vybranou skupinu IP adres. Množství uživatelů je pak stále zvyšováno, dokud není dosaženo všech uživatelů.

gatekeeper
GateKeeper – nástroj, který používá Facebook pro zpřístupňování nových funkcionalit vybrané skupině uživatelů.

 

Firmy, jenž používají své produkty v jejich poslední stabilní verzi před tím, než je verze vydaná pro veřejnost, označují tento princip jako tzv. “dogfooding”, neboli jezení svého vlastního psího žrádla. Zaměstnance to motivuje k tomu, aby nedělali tolik chyb, a zároveň fungují jako první testeři. Google to posunul o kousek dál, protože jeho zaměstnanci používají své produkty dokonce v nestabilní verzi, tzv. “fishfooding”.

fishfooding-dogfooding
Google mapy ve verzi “fishfooding” a “dogfooding”.

 

Data-driven kvalita

Pro zlepšení kvality aplikace z uživatelských dat lze například využít monitoring jednotlivých částí kódu. Lze takto najít kusy kódu, které nebyly nikdy použity. Tento kus kódu je pak možné odstranit, nebo řešit příčinu, proč není použit. Také lze vhodným monitoringem uživatelských dat zlepšit výkon aplikace, či její části.

Analýza uživatelských dat nám může pomoci vyvíjet software snadněji, efektivněji a takový, jaký naši uživatelé skutečně chtějí.

Zdroj:

Inspirováno přednáškou The Future of Software is Data-Driven
Yovka Pencheva, WebExpo 2016

The Facebook Release Process, Chuck Rossi

Use Canary Deployments to Test in Production, Aslan Brooke

BlueGreenDeployment, Martin Fowler 

Eating your own dog food

Vaše emailová adresa nebude zveřejněna

Komentáře

Děkujeme za váš komentář
Další