Co mě naučilo 5 let modulárního vývoje

Přednáší Honza Novotný z FG Forrest

Modularita je dobrá, když ...

  • stavíte platformu
  • vyvíjíte obří jedno-kontejnerovou aplikaci
  • chcete rozbít a postupně povyměňovat legacy kód
  • chcete dát příležitost dodavatelům 3tích stran
  • stavíte jednoúčelové aplikace
  • máte komponentovou architekturu vyššího řádu (SOA, ESB)
  • nemáte ambice tvořit znovupoužitelné portofolio kódu (NIH haters)

Začít se dá s málem

  • stavěli jsme na tom, co známe
  • neměli jsme žádné velké ambice
  • byli jsme si vědomi limitů

customizace Spring Frameworku

  • existují industriální standardy s letitou historií
  • řeší miliony věcí
  • jen jsou trochu komplikované

OSGI

Životní cyklus modulu

  1. Načtení konfigurace, inicializace Spring kontextu
  2. Kontrola dependencí, doplnění referencí v proxy objektech
  3. Zničení Spring kontextu, uvolnění zdrojů

Publikace API

Propagace událostí

Celé je to jen o ...

aplikaci pravidel objektového návrhu na vyšší úrovni.

Nejdůležitější je

  1. kvalitní izolace
    • tak aby nešla jednoduše obejít
    • když to obejít půjde, tak to někdo udělá
  2. standardizovaný způsob komunikace, a.k.a. publikace veřejného rozhraní
    • předávání zpráv (observer pattern)
    • přímá volání přes veřejná rozhraní
    • explicitní deklarace konzumovaných rozhraní
  3. určení odpovědnosti/velikosti modulů
    • jasně definovaný účel
    • malé moduly jdou proti low coupling
    • velké moduly jdou proti high cohesion

... a možnost změny za běhu aplikace se šikne!

Zapouzdřit modul ve všech ohledech

... je pěkný oříšek a zamotá vám hlavu, stejně jako nám.

  • evoluce datového modelu - verzování (ala Liquibase)
  • zapouzdření view do modulu (FreeMarker, JSP)
  • dynamická registrace servletů a filtrů (Servlet 3.0)
  • web frameworky s modularizací nepočítají

Ultimátní meta: mít možnost nastartovat stejný modul vícekrát.

Cesta je trnitá

Seznam použitých modulů na Runczech.com

Kdo napočítal 21 má u mě pivo!
Startup time 70s

Stojí to za tu námahu

  • rozbití monolitu a snížení provázanosti
  • zpřístupnění programování základního produktu firmy více vývojářům
  • lepší (vertikální) dělba práce
  • princip přirozeného výběru
  • variabilita díky kompozici
  • možnosti zásahů do aplikace za běhu

Aktuálně máme v repository 35+ znovupoužitelných modulů a nepočitatelně jednoúčelových zákaznických modulů.

Vyzkoušet si to můžete i na vlastní kůži.

www.edee-cms.cz/cs/partnertstvi

Děkuji za pozornost

Honza Novotný, FG Forrest