tv4 tech meetup

38
Hacking the Monolith SVT interaktiv TV4 Tech Meetup, 2014-11-26 Gereon Kåver @gereonk Rickard Andersson

Upload: gereon-kaver

Post on 13-Jul-2015

136 views

Category:

Software


0 download

TRANSCRIPT

Page 1: TV4 Tech meetup

Hacking the MonolithSVT interaktiv

TV4 Tech Meetup, 2014-11-26

Gereon Kåver@gereonk

Rickard Andersson

Page 2: TV4 Tech meetup

2009

2011

2014TEAM

Page 3: TV4 Tech meetup

[CMS]

≈120 manår kod

400 redaktörer4,7 m unika/vecka

Page 4: TV4 Tech meetup

Ny arkitektur!

Page 5: TV4 Tech meetup

Organisations- vs verksamhetsanpassad arkitekturFritt vs styrt teknikvalStandardiserade API:n

Gemensam drift, infrastruktur, loggning,…Fokus på lättrörlighet eller återanvändningDistribuerat eller centraliserat ägarskap

Page 6: TV4 Tech meetup

“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

Page 7: TV4 Tech meetup

Kaos?

Page 8: TV4 Tech meetup

Ny arkitektur! Ny kultur?

Page 9: TV4 Tech meetup

Från mål till produktion

Page 10: TV4 Tech meetup

Delaktighet

Page 11: TV4 Tech meetup

• Autonoma team

• Delaktighet

• Stort mandat/ansvar

Kultur

Page 12: TV4 Tech meetup

Kultur

• Automoma team

• Delaktighet

• Stort ansvar/mandat

Page 13: TV4 Tech meetup

Microservice Arkitektur

Page 14: TV4 Tech meetup

Arkitekturprinciper

KommunikationEngineering ProductivityOpt-in

Page 15: TV4 Tech meetup

Virtuella team

Page 16: TV4 Tech meetup

Öppenhets-kultur

Page 17: TV4 Tech meetup

Engineering Productivity

Page 18: TV4 Tech meetup

Opt-in

Page 19: TV4 Tech meetup

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

Page 20: TV4 Tech meetup

“Create greater ownership” - LinkedIn

Ge full kontroll, inga centrala regler

Page 21: TV4 Tech meetup

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.

Page 22: TV4 Tech meetup

Att en release lyckas ska vara normalfallet

Continuous Delivery

Page 23: TV4 Tech meetup

Avsaknad av plattform skapade en monolit

“Vi har redan en databasserver i produktion, vi lägger den där.”

Page 24: TV4 Tech meetup

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.

Page 25: TV4 Tech meetup

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).

Page 26: TV4 Tech meetup

http://martinfowler.com/articles/microservices.html

Page 27: TV4 Tech meetup

Hur liten är en microservice?

“Fits in my head” - Dan North

Page 28: TV4 Tech meetup

Microservices ger (nya) krav

1. Automatiserad deploy2. Monitorering3. Robusthet

Page 29: TV4 Tech meetup

Microservices på SVT

Deploy sker på Heroku eller internt på “Molnet”

Page 30: TV4 Tech meetup

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

Page 31: TV4 Tech meetup

Microservices på SVT - Riktlinjer

1. Vi bryter inte mot HTTP 1.12. Vi använd Rest,

Använd http://martinfowler.com/articles/richardsonMaturityModel.html till och med level 2.

3. Alla API:er dokumenteras med swagger.io4. Alla klienter ska sätta user-agent för att

underlätta spårbarhet5. Vi använder CORS (inte JSONP)

Page 32: TV4 Tech meetup

Microservices på SVT - Teknikstack

Språk- Java, JavaScript, (Spring Boot, Node.js)

Page 33: TV4 Tech meetup

Microservices på SVT - Teknikstack

Robusthet- Hystrix från Netflix. (Circuit Breakers,

Monitorering, Parallellisering)

Page 34: TV4 Tech meetup

Microservices på SVT - Teknikstack

Loggning: - Key-value via stdout till Logentries

Page 35: TV4 Tech meetup

Microservices på SVT - Teknikstack

Metrics - Newrelic och Graphite

Page 36: TV4 Tech meetup
Page 37: TV4 Tech meetup

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.

Page 38: TV4 Tech meetup

Vi söker alltid duktiga människorblogg.svt.se/testbild

Gereon Kåver [email protected]

@gereonk

Rickard Andersson [email protected]