Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hacking the Monolith

David Hall
November 26, 2014

Hacking the Monolith

Gereon Kåver och Rickard Andersson från SVT berättar om hur de gått från att ständigt lägga till nya funktioner i sitt CMS numer bygger mer kring micro services.

David Hall

November 26, 2014
Tweet

More Decks by David Hall

Other Decks in Programming

Transcript

  1. Organisations- vs verksamhetsanpassad arkitektur Fritt vs styrt teknikval Standardiserade API:n

    Gemensam drift, infrastruktur, loggning,… Fokus på lättrörlighet eller återanvändning Distribuerat eller centraliserat ägarskap …
  2. “Any organization that designs a system (defined broadly) will produce

    a design whose structure is a copy of the organization's communication structure.” Mel Conway
  3. Produktägare tillsammans med teamen är ytterst ansvariga för att teamen

    gör teknikval som gör teamen långsiktigt effektiva. Teknikvalen måste gå i linje med de riktlinjer som finns i det här dokumentet för att underlätta rörlighet mellan team, förvaltning och långsiktig strategi. Teams ansvar och mandat
  4. Historia (Från 2 till 4 team) Bakgrund i Subversion och

    merge-hell. Ny kultur: • All incheckning i trunk • Feature-toggles • Release ofta. En gång i veckan, varje dag.
  5. Avsaknad av plattform skapade en monolit “Vi har redan en

    databasserver i produktion, vi lägger den där.”
  6. Skapa en plattform 1. Man ska på under 6 timmar

    kunna från en nyinstallerad laptop kunna ändra och deploya ett existerande projekt till produktion. 2. Det ska ta mindre än 2 timmar att skapa en ny tjänst med CI, övervakning, loggning.
  7. Microservices? 1. Single Responsibility Principle. Skall bara ändras av en

    anledning. 2. Körs i en egen process. 3. Kommunicera via språkoberoende API. 4. En förändring av en microservice skall inte påverka en annan (Decoupled).
  8. Microservices på SVT - Molnet - Docker. Paketera och kör

    tjänster - Helios. Orkestrering av tjänster. - Consul. System för configuration och service discovery. $> moln app create <your-username>/molnet-crash-course $> moln app image set anli20/molnet-crash-course google/python-hello:2.7 $> moln app targets set <your-username>/molnet-crash-course sto.molnet.svt.se=stomoln01-agent01 drs.molnet.svt.se=drsmoln01-agent01 $> moln app deploy <your-username>/molnet-crash-course:v3 $> moln app undeploy <your-username>/molnet-crash-course:v3
  9. Microservices på SVT - Riktlinjer 1. Vi bryter inte mot

    HTTP 1.1 2. Vi använd Rest, 
 Använd http://martinfowler.com/articles/richardsonMaturityModel.html till och med level 2. 3. Alla API:er dokumenteras med swagger.io 4. Alla klienter ska sätta user-agent för att underlätta spårbarhet 5. Vi använder CORS (inte JSONP)
  10. Microservices på SVT - Teknikstack Robusthet - Hystrix från Netflix.

    (Circuit Breakers, Monitorering, Parallellisering)
  11. Microservices på SVT - Framtiden • Automatisk hantering av last.

    (Peaks) • Red/Black deploy Knäcka monoliten: • Bygga nytt med hjälpa av ny arkitektur och plattform. Ta bort den gamla koden. • Skapa API:er framför CMS.