TV4 Tech meetup

Post on 13-Jul-2015

136 views 0 download

Tags:

transcript

Hacking the MonolithSVT interaktiv

TV4 Tech Meetup, 2014-11-26

Gereon Kåver@gereonk

Rickard Andersson

2009

2011

2014TEAM

[CMS]

≈120 manår kod

400 redaktörer4,7 m unika/vecka

Ny arkitektur!

Organisations- vs verksamhetsanpassad arkitekturFritt vs styrt teknikvalStandardiserade API:n

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

“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

Kaos?

Ny arkitektur! Ny kultur?

Från mål till produktion

Delaktighet

• Autonoma team

• Delaktighet

• Stort mandat/ansvar

Kultur

Kultur

• Automoma team

• Delaktighet

• Stort ansvar/mandat

Microservice Arkitektur

Arkitekturprinciper

KommunikationEngineering ProductivityOpt-in

Virtuella team

Öppenhets-kultur

Engineering Productivity

Opt-in

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

“Create greater ownership” - LinkedIn

Ge full kontroll, inga centrala regler

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.

Att en release lyckas ska vara normalfallet

Continuous Delivery

Avsaknad av plattform skapade en monolit

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

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.

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

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

Hur liten är en microservice?

“Fits in my head” - Dan North

Microservices ger (nya) krav

1. Automatiserad deploy2. Monitorering3. Robusthet

Microservices på SVT

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

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

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)

Microservices på SVT - Teknikstack

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

Microservices på SVT - Teknikstack

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

Monitorering, Parallellisering)

Microservices på SVT - Teknikstack

Loggning: - Key-value via stdout till Logentries

Microservices på SVT - Teknikstack

Metrics - Newrelic och Graphite

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.

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

Gereon Kåver gereon.kaver@svt.se

@gereonk

Rickard Andersson rickard.andersson@svt.se