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

Hacking the Monolith

Avatar for David Hall 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.

Avatar for David Hall

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.