Virtuální stavebnice, která řídí auto. I tak by se dala popsat nová ŠKODA Connect. Díky nové architektuře (Clean Architecture) je modulární, uživatelsky přizpůsobivá a rozšiřitelná o doplňky třetích stran. Poskytuje okamžitý přístup k informacím o jízdě a stavu auta, vytváří praktické statistiky, na jejichž základě pomáhá plánovat další trasy.

Nová ŠKODA Connect
168 176
řádků kódu přepsaných
z Javy do Kotlinu
řádků kódu přepsaných
z Javy do Kotlinu
103 965
zmodernizovaných
iOS řádků
zmodernizovaných
iOS řádků
13
nových modulů
nových modulů
25 000+
uživatelů denně
uživatelů denně
Od funkčního celku…
V roce 2017 jsme vytvořili původní aplikaci ŠKODA Connect. Ta umožňuje dálkové ovládání vozu ze smartphonu, poskytuje statistiky z předchozích jízd a pomáhá plánovat cesty. Funguje na široké škále jak vozů s různou výbavou, tak telefonů a chytrých hodinek s různými operačními systémy.



…vedla cesta…
O rok později přišlo nové zadání. ŠKODA byla s aplikací spokojená a chtěla ji rozvinout. Základní požadavky byly následující:
- Aplikace postavená na infrastruktuře již existující ŠKODY Connect
- Jejím základem má být modulární a flexibilní platforma, která umožní budoucí vývoj a doplňování o další funkce (i třetích stran)
- UX i UI má být konzistentní napříč všemi funkcemi včetně těch, co budou vznikat v budoucnu
- Kostra má umožňovat co nejrychlejší a nejsnazší vývoj paralelně s fungováním předcházející aplikace



…přes těžký terén…
- Během vývoje a přepisu do nové architektury zároveň probíhal vývoj nových funkcí v původním kódu. I v této chvíli jsme museli zachovat kompatibilitu napříč aplikací a zaručit stálé provázání v celistvý celek.
- Další problém se objevil s nastavením vývojového prostředí. Každý build proces musel proběhnout jak v eMan prostředí, tak v prostředí zákazníka, všichni používali jiné technologie a postupy. Přesto se nám povedlo najít kompatibilní cestu, která umožnila automatizovaný build i testy v obou prostředích zároveň.



…až k prvočásticím…
To obnášelo novou architekturu. Od základu. Jmenovitě…
- Převedení z Javy do Kotlinu
- Přepis iOS kódu
- MA Core – nové jádro s klíčovými funkcemi
- SDK – vrstva spojující jádro s koncovými funkcemi
a add-ons - Add-ons



…a zpátky dohromady
- Původní monolit aplikace jsme rozbili a složili do 13 modulů, u kterých další vývoj probíhá paralelně. Díky tomu je mnohem snažší průběžně dodávat nové funkce a vylepšení.
- Novou serverovou fukcionalitu nyní využívají desetisíce uživatelů denně.
