Pavel Pytlík · vývoj a provoz systémů
← Realizace
V provozu · firemní systém Interaktivní demo

Případová studie

Enterprise platforma

Firemní systém pro úkoly, projekty, plánování vydání, dokumentaci a testování, ve kterém každý den pracují stovky lidí. Demo ukazuje systém pod názvem Delivery Hub se smyšlenými daty.

Výchozí stav

Jeden systém pro stovky lidí a několik druhů práce

Firma řídí v jednom systému úkoly, projekty, plánování vydání, dokumentaci i testování. Pracují v něm každý den stovky lidí, takže každá nepřehledná nebo pomalá obrazovka se násobí.

Základem je open-source platforma Redmine, kterou bylo potřeba výrazně rozšířit o funkce a podobu, jaké firma potřebuje.

Problém

Úpravy musí být rozsáhlé, a přitom udržitelné

Rozsáhlé úpravy standardního systému mají známé riziko: rozbijí se při přechodu na novou verzi a postupně z nich vznikne kód, kterému rozumí jen jeho autor.

Tady to bylo velmi konkrétní: moduly vznikaly na verzi Redmine 6.0.6, ale produkce běží na verzi 6.1.

Řešení

Modulární architektura nad společným jádrem

Navrhl jsem architekturu, ve které je každá oblast samostatný modul a všechny sdílejí stejné jádro a vzhled:

  • 6 modulů nad společným jádrem: úkoly, projekty, výkazy času a kalendář, Gantt a časová osa vydání, editor dokumentace a správa testů.
  • Jednotný design systém se světlým a tmavým režimem, takže všechny části vypadají a ovládají se stejně.
  • REST API pro napojení dalších systémů.
  • Kompatibilní vrstva: stejný kód běží na verzi 6.0.6 i na produkční 6.1.
  • Přes 330 stran dokumentace.

Výsledek

Výsledek v číslech

Stovky lidí v systému pracuje každý den
6 modulů nad společným jádrem a design systémem
50 000 řádků kódu přepsaných zhruba za 5 dní
330+ stran dokumentace

Modulární stavba drží úpravy oddělené od základu platformy, takže přechod na novou verzi nevyžaduje přepisovat celý systém.

Moje role

Architektura, vývoj a dokumentace

Navrhl jsem modulární architekturu, vyvinul moduly, jádro a design systém, připravil kompatibilní vrstvu pro produkční verzi a napsal dokumentaci.

Jak to běží

Jedno jádro, jeden vzhled, šest modulů

Moduly stojí na společném jádru a design systému. Každý lze rozvíjet samostatně.

Architektura 1 téma · 1 jádro · 6 pluginů
Pluginy
dh_issues

Úkoly přestavěné od detailu po editaci: tagy přes REST API, vlákna komentářů, úpravy přímo v seznamu.

dh_projects

Přehled projektů jako mřížka, seznam nebo strom. Připnutí a přehled vydání.

dh_additionals

Výkazy času, kalendář, aktivita a sdílené widgety.

dh_gantt

Gantt a časová osa vydání, vykreslená na klientu podle filtru projektu.

dh_editor

Modulární WYSIWYG editor: makra, vnořené bloky, tabulky.

dh_testing

Správa testů: případy, sady, plány a běhy, import z JSON.

staví na jádru
Jádro
dh_theme · téma

Design systém: tokeny, světlý a tmavý režim, velikosti ovládacích prvků, shell aplikace.

dh_core · základ

Skin hooky, serverové vyhledávání, hlášení chyb, sdílené patche modelů a controllerů.

staví na platformě
Platforma
Redmine 6 · Ruby on Rails · PostgreSQL · Propshaft

Moduly vznikly na Redmine 6.0.6, produkce běží na 6.1. Stejný kód funguje na obou verzích díky kompatibilní vrstvě; testovací pipeline proto ověřuje proti 6.1.

Sdílí všechny moduly dh_theme CSS design systém window.DeliveryHub JS widgety další moduly: dh_wiki, dh_labs

Technologie

Na čem systém stojí

Ruby on Rails Redmine 6 PostgreSQL REST API Propshaft design systém

Ukázky

Jak systém vypadá

Video a snímky z dema Delivery Hub se smyšlenými daty. Kliknutím obrázek zvětšíte.

Další rozvoj a provoz

Rozvoj po modulech

Modulární stavba umožňuje přidávat nové části bez zásahu do stávajících. Nad stejným jádrem vznikají další moduly, například pro wiki.

Změny před nasazením procházejí automatickými kontrolami proti produkční verzi 6.1. Jak tyto kontroly fungují, ukazuje AI vývojová pipeline.

Další krok

Řešíte podobný problém?

Domluvme si krátkou úvodní konzultaci zdarma. Probereme současný stav, výsledek, který očekáváte, a zda dává vývoj na míru ekonomický smysl.