SlideShare a Scribd company logo
1
10 years of microservices - and we
still haven’t slain that dragon!
NDC 2019-06-19
https://flic.kr/p/8nhwv3
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
Henning Spjelkavik
Senior software developer / Architect
Board of Directors
@spjelkavik
FINN travel - kart.finn.no
Kafka - Architecture - Tcpdump - SEO - Nodejs - Java - Smidig
Nybygg - Eiendom - Torget - Business center - DDD - Business cases -
Garbage collection - Linux - EWC - Jstack - Yourkit
Mexico, Morocco, Spain, France, Sweden, Poland, Chile & Hungary
Quiz
7
96%
8
1182
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
10
586
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
Data 2008
1 Sybase database (The Legacy DB)
(+ data warehouse)
Data 2019
22 postgres clusters, 128 pg databases
1337 kafka topics (564 private, 532 public)
37.000 messages/s (avg 24h)
1 Sybase database (The Legacy DB)
(+ data warehouse + data lake stuff)
Where are we today?
What did we learn?
What do we mean by "out of legacy"?
10 years - major events
Conclusion
Outline
10 years of breaking up the
monolith
- and we still haven’t found
what we’re looking for
Target 99.9% uptime / monthMay 2019: 99.99%. YTD 99.97%
1700M NOK revenue 2018
What did we learn?
“What problem are you trying to
solve?”
“Not all of a large system will be
well designed”
- Eric Evans
Out of legacy?
What do we mean?
https://flic.kr/p/2aUhP1q
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
https://flic.kr/p/dihGds
Out of legacy?
What do we mean?
Out of legacy - What (technical) problem does it solve?
1. Have to change the code and wait for deploy of the big monolith
2. Synchronous database call to legacy database
3. Synchronous call to a service, that calls the legacy database (Trans, New APIs,
Ad-lookup-server)
4. Asynchronous dependency on data from the legacy database
a. asking a replica/duplicate, or
b. consuming a stream
5. Conforming to the model, possible to map both ways (Ad-input-server)
6. Same meta model
a. e.g own idea on how we model an ad, but the service own their model
b. possibly one way mapping
7. Separate ways - no relationship
It may be poor business value in going all the way to level 7.
Timeline
2004
FinnTech launched internationally
The monolith called iAd
Java & stored procedures in Sybase
Presentation
Business logic
Data access
Sybase
2006
FINN kart (Maps) outside the monolith
2009
First “modules” were separated out
Presentation
Business Logic - iAd
Data access – stored procedures
Login User
Sybase
SSO
Out of legacy - What (technical) problem does it solve?
1. Have to change the code and wait for deploy of the big monolith
2. Synchronous database call to legacy database
3. Synchronous call to a service, that calls the legacy database (Trans, New APIs,
Ad-lookup-server)
4. Asynchronous dependency on data from the legacy database
a. asking a replica/duplicate, or
b. consuming a stream
5. Conforming to the model, possible to map both ways (Ad-input-server)
6. Same meta model
a. e.g own idea on how we model an ad, but the service own their model
b. possibly one way mapping
7. Separate ways - no relationship
2012-
Platform project;
Later turned into new Order, Product, Billing and Ad-insertion
Mobile web
2014
Freeze of the legacy (iAd) - nothing new should be made here
Officially renamed “microservices”
Requirements / definition:
https://confluence.schibsted.io/pages/viewpage.action?pageId=23581198
Sam Newman
What is a microservice? Requirements (2014)
- Deployed independently of other services
- Have a single owner (team)
- Ownership of the data it needs (own database)
=> avoid integration through the database
- Have an API - or listen/publish messages
- Healthcheck
- Monitoring
- Proper API versioning - can be upgraded without requiring the clients to
update
- Don’t crash even if dependencies are down
Out of legacy - What (technical) problem does it solve?
1. Have to change the code and wait for deploy of the big monolith
2. Synchronous database call to legacy database
3. Synchronous call to a service, that calls the legacy database (Trans, New APIs,
Ad-lookup-server)
4. Asynchronous dependency on data from the legacy database
a. asking a replica/duplicate, or
b. consuming a stream
5. Conforming to the model, possible to map both ways (Ad-input-server)
6. Same meta model
a. e.g own idea on how we model an ad, but the service own their model
b. possibly one way mapping
7. Separate ways - no relationship
The FINN “Death Star - 2015” - a Distributed Monolith?
FINN consisted of more than 200+
highly coupled services (RPC), resulting
in a “distributed monolith”
Udi Dahan,
Eric Evans,
Fred George
2016
New Order, Product, Billing and Ad-insertion in place for all direct customers
(not Partners) - integrating over Kafka
95% of the volume; only 30% of the revenue is running on new stacks
Data is available on Kafka from Legacy
Responsive web site (for end users) - outside iAd
Out of Sybase project (cancelled after 6 months)
Out of legacy - What (technical) problem does it solve?
1. Have to change the code and wait for deploy of the big monolith
2. Synchronous database call to legacy database
3. Synchronous call to a service, that calls the legacy database (Trans, New APIs,
Ad-lookup-server)
4. Asynchronous dependency on data from the legacy database
a. asking a replica/duplicate, or
b. consuming a stream
5. Conforming to the model, possible to map both ways (Ad-input-server)
6. Same meta model
a. e.g own idea on how we model an ad, but the service own their model
b. possibly one way mapping
7. Separate ways - no relationship
2017
We want to move to the cloud
Fiaas - our deployment platform built on kubernetes
2018
New business center (“control panel”)
Make it look good; fetch data where
it’s needed
Packages (for direct customers)
GDPR
Sybase
Postgres Postgres Postgres
Kafka
GDPR
Take out and delete - simplified view
Kafka
Privacy broker
(Saga per user request)
User
Recommendation
Messaging
Travel
+++
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
Moving to the cloud
The elephant in the data center: Sybase on Sparc/Solaris
“Spinning rust is dead. SANs are now a complete waste of time.”
- Adrian Cockcroft, 2008
Sybase migrated off Sparc/Solaris to
Linux
Moving main services towards a public
cloud;
93% of apps already in kubernetes
2019
Sybase
Postgres Postgres Postgres
Kafka
10 years of microservices at finn.no  - why is that dragon still here  (ndc oslo 2019)
Learnings
It did not go as fast as we dreamed.
Have a roadmap, but meanwhile make it better to live with what exists.
Encourage and enable teams to make services on the outside
If every client (downstream) need to rewrite to realise benefits - when can you realistically
be finished? Is it still worth the effort? (or at what speed)
Good Devops/ “Accelerate”-metrics enables! (Lead Time, Deployment Frequency, Mean Time
to Restore)
There wasn’t (yet) a strong
business need of moving out of
the legacy
Done differently
Adjust expectations: complicated system; - accept where you are
it takes a looong time to “rewrite everything”.
Use lipstick to offer customer/user/business value today, accept some kludges
Consider to separate parts of the database first (Sam Newman)
Be aware of “this time we’re gonna do it right”-syndrome or NIH
We have a direction
and a roadmap out of legacy
https://flic.kr/p/2p8WCx
Henning Spjelkavik
@spjelkavik
Remember:
“Not all of a large system will be well designed” - Eric Evans
“Successful visionaries start from where they are, what they have, and
what their customers have.” - Tom Gilb
“What problem are you trying to solve?”
Thank you!

More Related Content

PPTX
Neo4j GraphTalks - Einführung in Graphdatenbanken
Neo4j
 
PDF
Fast Data – the New Big Data
VoltDB
 
PDF
Using a Fast Operational Database to Build Real-time Streaming Aggregations
VoltDB
 
PPTX
How to Build Real-Time Streaming Analytics with an In-memory, Scale-out SQL D...
VoltDB
 
PDF
Tracking crime as it occurs with apache phoenix, apache hbase and apache nifi
Timothy Spann
 
PDF
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...
VoltDB
 
PPTX
Securing and governing a multi-tenant data lake within the financial industry
DataWorks Summit
 
PDF
Real-time Big Data Analytics in the IBM SoftLayer Cloud with VoltDB
VoltDB
 
Neo4j GraphTalks - Einführung in Graphdatenbanken
Neo4j
 
Fast Data – the New Big Data
VoltDB
 
Using a Fast Operational Database to Build Real-time Streaming Aggregations
VoltDB
 
How to Build Real-Time Streaming Analytics with an In-memory, Scale-out SQL D...
VoltDB
 
Tracking crime as it occurs with apache phoenix, apache hbase and apache nifi
Timothy Spann
 
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...
VoltDB
 
Securing and governing a multi-tenant data lake within the financial industry
DataWorks Summit
 
Real-time Big Data Analytics in the IBM SoftLayer Cloud with VoltDB
VoltDB
 

What's hot (20)

PPTX
Apache Kafka and the Data Mesh | Ben Stopford and Michael Noll, Confluent
HostedbyConfluent
 
PDF
The State of Streaming Analytics: The Need for Speed and Scale
VoltDB
 
PPTX
Choosing the Right Open Source Database
All Things Open
 
PPTX
Lessons Learned Migrating from IBM BigInsights to Hortonworks Data Platform
DataWorks Summit
 
PPTX
Architecting Analytic Pipelines on GCP - Chicago Cloud Conference 2020
Mariano Gonzalez
 
PPTX
Highly configurable and extensible data processing framework at PubMatic
DataWorks Summit
 
PPTX
How leading financial services organisations are winning with tech
MongoDB
 
PPTX
Data Process Systems, connecting everything
DataWorks Summit/Hadoop Summit
 
PDF
Big Data Kappa | Mark Senerth, The Walt Disney Company - DMED, Data Tech
HostedbyConfluent
 
PDF
Data Mesh in Practice - How Europe's Leading Online Platform for Fashion Goes...
Dr. Arif Wider
 
PPTX
The Convergence of Reporting and Interactive BI on Hadoop
DataWorks Summit
 
PDF
How to Build Fast Data Applications: Evaluating the Top Contenders
VoltDB
 
PDF
Enforcing Schemas with Kafka Connect | David Navalho, Marionete and Anatol Lu...
HostedbyConfluent
 
PDF
Webinar Data Mesh - Part 3
Jeffrey T. Pollock
 
PPTX
Kafka Connect and KSQL: Useful Tools in Migrating from a Legacy System to Kaf...
confluent
 
PPTX
Druid Overview by Rachel Pedreschi
Brian Olsen
 
PDF
Postgres Vision 2018: Your Migration Path - BinckBank Case Study
EDB
 
PDF
Building Event-Driven Microservices using Kafka Streams (Stathis Souris, Thou...
London Microservices
 
PDF
Apache Kafka® Use Cases for Financial Services
confluent
 
Apache Kafka and the Data Mesh | Ben Stopford and Michael Noll, Confluent
HostedbyConfluent
 
The State of Streaming Analytics: The Need for Speed and Scale
VoltDB
 
Choosing the Right Open Source Database
All Things Open
 
Lessons Learned Migrating from IBM BigInsights to Hortonworks Data Platform
DataWorks Summit
 
Architecting Analytic Pipelines on GCP - Chicago Cloud Conference 2020
Mariano Gonzalez
 
Highly configurable and extensible data processing framework at PubMatic
DataWorks Summit
 
How leading financial services organisations are winning with tech
MongoDB
 
Data Process Systems, connecting everything
DataWorks Summit/Hadoop Summit
 
Big Data Kappa | Mark Senerth, The Walt Disney Company - DMED, Data Tech
HostedbyConfluent
 
Data Mesh in Practice - How Europe's Leading Online Platform for Fashion Goes...
Dr. Arif Wider
 
The Convergence of Reporting and Interactive BI on Hadoop
DataWorks Summit
 
How to Build Fast Data Applications: Evaluating the Top Contenders
VoltDB
 
Enforcing Schemas with Kafka Connect | David Navalho, Marionete and Anatol Lu...
HostedbyConfluent
 
Webinar Data Mesh - Part 3
Jeffrey T. Pollock
 
Kafka Connect and KSQL: Useful Tools in Migrating from a Legacy System to Kaf...
confluent
 
Druid Overview by Rachel Pedreschi
Brian Olsen
 
Postgres Vision 2018: Your Migration Path - BinckBank Case Study
EDB
 
Building Event-Driven Microservices using Kafka Streams (Stathis Souris, Thou...
London Microservices
 
Apache Kafka® Use Cases for Financial Services
confluent
 
Ad

Similar to 10 years of microservices at finn.no - why is that dragon still here (ndc oslo 2019) (20)

PDF
A microservice approach for legacy modernisation
luisw19
 
PPTX
Introduction to Serverless. Oracle Fn Project.
Rolando Carrasco
 
PDF
KAFKA Summit 2021: From legacy systems to microservices and back.pdf
Andrea Gioia
 
PDF
Digital integration hub: Why, what and how?
confluent
 
PPTX
Converged Infrastructures on Kubernetes with Kubevirt
kloia
 
PPTX
Slide Structure
VenkatSubramani11
 
PPTX
Digital Transformation and Application Decommissioning - THE RESEARCH
Tom Rieger
 
PDF
Legacy system modernization: Moving to Services Platforms
Lebanese Library Association
 
PDF
Oracle Systems _ Kevin Mcisaac _ The IT Landscape has changes - have you_.pdf
InSync2011
 
PDF
White paper Fujitsu Dynamic Infrastructures- a consistent approach to meeting...
Kingfin Enterprises Limited
 
PPTX
How to integrate legacy systems within a modern polyglot and event driven arc...
Andrea Gioia
 
PPTX
Legacy Systems: Key Concepts and Modernization
AvenDATA
 
PDF
Mobile Services & E-Services Case Study By Osama Abushaban
Osama Abushaban
 
PDF
GHC17 Abstract: From Monolith to Microservices
PaulaPaulSlides
 
PPT
20090911 virtualizationandcloud
Meenal Joshi
 
PPT
20090911 virtualizationandcloud
Supratik Ghatak
 
PPTX
You Don’t Want to Build a Serverless Monolith - Danilo Poccia - Codemotion Am...
Codemotion
 
PDF
Legacy Systems: Overview, Benefits & Modernization
AvenDATA
 
PDF
Getting Microservices and Legacy to Play Nicely Together with Event-Driven Ar...
VMware Tanzu
 
A microservice approach for legacy modernisation
luisw19
 
Introduction to Serverless. Oracle Fn Project.
Rolando Carrasco
 
KAFKA Summit 2021: From legacy systems to microservices and back.pdf
Andrea Gioia
 
Digital integration hub: Why, what and how?
confluent
 
Converged Infrastructures on Kubernetes with Kubevirt
kloia
 
Slide Structure
VenkatSubramani11
 
Digital Transformation and Application Decommissioning - THE RESEARCH
Tom Rieger
 
Legacy system modernization: Moving to Services Platforms
Lebanese Library Association
 
Oracle Systems _ Kevin Mcisaac _ The IT Landscape has changes - have you_.pdf
InSync2011
 
White paper Fujitsu Dynamic Infrastructures- a consistent approach to meeting...
Kingfin Enterprises Limited
 
How to integrate legacy systems within a modern polyglot and event driven arc...
Andrea Gioia
 
Legacy Systems: Key Concepts and Modernization
AvenDATA
 
Mobile Services & E-Services Case Study By Osama Abushaban
Osama Abushaban
 
GHC17 Abstract: From Monolith to Microservices
PaulaPaulSlides
 
20090911 virtualizationandcloud
Meenal Joshi
 
20090911 virtualizationandcloud
Supratik Ghatak
 
You Don’t Want to Build a Serverless Monolith - Danilo Poccia - Codemotion Am...
Codemotion
 
Legacy Systems: Overview, Benefits & Modernization
AvenDATA
 
Getting Microservices and Legacy to Play Nicely Together with Event-Driven Ar...
VMware Tanzu
 
Ad

More from Henning Spjelkavik (20)

PDF
Hles 2021 Digital transformation - How to use digital tools to improve our ev...
Henning Spjelkavik
 
PDF
Digital techlunsj hos FINN.no 2020-06-10
Henning Spjelkavik
 
PDF
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018
Henning Spjelkavik
 
PDF
An approach to it in a high level event - IOF HLES 2017
Henning Spjelkavik
 
PPTX
Smidig 2016 - Er ledelse verdifullt likevel?
Henning Spjelkavik
 
PDF
101 ways to configure kafka - badly
Henning Spjelkavik
 
PDF
101 ways to configure kafka - badly (Kafka Summit)
Henning Spjelkavik
 
PDF
Geomatikkdagene 2016 - Kart på FINN.no
Henning Spjelkavik
 
PDF
IT for Event Directors
Henning Spjelkavik
 
PDF
101 mistakes FINN.no has made with Kafka (Baksida meetup)
Henning Spjelkavik
 
PPTX
Hvorfor vi bør brenne gammel management litteratur
Henning Spjelkavik
 
PPTX
How we sleep well at night using Hystrix at Finn.no
Henning Spjelkavik
 
PDF
HLES 2015 It in a high level event
Henning Spjelkavik
 
PDF
Strategisk design med "Impact Mapping"
Henning Spjelkavik
 
PDF
Smidig 2014 - Impact Mapping - Levér det som teller
Henning Spjelkavik
 
PDF
Kart på FINN.no - Fra CGI til slippy map
Henning Spjelkavik
 
PDF
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014
Henning Spjelkavik
 
PDF
Misbruk av målstyring
Henning Spjelkavik
 
PDF
Jz2010 Hvordan enkel analyse kan øke stabiliteten og hastigheten
Henning Spjelkavik
 
PDF
Fornebuløpet - Brosjyre
Henning Spjelkavik
 
Hles 2021 Digital transformation - How to use digital tools to improve our ev...
Henning Spjelkavik
 
Digital techlunsj hos FINN.no 2020-06-10
Henning Spjelkavik
 
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018
Henning Spjelkavik
 
An approach to it in a high level event - IOF HLES 2017
Henning Spjelkavik
 
Smidig 2016 - Er ledelse verdifullt likevel?
Henning Spjelkavik
 
101 ways to configure kafka - badly
Henning Spjelkavik
 
101 ways to configure kafka - badly (Kafka Summit)
Henning Spjelkavik
 
Geomatikkdagene 2016 - Kart på FINN.no
Henning Spjelkavik
 
IT for Event Directors
Henning Spjelkavik
 
101 mistakes FINN.no has made with Kafka (Baksida meetup)
Henning Spjelkavik
 
Hvorfor vi bør brenne gammel management litteratur
Henning Spjelkavik
 
How we sleep well at night using Hystrix at Finn.no
Henning Spjelkavik
 
HLES 2015 It in a high level event
Henning Spjelkavik
 
Strategisk design med "Impact Mapping"
Henning Spjelkavik
 
Smidig 2014 - Impact Mapping - Levér det som teller
Henning Spjelkavik
 
Kart på FINN.no - Fra CGI til slippy map
Henning Spjelkavik
 
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014
Henning Spjelkavik
 
Misbruk av målstyring
Henning Spjelkavik
 
Jz2010 Hvordan enkel analyse kan øke stabiliteten og hastigheten
Henning Spjelkavik
 
Fornebuløpet - Brosjyre
Henning Spjelkavik
 

Recently uploaded (20)

PPTX
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
Dr. Rahul Kumar
 
PDF
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hatem173148
 
PDF
Principles of Food Science and Nutritions
Dr. Yogesh Kumar Kosariya
 
PPTX
Edge to Cloud Protocol HTTP WEBSOCKET MQTT-SN MQTT.pptx
dhanashri894551
 
PPT
SCOPE_~1- technology of green house and poyhouse
bala464780
 
PPTX
Lesson 3_Tessellation.pptx finite Mathematics
quakeplayz54
 
PDF
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
PDF
BRKDCN-2613.pdf Cisco AI DC NVIDIA presentation
demidovs1
 
PDF
2010_Book_EnvironmentalBioengineering (1).pdf
EmilianoRodriguezTll
 
PDF
Cryptography and Information :Security Fundamentals
Dr. Madhuri Jawale
 
PDF
6th International Conference on Artificial Intelligence and Machine Learning ...
gerogepatton
 
PPTX
EE3303-EM-I 25.7.25 electrical machines.pptx
Nagen87
 
PDF
오픈소스 LLM, vLLM으로 Production까지 (Instruct.KR Summer Meetup, 2025)
Hyogeun Oh
 
PDF
flutter Launcher Icons, Splash Screens & Fonts
Ahmed Mohamed
 
PPTX
Simulation of electric circuit laws using tinkercad.pptx
VidhyaH3
 
PDF
Queuing formulas to evaluate throughputs and servers
gptshubham
 
PPT
Ppt for engineering students application on field effect
lakshmi.ec
 
PPTX
Chapter----five---Resource Recovery.pptx
078bce110prashant
 
PPTX
Azure-DevOps-Training presentation downloadable
NamanGoyal428595
 
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
Dr. Rahul Kumar
 
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hatem173148
 
Principles of Food Science and Nutritions
Dr. Yogesh Kumar Kosariya
 
Edge to Cloud Protocol HTTP WEBSOCKET MQTT-SN MQTT.pptx
dhanashri894551
 
SCOPE_~1- technology of green house and poyhouse
bala464780
 
Lesson 3_Tessellation.pptx finite Mathematics
quakeplayz54
 
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
BRKDCN-2613.pdf Cisco AI DC NVIDIA presentation
demidovs1
 
2010_Book_EnvironmentalBioengineering (1).pdf
EmilianoRodriguezTll
 
Cryptography and Information :Security Fundamentals
Dr. Madhuri Jawale
 
6th International Conference on Artificial Intelligence and Machine Learning ...
gerogepatton
 
EE3303-EM-I 25.7.25 electrical machines.pptx
Nagen87
 
오픈소스 LLM, vLLM으로 Production까지 (Instruct.KR Summer Meetup, 2025)
Hyogeun Oh
 
flutter Launcher Icons, Splash Screens & Fonts
Ahmed Mohamed
 
Simulation of electric circuit laws using tinkercad.pptx
VidhyaH3
 
Queuing formulas to evaluate throughputs and servers
gptshubham
 
Ppt for engineering students application on field effect
lakshmi.ec
 
Chapter----five---Resource Recovery.pptx
078bce110prashant
 
Azure-DevOps-Training presentation downloadable
NamanGoyal428595
 

10 years of microservices at finn.no - why is that dragon still here (ndc oslo 2019)

  • 1. 1 10 years of microservices - and we still haven’t slain that dragon! NDC 2019-06-19
  • 5. Henning Spjelkavik Senior software developer / Architect Board of Directors @spjelkavik FINN travel - kart.finn.no Kafka - Architecture - Tcpdump - SEO - Nodejs - Java - Smidig Nybygg - Eiendom - Torget - Business center - DDD - Business cases - Garbage collection - Linux - EWC - Jstack - Yourkit Mexico, Morocco, Spain, France, Sweden, Poland, Chile & Hungary
  • 13. Data 2008 1 Sybase database (The Legacy DB) (+ data warehouse)
  • 14. Data 2019 22 postgres clusters, 128 pg databases 1337 kafka topics (564 private, 532 public) 37.000 messages/s (avg 24h) 1 Sybase database (The Legacy DB) (+ data warehouse + data lake stuff)
  • 15. Where are we today? What did we learn? What do we mean by "out of legacy"? 10 years - major events Conclusion Outline
  • 16. 10 years of breaking up the monolith - and we still haven’t found what we’re looking for
  • 17. Target 99.9% uptime / monthMay 2019: 99.99%. YTD 99.97% 1700M NOK revenue 2018
  • 18. What did we learn?
  • 19. “What problem are you trying to solve?”
  • 20. “Not all of a large system will be well designed” - Eric Evans
  • 21. Out of legacy? What do we mean?
  • 25. Out of legacy? What do we mean?
  • 26. Out of legacy - What (technical) problem does it solve? 1. Have to change the code and wait for deploy of the big monolith 2. Synchronous database call to legacy database 3. Synchronous call to a service, that calls the legacy database (Trans, New APIs, Ad-lookup-server) 4. Asynchronous dependency on data from the legacy database a. asking a replica/duplicate, or b. consuming a stream 5. Conforming to the model, possible to map both ways (Ad-input-server) 6. Same meta model a. e.g own idea on how we model an ad, but the service own their model b. possibly one way mapping 7. Separate ways - no relationship It may be poor business value in going all the way to level 7.
  • 28. 2004 FinnTech launched internationally The monolith called iAd Java & stored procedures in Sybase Presentation Business logic Data access Sybase
  • 29. 2006 FINN kart (Maps) outside the monolith
  • 30. 2009 First “modules” were separated out Presentation Business Logic - iAd Data access – stored procedures Login User Sybase SSO
  • 31. Out of legacy - What (technical) problem does it solve? 1. Have to change the code and wait for deploy of the big monolith 2. Synchronous database call to legacy database 3. Synchronous call to a service, that calls the legacy database (Trans, New APIs, Ad-lookup-server) 4. Asynchronous dependency on data from the legacy database a. asking a replica/duplicate, or b. consuming a stream 5. Conforming to the model, possible to map both ways (Ad-input-server) 6. Same meta model a. e.g own idea on how we model an ad, but the service own their model b. possibly one way mapping 7. Separate ways - no relationship
  • 32. 2012- Platform project; Later turned into new Order, Product, Billing and Ad-insertion Mobile web
  • 33. 2014 Freeze of the legacy (iAd) - nothing new should be made here Officially renamed “microservices” Requirements / definition: https://confluence.schibsted.io/pages/viewpage.action?pageId=23581198
  • 35. What is a microservice? Requirements (2014) - Deployed independently of other services - Have a single owner (team) - Ownership of the data it needs (own database) => avoid integration through the database - Have an API - or listen/publish messages - Healthcheck - Monitoring - Proper API versioning - can be upgraded without requiring the clients to update - Don’t crash even if dependencies are down
  • 36. Out of legacy - What (technical) problem does it solve? 1. Have to change the code and wait for deploy of the big monolith 2. Synchronous database call to legacy database 3. Synchronous call to a service, that calls the legacy database (Trans, New APIs, Ad-lookup-server) 4. Asynchronous dependency on data from the legacy database a. asking a replica/duplicate, or b. consuming a stream 5. Conforming to the model, possible to map both ways (Ad-input-server) 6. Same meta model a. e.g own idea on how we model an ad, but the service own their model b. possibly one way mapping 7. Separate ways - no relationship
  • 37. The FINN “Death Star - 2015” - a Distributed Monolith? FINN consisted of more than 200+ highly coupled services (RPC), resulting in a “distributed monolith”
  • 39. 2016 New Order, Product, Billing and Ad-insertion in place for all direct customers (not Partners) - integrating over Kafka 95% of the volume; only 30% of the revenue is running on new stacks Data is available on Kafka from Legacy Responsive web site (for end users) - outside iAd Out of Sybase project (cancelled after 6 months)
  • 40. Out of legacy - What (technical) problem does it solve? 1. Have to change the code and wait for deploy of the big monolith 2. Synchronous database call to legacy database 3. Synchronous call to a service, that calls the legacy database (Trans, New APIs, Ad-lookup-server) 4. Asynchronous dependency on data from the legacy database a. asking a replica/duplicate, or b. consuming a stream 5. Conforming to the model, possible to map both ways (Ad-input-server) 6. Same meta model a. e.g own idea on how we model an ad, but the service own their model b. possibly one way mapping 7. Separate ways - no relationship
  • 41. 2017 We want to move to the cloud Fiaas - our deployment platform built on kubernetes
  • 42. 2018 New business center (“control panel”) Make it look good; fetch data where it’s needed Packages (for direct customers) GDPR Sybase Postgres Postgres Postgres Kafka
  • 43. GDPR Take out and delete - simplified view Kafka Privacy broker (Saga per user request) User Recommendation Messaging Travel +++
  • 45. Moving to the cloud The elephant in the data center: Sybase on Sparc/Solaris
  • 46. “Spinning rust is dead. SANs are now a complete waste of time.” - Adrian Cockcroft, 2008
  • 47. Sybase migrated off Sparc/Solaris to Linux Moving main services towards a public cloud; 93% of apps already in kubernetes 2019 Sybase Postgres Postgres Postgres Kafka
  • 49. Learnings It did not go as fast as we dreamed. Have a roadmap, but meanwhile make it better to live with what exists. Encourage and enable teams to make services on the outside If every client (downstream) need to rewrite to realise benefits - when can you realistically be finished? Is it still worth the effort? (or at what speed) Good Devops/ “Accelerate”-metrics enables! (Lead Time, Deployment Frequency, Mean Time to Restore)
  • 50. There wasn’t (yet) a strong business need of moving out of the legacy
  • 51. Done differently Adjust expectations: complicated system; - accept where you are it takes a looong time to “rewrite everything”. Use lipstick to offer customer/user/business value today, accept some kludges Consider to separate parts of the database first (Sam Newman) Be aware of “this time we’re gonna do it right”-syndrome or NIH
  • 52. We have a direction and a roadmap out of legacy
  • 54. Henning Spjelkavik @spjelkavik Remember: “Not all of a large system will be well designed” - Eric Evans “Successful visionaries start from where they are, what they have, and what their customers have.” - Tom Gilb “What problem are you trying to solve?” Thank you!