SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
1© 2015 Kenshoo, Ltd. Proprietary Information
Spark Your Legacy:
Distributing an 8-year Monolith
Tzach Zohar, Kenshoo, May 2015
2© 2015 Kenshoo, Ltd. Proprietary Information
Who?
Tzach Zohar
Architect @ Kenshoo
tzach.zohar@kenshoo.com
http://il.linkedin.com/in/tzachzohar
3© 2015 Kenshoo, Ltd. Proprietary Information
Where?
● Online advertising technology
● 9-year old startup
● ~500 employees
● Data-intensive (aren’t we all?)
4© 2015 Kenshoo, Ltd. Proprietary Information
Agenda
● Project Background
● Why not to Greenfield
● Refactoring Challenges
● Solutions
5© 2015 Kenshoo, Ltd. Proprietary Information
Project Background
6© 2015 Kenshoo, Ltd. Proprietary Information
Domain: Data Aggregation
● Of: advertising metrics
● On: versatile, batched, occasionally re-stated input
● By: many different keys
● When: now + ~0.5 hour
● While: filtering and normalising per business rules
● For: eternity (data lives forever)
7© 2015 Kenshoo, Ltd. Proprietary Information
Domain: Data Aggregation
Slow
Sources
Fast
Custom
Re-stated
Normalize
Aggregate
By X
By Y
By X + Y
...
Observations
8© 2015 Kenshoo, Ltd. Proprietary Information
Domain: Data Aggregation
Slow
Sources
Fast
Custom
Re-stated
Normalize
Aggregate
By X
By Y
By X + Y
...
Observations
Aggregate
9© 2015 Kenshoo, Ltd. Proprietary Information
Requirement: Better, Faster
● Higher throughput: business is growing
● More keys: and ad-hoc aggregations
● Linear scalability: anything else is not cost-effective
● Easy to enhance: by any decent developer
10© 2015 Kenshoo, Ltd. Proprietary Information
Chosen Design: Spark
sources
Normalize
Driver
HDFS + Spark Cluster
11© 2015 Kenshoo, Ltd. Proprietary Information
Chosen Design: Spark
sources
Normalize
Driver
HDFS + Spark Cluster
Landing
Zone
12© 2015 Kenshoo, Ltd. Proprietary Information
Chosen Design: Spark
sources
Normalize
Driver
HDFS + Spark Cluster
Landing
Zone
By X
By Y
By X+Y
...
Spark
Jobs
13© 2015 Kenshoo, Ltd. Proprietary Information
B: New Shiny
System
Great, but how do we get there?
A: Legacy
System
Refactoring?
“Greenfield” project?
???
14© 2015 Kenshoo, Ltd. Proprietary Information
Why Not to “Greenfield”
15© 2015 Kenshoo, Ltd. Proprietary Information
Q1 Q3Q2
Legacy
Challenge: Moving Target
16© 2015 Kenshoo, Ltd. Proprietary Information
Q1 Q3Q2
Legacy
New System
Challenge: Moving Target
17© 2015 Kenshoo, Ltd. Proprietary Information
Q1 Q3Q2
Legacy Legacy’
New System
Challenge: Moving Target
18© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Zero Diff Tolerance
● Different clients have different data, different
customizations, different scales
● Our data is often validated against external
sources
19© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Code Is Our Only Spec
?
But it isn’t necessarily a friendly one...
20© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Code Is Our Only Spec
What exactly should the new system do?
21© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Test Reuse?
Tests assume a single-server setup...
22© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Test Reuse?
Some are coupled with current implementation...
23© 2015 Kenshoo, Ltd. Proprietary Information
Refactoring Challenges
24© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Legacy Code
Some of it still untested
25© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Tight Coupling
Implementation is tightly coupled with many other components
Kenshoo Server
Search
Engines
SE API Facade
WebUserInterface
Proxy Servers Client's Website
Client Users
Client Systems /
DWH
Entity
Mgmt/
DAO
Normalizers
Optimization
Algorithms
DataProviders/
ScoreSQL
Builder
Client Configuration
SEM Entity Data
Performance Data
Campaign
Generation Tools
(RTC, KW Tool)
Report Generation
Bulk Editing and
Advanced Features
Co
nf.
DA
O
Kenshoo Editor
FTP Sites
Tracking Processor
Aggregator
HELP ME!
26© 2015 Kenshoo, Ltd. Proprietary Information
Challenge: Paradigm Shift
How do you gradually refactor a single-node java application
into a distributed Spark application?
27© 2015 Kenshoo, Ltd. Proprietary Information
Solutions
28© 2015 Kenshoo, Ltd. Proprietary Information
Legacy System New System
Solution #1: Shared Code
29© 2015 Kenshoo, Ltd. Proprietary Information
Legacy System New System
Solution #1: Shared Code
Core
Business
Rules
1. Refactor legacy code to create stand-alone jar
30© 2015 Kenshoo, Ltd. Proprietary Information
Legacy System New System
Solution #1: Shared Code
Core
Business
Rules
2. Build new system around this core code
1. Refactor legacy code to create stand-alone jar
Core
Business
Rules
31© 2015 Kenshoo, Ltd. Proprietary Information
Solution #1: Shared Code
Business rules refactored into Java static methods, to
avoid serialization issue in Spark
32© 2015 Kenshoo, Ltd. Proprietary Information
Solution #2: Empiric Reverse Engineering
33© 2015 Kenshoo, Ltd. Proprietary Information
Solution #2: Empiric Reverse Engineering
34© 2015 Kenshoo, Ltd. Proprietary Information
Solution #2: Empiric Reverse Engineering
35© 2015 Kenshoo, Ltd. Proprietary Information
Solution #3: Local Mode Testing
Legacy System
New Aggregation
System
Spark
36© 2015 Kenshoo, Ltd. Proprietary Information
Solution #3: Local Mode Testing
Legacy System
New Aggregation
System
Spark
1. Embed Spark in Aggregation System
37© 2015 Kenshoo, Ltd. Proprietary Information
Solution #3: Local Mode Testing
Legacy System
New Aggregation
System
Spark
1. Embed Spark in Aggregation System
2. Embed Aggregation System in Legacy
38© 2015 Kenshoo, Ltd. Proprietary Information
Solution #4: Side-by-Side
Both at the component level and at the system level
39© 2015 Kenshoo, Ltd. Proprietary Information
Solution #4: Side-by-Side
40© 2015 Kenshoo, Ltd. Proprietary Information
Solution #4: Side-by-Side
41© 2015 Kenshoo, Ltd. Proprietary Information
Solution #4: Side-by-Side
42© 2015 Kenshoo, Ltd. Proprietary Information
Questions?

Contenu connexe

Plus de Tzach Zohar

Spark Your Legacy (Spark Summit 2016)
Spark Your Legacy (Spark Summit 2016)Spark Your Legacy (Spark Summit 2016)
Spark Your Legacy (Spark Summit 2016)Tzach Zohar
 
“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic Diabetes“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic DiabetesTzach Zohar
 
Scala - THE language for Big Data
Scala - THE language for Big DataScala - THE language for Big Data
Scala - THE language for Big DataTzach Zohar
 
Developers like winning - gamifying code reviews
Developers like winning - gamifying code reviewsDevelopers like winning - gamifying code reviews
Developers like winning - gamifying code reviewsTzach Zohar
 
Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Tzach Zohar
 
Continuous delivery in practice (public)
Continuous delivery in practice (public)Continuous delivery in practice (public)
Continuous delivery in practice (public)Tzach Zohar
 

Plus de Tzach Zohar (6)

Spark Your Legacy (Spark Summit 2016)
Spark Your Legacy (Spark Summit 2016)Spark Your Legacy (Spark Summit 2016)
Spark Your Legacy (Spark Summit 2016)
 
“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic Diabetes“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic Diabetes
 
Scala - THE language for Big Data
Scala - THE language for Big DataScala - THE language for Big Data
Scala - THE language for Big Data
 
Developers like winning - gamifying code reviews
Developers like winning - gamifying code reviewsDevelopers like winning - gamifying code reviews
Developers like winning - gamifying code reviews
 
Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)
 
Continuous delivery in practice (public)
Continuous delivery in practice (public)Continuous delivery in practice (public)
Continuous delivery in practice (public)
 

Dernier

CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Dernier (20)

CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Spark your legacy - Distributing an 8-year Monolith

  • 1. 1© 2015 Kenshoo, Ltd. Proprietary Information Spark Your Legacy: Distributing an 8-year Monolith Tzach Zohar, Kenshoo, May 2015
  • 2. 2© 2015 Kenshoo, Ltd. Proprietary Information Who? Tzach Zohar Architect @ Kenshoo tzach.zohar@kenshoo.com http://il.linkedin.com/in/tzachzohar
  • 3. 3© 2015 Kenshoo, Ltd. Proprietary Information Where? ● Online advertising technology ● 9-year old startup ● ~500 employees ● Data-intensive (aren’t we all?)
  • 4. 4© 2015 Kenshoo, Ltd. Proprietary Information Agenda ● Project Background ● Why not to Greenfield ● Refactoring Challenges ● Solutions
  • 5. 5© 2015 Kenshoo, Ltd. Proprietary Information Project Background
  • 6. 6© 2015 Kenshoo, Ltd. Proprietary Information Domain: Data Aggregation ● Of: advertising metrics ● On: versatile, batched, occasionally re-stated input ● By: many different keys ● When: now + ~0.5 hour ● While: filtering and normalising per business rules ● For: eternity (data lives forever)
  • 7. 7© 2015 Kenshoo, Ltd. Proprietary Information Domain: Data Aggregation Slow Sources Fast Custom Re-stated Normalize Aggregate By X By Y By X + Y ... Observations
  • 8. 8© 2015 Kenshoo, Ltd. Proprietary Information Domain: Data Aggregation Slow Sources Fast Custom Re-stated Normalize Aggregate By X By Y By X + Y ... Observations Aggregate
  • 9. 9© 2015 Kenshoo, Ltd. Proprietary Information Requirement: Better, Faster ● Higher throughput: business is growing ● More keys: and ad-hoc aggregations ● Linear scalability: anything else is not cost-effective ● Easy to enhance: by any decent developer
  • 10. 10© 2015 Kenshoo, Ltd. Proprietary Information Chosen Design: Spark sources Normalize Driver HDFS + Spark Cluster
  • 11. 11© 2015 Kenshoo, Ltd. Proprietary Information Chosen Design: Spark sources Normalize Driver HDFS + Spark Cluster Landing Zone
  • 12. 12© 2015 Kenshoo, Ltd. Proprietary Information Chosen Design: Spark sources Normalize Driver HDFS + Spark Cluster Landing Zone By X By Y By X+Y ... Spark Jobs
  • 13. 13© 2015 Kenshoo, Ltd. Proprietary Information B: New Shiny System Great, but how do we get there? A: Legacy System Refactoring? “Greenfield” project? ???
  • 14. 14© 2015 Kenshoo, Ltd. Proprietary Information Why Not to “Greenfield”
  • 15. 15© 2015 Kenshoo, Ltd. Proprietary Information Q1 Q3Q2 Legacy Challenge: Moving Target
  • 16. 16© 2015 Kenshoo, Ltd. Proprietary Information Q1 Q3Q2 Legacy New System Challenge: Moving Target
  • 17. 17© 2015 Kenshoo, Ltd. Proprietary Information Q1 Q3Q2 Legacy Legacy’ New System Challenge: Moving Target
  • 18. 18© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Zero Diff Tolerance ● Different clients have different data, different customizations, different scales ● Our data is often validated against external sources
  • 19. 19© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Code Is Our Only Spec ? But it isn’t necessarily a friendly one...
  • 20. 20© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Code Is Our Only Spec What exactly should the new system do?
  • 21. 21© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Test Reuse? Tests assume a single-server setup...
  • 22. 22© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Test Reuse? Some are coupled with current implementation...
  • 23. 23© 2015 Kenshoo, Ltd. Proprietary Information Refactoring Challenges
  • 24. 24© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Legacy Code Some of it still untested
  • 25. 25© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Tight Coupling Implementation is tightly coupled with many other components Kenshoo Server Search Engines SE API Facade WebUserInterface Proxy Servers Client's Website Client Users Client Systems / DWH Entity Mgmt/ DAO Normalizers Optimization Algorithms DataProviders/ ScoreSQL Builder Client Configuration SEM Entity Data Performance Data Campaign Generation Tools (RTC, KW Tool) Report Generation Bulk Editing and Advanced Features Co nf. DA O Kenshoo Editor FTP Sites Tracking Processor Aggregator HELP ME!
  • 26. 26© 2015 Kenshoo, Ltd. Proprietary Information Challenge: Paradigm Shift How do you gradually refactor a single-node java application into a distributed Spark application?
  • 27. 27© 2015 Kenshoo, Ltd. Proprietary Information Solutions
  • 28. 28© 2015 Kenshoo, Ltd. Proprietary Information Legacy System New System Solution #1: Shared Code
  • 29. 29© 2015 Kenshoo, Ltd. Proprietary Information Legacy System New System Solution #1: Shared Code Core Business Rules 1. Refactor legacy code to create stand-alone jar
  • 30. 30© 2015 Kenshoo, Ltd. Proprietary Information Legacy System New System Solution #1: Shared Code Core Business Rules 2. Build new system around this core code 1. Refactor legacy code to create stand-alone jar Core Business Rules
  • 31. 31© 2015 Kenshoo, Ltd. Proprietary Information Solution #1: Shared Code Business rules refactored into Java static methods, to avoid serialization issue in Spark
  • 32. 32© 2015 Kenshoo, Ltd. Proprietary Information Solution #2: Empiric Reverse Engineering
  • 33. 33© 2015 Kenshoo, Ltd. Proprietary Information Solution #2: Empiric Reverse Engineering
  • 34. 34© 2015 Kenshoo, Ltd. Proprietary Information Solution #2: Empiric Reverse Engineering
  • 35. 35© 2015 Kenshoo, Ltd. Proprietary Information Solution #3: Local Mode Testing Legacy System New Aggregation System Spark
  • 36. 36© 2015 Kenshoo, Ltd. Proprietary Information Solution #3: Local Mode Testing Legacy System New Aggregation System Spark 1. Embed Spark in Aggregation System
  • 37. 37© 2015 Kenshoo, Ltd. Proprietary Information Solution #3: Local Mode Testing Legacy System New Aggregation System Spark 1. Embed Spark in Aggregation System 2. Embed Aggregation System in Legacy
  • 38. 38© 2015 Kenshoo, Ltd. Proprietary Information Solution #4: Side-by-Side Both at the component level and at the system level
  • 39. 39© 2015 Kenshoo, Ltd. Proprietary Information Solution #4: Side-by-Side
  • 40. 40© 2015 Kenshoo, Ltd. Proprietary Information Solution #4: Side-by-Side
  • 41. 41© 2015 Kenshoo, Ltd. Proprietary Information Solution #4: Side-by-Side
  • 42. 42© 2015 Kenshoo, Ltd. Proprietary Information Questions?