transforming a running legacy application into high...

38
eBay Inc. confidential TRANSFORMING A RUNNING LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE Morten Jokumsen eBay classifieds

Upload: others

Post on 19-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

TRANSFORMING A RUNNING

LEGACY APPLICATION INTO HIGH

SCALABLE ARCHITECTURE

Morten Jokumsen

eBay classifieds

Page 2: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

• Morten Jokumsen

• Software Architech

• Email: [email protected]

• Skype: guidmaster

• Twitter: guidmaster

Page 3: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Who and what is DBA?

• Old classifieds news paper started in 1981

• First website launched in 1995

• Sold to eBay in 2008

– Price: 370 mill UDS

3

Page 4: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 1996

4

Page 5: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 1997

5

Page 6: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 1999

6

Page 7: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2000

7

Page 8: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2002

8

Page 9: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2004

9

Page 10: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2005

10

Page 11: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2007

11

Page 12: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2008

12

Page 13: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2010

13

Page 14: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

DBA 2012

14

Page 15: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Who is DBA

• One of the largest websites in DK

• Grows 20% each year

• Mobile traffic goes crazy!

15

Page 16: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

THE CHALLENGE

16

Page 17: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Get rid of this!

17

Page 18: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Project Mercury

18

Page 19: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Why Mercury?

19

Within the realm of astrology the planet Mercury is the ruler of the star sign Gemini. Gemini means twins.

This is what we want to do here seen from a business perspective: create a twin of dba.dk running on a more efficient, productive and high-quality platform.

Page 20: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

What we wanted

20

Page 21: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Initial guidelines

• The architecture must be simple and uniform

• Use the Domain Driven Design patterns to gain uniform code and design of the

architecture

• Code should be high quality which means low bug count and high maintainability

• Performance need to be part of the architecture from the start

• The architecture is scalable, which made it's easy to scale horizontal by append more

servers to make higher throughput

• To ensure high quality and clean code, we migrate the existing database in steps to a

new database

• We migrate with a business scope one to one

21

Page 22: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

The challenges

• Move the architecture from 1999

• Totally new team

– Understand the business

• Move existing developers to .NET

• Totally new technology stack

22

Page 23: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

And how we did it the first time

23

Page 24: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Why did it suck?

24

Page 25: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

AND WE DID THE SAME

MISTAKE IN THE NEXT PHASE

25

Page 26: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

The first write side

• Fighting the O/RM

• Anemic Domain Model

– Where did the logic go?

• Did we do it wrong?

– Layered architecture failed?

26

Page 27: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

LET´S SCALE

Evolve the code base

27

Page 28: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

The problems

• We could not scale

• We could not implement new stuff fast enough

• New developers had a hard time to understand the code base

• We said we we did DDD – but we didn´t

28

Page 29: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

CQRS TO THE RESCUE

29

Page 30: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Our implementation of CQRS

30

Page 31: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential 31

Page 32: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential 32

Page 33: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

The advantage of CQRS

• We can scale

• We can implement new stuff fast!

• We have a clean code base

• New developers can easily follow the code base

• We know where logic should go

33

Page 34: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

The advantage of ES

• We can change the implementation of the domain

• We can scale

• Replay the stream

• We can debug and fix live bugs

• We have better business insight

34

Page 35: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

The new platform

35

ASP.NET MVC

MS SQL Server

jQuery

DDD

FAST

Nagios

Memcached

LINQ2SQL

ADO.NET

Entity Framework

Dapper

Miniprofiler

CQRS

Event Store

RabbitMQ

Page 36: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Where we ended

36

Page 37: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential

Q&A

37

Page 38: Transforming a running legacy application into high ...gotocon.com/dl/goto-aar-2012/slides/MortenJokumsen... · LEGACY APPLICATION INTO HIGH SCALABLE ARCHITECTURE ... ADO.NET Entity

eBay Inc. confidential 38