SLIDE 1 Rampant Pragmatism
Growth & Change at Starling Bank
Dan Osborne - Web Technology Practice Lead Martin Dow - Engineering Lead for Core Banking
SLIDE 2
- 2014 - Founded
- UK mobile retail bank.
- Joint accounts, sole traders, limited companies.
- Loans, Euro payments, foreign currency payments.
- Internet Bank
- 2019 - 1 million customers, £1 billion on deposit
- 2020 - Europe? 2+ million customers? ...
Starling Bank
SLIDE 3
- Complexity: Essence vs Accident
- A Relational Core
- The Rest of the System
- Our Web Stack
- Our Ledger
- Starling’s Engineering Principles
Agenda
SLIDE 4
- Complexity: Essence vs Accident
- A Relational Core
- The Rest of the System
- Our Web Stack
- Our Ledger
- Starling’s Engineering Principles
Agenda
SLIDE 5
No Silver Bullet Essence and Accident in Sofuware Engineering
Frederick P. Brooks, Jr. - The Mythical Man-Month
SLIDE 6
“The fashioning of the complex conceptual structures that compose the abstract sofuware entity”
Essential Tasks
SLIDE 7
“The representation of these abstract entities in programming languages and the mapping of these into machine languages within space and speed constraints.”
Accidental Tasks
SLIDE 8
Spectrum of Complexity
SLIDE 9
- Complexity: Essence vs Accident
- A Relational Core
- The Rest of the System
- Our Web Stack
- Our Ledger
- Starling’s Engineering Principles
Agenda
SLIDE 10
“I don’t care how much you really love the syntax of your favourite programming language, it’s inferior to data in every way”
Rich Hickey (referencing Gerald Sussman)
SLIDE 11
Essential Complexity Data Modelling as System Design
SLIDE 12
Essential Complexity & Data Modelling
SLIDE 13
Flex the Model
SLIDE 14
Access Path Independence Relational Modelling
SLIDE 15 Postgres
- SQL: Access path independence
- Constraints: A declarative barrier
SLIDE 16
- Complexity: Essence vs Accident
- A Relational Core
- The Rest of the System
- Our Web Stack
- Our Ledger
- Starling’s Engineering Principles
Agenda
SLIDE 17
Spectrum of Complexity
SLIDE 18
Not a System Yet
SLIDE 19
Out of the Tar Pit
What not How
SLIDE 20
… you use Java?! But hang on...
SLIDE 21
SLIDE 22
SLIDE 23
SLIDE 24
SLIDE 25
SLIDE 26
FRP System Components
SLIDE 29
Observers & Feeders
SLIDE 30
- Complexity: Essence vs Accident
- A Relational Core
- Functional Relational Programming
- Our Web Stack
- Our Ledger
- Starling’s Engineering Principles
Agenda
SLIDE 31
React
SLIDE 32
SLIDE 33
P R O P S
SLIDE 35
“... provide a much clearer mapping between your ideas about how the program works and the code you actually write.”
Peter Seibel – Practical Common Lisp, 2005
Functional Programs
SLIDE 36
Redux
SLIDE 37
SLIDE 38
Redux
CHANGE STATE HERE
SLIDE 39
Web Development
SLIDE 40
SLIDE 41
Web Development … is FRP?!
SLIDE 42
- Complexity: Essence vs Accident
- A Relational Core
- Functional Relational Programming
- Our Web Stack
- Our Ledger
- Starling’s Engineering Principles
Agenda
SLIDE 43
A Bank is an Accounting Machine
SLIDE 44
Detailed & Diverse to Unified & Generic
A Bank is an Accounting Machine
SLIDE 45
Denormalisation & Projection of Essential Data
SLIDE 46
Denormalised Postings
SLIDE 47
Separate Services?
SLIDE 48 Self Contained Systems
- Reduce blast radius
- Avoid distributed monolith
- Minimise synchronous calls
- Each service has its own database
SLIDE 49
Splituing the (Relational) Core
SLIDE 50
- Each system as event source
- Database queues
Pushing Data Around
SLIDE 51
- Kafka?
- Postgres Logical Replication?
Pushing Data Around
SLIDE 52
- Complexity: Essence vs Accident
- A Relational Core
- Functional Relational Programming
- Our Web Stack
- Our Ledger
- Starling’s Engineering Principles
Agenda
SLIDE 53
Software Engineering The Art of Compromise
SLIDE 54
Pragmatism Moving Deliberately
SLIDE 55
Bets
SLIDE 56
Bets
SLIDE 57
Bets
SLIDE 58
Bets
SLIDE 59
Bets + Principles = Architecture
SLIDE 60
Optimise & Empower Bets + Principles = Architecture
SLIDE 61
Understandability Bets + Principles = Architecture
SLIDE 62
Simplicity & Consistency Bets + Principles = Architecture
SLIDE 63
Rampant Pragmatism Change & Growth at Starling Bank
SLIDE 64
SLIDE 65
“Most startups (and big companies) don’t need the tech stack they have.”
Vicki Boykis “You don’t need Kafka. Really.” Normcore Tech Newsletter
SLIDE 66 Thank you!
https:/ /developer.starlingbank.com https:/ /www.starlingbank.com/careers/engineering/
@dtpo @martin_dow @StarlingDev
SLIDE 67
https:/ /www.researchgate.net/publication/2204771 27_No_Silver_Bullet_Essence_and_Accidents_of_So ftware_Engineering
- A Relational Model for Large Shared Data Banks -
https:/ /www.semanticscholar.org/paper/A-Relation al-Model-for-Large-Shared-Data-Banks-Codd/c4bd 2f89039031f09b9ddec07e6d456b0d08aab4
https:/ /www.semanticscholar.org/paper/Out-of-the
- Tar-Pit-Moseley-Marks/41dc590506528e9f9d7650c
235b718014836a39d
https:/ /www.infoq.com/presentations/Simple-Made
SLIDE 68
- Object Oriented Software Construction -
https:/ /www.semanticscholar.org/paper/Object-Ori ented-Software-Construction-Meyer/5f0e007b600d 595b9c75cf3949d29b6ae21eed63
https:/ /www.bookdepository.com/Mythical-Man-M
- nth-Frederick-P-Brooks-Jr/9780201835953
- Practical Common Lisp -
https:/ /www.bookdepository.com/Practical-Commo n-Lisp-Peter-Seibel/9781430211617
- Applied Mathematics for Database Professionals
https://www.apress.com/gp/book/9781590597453