Check also Antares insight post.
Breaking the Monolith (video)
Stefan Tilkov beskrev en arkitektur for smidighet (manøvrerbarhet) og hvordan man kan løse opp i en monolitt. Basert på hans og Innoq sin erfaring. Med monolitt mener han systemer med millioner kodelinjer - de svære systema som er så nedsylta i teknisk gjeld at de ikke lar seg endre eller utvide. “Nobody designs a monolith on purpose”, men det blir slik fordi man tenker at 1 prosjekt = 1 system.
I steden for å bygge ett stort system, så bygger man flere undersystem. Undersystema er isolerte fra hverandre, med: * egen persistens * intern, separat logikk * egen domenemodell * egen implementasjonsstrategi * eget UI * egen utvikling * begrenset interaksjon med andre system. * autonom produksjonssetting og drift
Nevnte 12 factor app, Dropwizard og reactive. Fra 12 factor: * separat, kjørbar prosess * tilgang via standard porter og protokoller * shared-nothing model * horisontal skalerbart * rask start og recovery
Arkitektur gjøres på 3 nivåer: * Domene-arkitekturen deler systemet i undersystemer, og sier hva som skal gjøres i hvert undersystem. * Makro-arkitekturen spesifiserer grensesnitt mellom undersystemene og omgivelsene. * Mikro-arkitektur internt for hvert undersystem er mest mulig fri.
Migration
1. Close for change 2. Enable integrateability (authentication and navigation) 3. Create new system for new feature 4. Copy and isolate