scala: simplifying development at

71
simplifying development at guardian.co.uk Graham Tackley - @tackers architect, guardian.co.uk

Upload: graham-tackley

Post on 29-Jan-2018

5.272 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Scala: simplifying development at

simplifying development at guardian.co.uk

Graham Tackley - @tackersarchitect, guardian.co.uk

Page 2: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 3: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 4: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 5: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 6: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 7: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 8: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 9: Scala: simplifying development at

2006-2008: “R2”BackgroundDecisionImpactOutcomes

Page 10: Scala: simplifying development at

main java (185k)

main xml (35k)

velocity (72k)

test java (248k)

0 75,000 150,000 225,000 300,000

BackgroundDecisionImpactOutcomes

Page 11: Scala: simplifying development at

main java (185k)

main xml (35k)

velocity (72k)

test java (248k)

0 75,000 150,000 225,000 300,000

BackgroundDecisionImpactOutcomes

Page 12: Scala: simplifying development at

main java (185k)

main xml (35k)

velocity (72k)

test java (248k)

0 75,000 150,000 225,000 300,000

BackgroundDecisionImpactOutcomes

Page 13: Scala: simplifying development at

main java (185k)

main xml (35k)

velocity (72k)

test java (248k)

0 75,000 150,000 225,000 300,000

BackgroundDecisionImpactOutcomes

Page 14: Scala: simplifying development at

it’s ok, but...

BackgroundDecisionImpactOutcomes

Page 15: Scala: simplifying development at

2009BackgroundDecisionImpactOutcomes

Page 16: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 17: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 18: Scala: simplifying development at

Small Independent Componentsover

The Monolith

We value

BackgroundDecisionImpactOutcomes

Page 19: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 20: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 21: Scala: simplifying development at

Clarity of Intentover

Ceremonial Abstraction

We value

BackgroundDecisionImpactOutcomes

Page 22: Scala: simplifying development at

it’s ok, but...

BackgroundDecisionImpactOutcomes

Page 23: Scala: simplifying development at

Architectural Evolutionover

Architectural Revolution

We value

BackgroundDecisionImpactOutcomes

Page 24: Scala: simplifying development at

BackgroundDecision

ImpactOutcomes

Page 25: Scala: simplifying development at

BackgroundDecision

ImpactOutcomes

Page 26: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 27: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 28: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

it’s just bytecode;a war is a war

mixed scala & java projects work

huge drop in verbosityand boilerplate

same infrastructure: toolset, libraries, build, runtime

Page 29: Scala: simplifying development at

huge drop in verbosityand boilerplate

BackgroundDecisionImpactOutcomes

Page 30: Scala: simplifying development at

Craftover

Patterns

We value

BackgroundDecisionImpactOutcomes

Page 31: Scala: simplifying development at

http://content.guardianapis.comhttp://www.guardian.co.uk/open-platform

BackgroundDecisionImpactOutcomes

Page 32: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 33: Scala: simplifying development at

2010 20112009

Nov

java + guice + guice servlets + apache solr

BackgroundDecisionImpactOutcomes

Page 34: Scala: simplifying development at

2010 20112009

Jan

java + guice + guice servlets + apache solr

BackgroundDecisionImpactOutcomes

Page 35: Scala: simplifying development at

2010 20112009

Jan

BackgroundDecisionImpactOutcomes

Page 36: Scala: simplifying development at

2010 20112009

Jan

BackgroundDecisionImpactOutcomes

Page 37: Scala: simplifying development at

2010 20112009

Feb

scala + guice + guice servlets + apache solr

BackgroundDecisionImpactOutcomes

Page 38: Scala: simplifying development at

2010 20112009

May

scala + guice + guice servlets + apache solr

Live!

BackgroundDecisionImpactOutcomes

Page 39: Scala: simplifying development at

2010 20112009

July

scala + guice + guice servlets + apache solr

BackgroundDecisionImpactOutcomes

Page 40: Scala: simplifying development at

2010 20112009

July

scala + lift + apache solr

BackgroundDecisionImpactOutcomes

Page 41: Scala: simplifying development at

2010 20112009

July

scala + lift + apache solr

BackgroundDecisionImpactOutcomes

Page 42: Scala: simplifying development at

2010 20112009

Now

scala + lift + apache solr

BackgroundDecisionImpactOutcomes

Page 43: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 44: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 45: Scala: simplifying development at

The roll-it-out-to-everyone plan

BackgroundDecisionImpactOutcomes

Page 46: Scala: simplifying development at

The roll-it-out-to-everyone plan

BackgroundDecisionImpactOutcomes

Page 47: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

How did we learn?

Page 48: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

How did we learn?

Page 49: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

How did we learn?

Page 50: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

How did we learn?

Page 51: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

How did we learn?

Page 52: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

How did we learn?

Page 53: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 54: Scala: simplifying development at

Passionate Developersover

Turning the Crank

We value

BackgroundDecisionImpactOutcomes

Page 55: Scala: simplifying development at

Complexity vs Simplicity

BackgroundDecisionImpactOutcomes

Page 56: Scala: simplifying development at

BackgroundDecisionImpactOutcomes

Page 57: Scala: simplifying development at

Clarityover

Cleverness

We value

BackgroundDecisionImpactOutcomes

Page 58: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 59: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 60: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 61: Scala: simplifying development at

preference for immutability

scala console encourages viewing code as a living entity

awesome test frameworks

reduced need for complex frameworks

BackgroundDecisionImpact

Outcomes

Page 62: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 63: Scala: simplifying development at

love-hate relationship with sbt

tool support immature compared with java

compiler is slow

rate of change

BackgroundDecisionImpact

Outcomes

Page 64: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 65: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 66: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 67: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

Page 68: Scala: simplifying development at

BackgroundDecisionImpact

Outcomes

https://github.com/guardian/frontend-article

Page 69: Scala: simplifying development at

ClarityoverCleverness

BackgroundDecisionImpact

Outcomes

Small Independent Componentsover

The Monolith

Clarity of IntentoverCeremonial Abstraction

Craftover

Patterns

Passionate Developersover

Turning the Crank

Architectural Evolutionover

Architectural Revolution

Page 70: Scala: simplifying development at

ClarityoverCleverness

BackgroundDecisionImpact

Outcomes

Small Independent Componentsover

The Monolith

Clarity of IntentoverCeremonial Abstraction

Craftover

Patterns

Passionate Developersover

Turning the Crank

Architectural Evolutionover

Architectural Revolution