Tento seriál bude o tom, co si myslím, že nás jako skupinu profesionálů posunulo k lepšímu, a co nám nyní pomáhá lépe a rychleji tvořit. Domnívám se, že se jedná o jednu z mých hlavní rolí jako šéfa vývoje, CTO, R&D director – nebo jakkoli vznešeně ji chcete nazývat – za mne člověka, který udržuje big picture, přemýšlí do budoucna (strategicky) a vyznává profesionalitu a kvalitní spolupráci. Seriál jsem nazval evolucí úmyslně, protože chci ukázat i neúspěšné kroky, přes které jsme se posunuli dál, nebo nás vrátili na začátek. Není špatné udělat chybu, ale nepřiznat si ji a nepoučit se z ní. Pro lepší pochopení popíši v tomto úvodním článku prostředí, ve kterém žijeme, a základní rysy toho, co děláme.

Autor: Ladislav Novák
Datum: 13.11.2020, 5 min.

› Kdo jsme a co děláme?

Jsme česká softwarová společnost s vlastním produktem, kterým je IoT CLOUD. Do našeho CLOUDu připojujeme zařízení z dílny JABLOTRON, jako jsou alarmy, GPS jednotky, rekuperace, kotle,… Naše práce začíná u fyzického zařízení, kde řešíme komunikační protokol, rozhraní a končí u aplikací pro naše distributory, montážní partnery a koncové zákazníky (webové a mobilní aplikace pro iOS a Android OS).

Fundemántálním smyslem aplikací je umožnit uživatelům ovládání a viditelnost stavu jejich zařízení. Celé je to však zasazeno do ekosystému funkcí pro montážní partnery a distributory (generování konfiguračních sestav zařízení, tvorba nabídek, správa zákazníků, vzdálená diagnostika zařízení a jejich konfigurace, správa firem, vzdělávací modul, prodejní materiály, benefitní systém, …).

› Z naší historie

Vývoj začal cca v roce 2010 jako proof of concept ovládání Alarmu z Internetu = z webové aplikace na technologii PHP, MySQL, kde komunikaci mezi zařízeními zprostředkovávala část, které říkáme Real Time Zone psaná v C/C++. Po velkém úspěchu, kde jsme skutečně jako první prokopli v zabezpečovacím světě aplikace – v obecném měřítku IoT, jsme se potýkali s limity návrhu a množstvím požadavků na rozšiřující funkcionalitu (tvorba zmíněného ekosystému).

V roce 2013 došlo k prvnímu refactoringu, o kterém vám mnoho nenapíšu, protože jsem ještě nebyl součástí JCS, ale slibuji, že zjistím ze zaprášených knih a hlav detaily. Z doslechu vím, že došlo k přesunu business logiky z PHP do uložených procedur do MySQL…to be continued v evolučním článku Refactoring.

V roce 2015 jsme byli z velké části zasekaní a s velkým množství balvanů k odvalení, a to nemluvě o množství kostlivců z dob minulých. Započali jsme hovořit o refactoringu a strategii do budoucna, ze které se vyklubal “nový svět” postaven na mikroservisní architektuře s novými technologiemi TypeScript, GraphQL, Kafka, PostgreSQL, Node.js a Docker. Tím jsme získali možnosti pro nové projekty a funkce, které bylo možné jednoduše postavit stranou od světa PHP a zapojit větší množství programátorů. Pro lepší nábor a drive ve vývoji jsme v rámci tohoto “nového světa” vyčlenili úlohu věnující se velkým datům a jejich zpracování na technologii Java.

› Náš arzenál

Pro přehlednost vypíšu technologické stacky backendu, které máme v našem arzenálu:

  • PHP (business logika části tvořené od prvopočátku s cca 5,2TB MySQL mazlíčkem – nyní udržovaná a dle potřeby rozšiřovaná – značný technologický dluh)
  • TypeScript/Node.js (business logika pro nové funkcionality – microservices architecture)
  • Java/Spring (zpracování, filtrování, obohacování příchozích dat ze zařízení)
  • C/C++ (vysoce výkonná vstupní infrastruktura v C/C++ zajišťující komunikaci se stovkami tisíc zařízení nejen na bázi IP protokolu)
  • C# (konfigurační nástroje a aplikační interface mezi zařízeními a CLOUDem)
  • Delphi (vyzrálé a stabilní řešení konfiguračních nástrojů podporující několik řad zařízení)
  • Cypress, Appium, Postman (technologie pro testing API a UI)

Ke každému technologickému stacku máme 1 až 3 vývojové týmy čítající 2 – 5 kolegů. V době, kdy píšu článek je nás celkem ve vývoji 29 interních a 22 externích (včetně mě, scrum matera a testerů). Projekty mají různou velikost od malých vylepšení až po projekty, které zasahují do každé části CLOUDu, tj. i do každého týmu. Délka projektů je od řádu týdnů až i po jednotky let (a to už je pak dobrá výzva na motivaci).

› Shrnutí

Snahou předešlých odstavců bylo odhalit naše prostředí, které bez nadsázky můžeme označit jako komplexní, tj. jedná se o x technologických stacků a o x týmů, jejichž práce musí navazovat.

› Produkt, Vývoj a Provoz

I když se budu soustředit na evoluci ve vývoji, tak nedílnou součástí bude i produkt a provoz. Pokud bych měl definovat softwarový vývoj ve vyšší instanci, tak jej nazvu jako “svatá trojice” těchto tří částí. Takový trojrozměrný systém, kde každý dokáže maximálně dělat body, ale když se spojí v kvalitní spolupráci, … 

Na první pohled by se mohlo zdát, že spolupráce je sériová: produkt dodá vývoji, co má vyvíjet a vývoj předá provozu, ať provozují. Kvalitní spolupráce jde však všemi směry a s přesahy – bez vzájemného naslouchání a porozumění to fungovat nebude. Není to rozhodně my a oni!

Závěrem: pamatujete na uvedené technologie ^^? Tak toto a velkou část aplikací tvořených od 2010 musíme stále provozovat ve vysoké dostupnosti… ale o tom jindy.

Produkt-Vývoj-Provoz nejsou my a oni! Jsme trojrozměrný souřadnicový systém, který dokáže dělat ve 3D. 

Autor: Ladislav Novák
Datum: 13.11.2020, 5 min.

3