don't fear the walking dead @ phpughh

34
HOW WE GET RID OF OUR MONOLITH DON’T

Upload: techkartenmacherei

Post on 14-Apr-2017

662 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Don't Fear the Walking Dead @ PHPUGHH

HOW WE GET RID OF OUR MONOLITH

DON’T

Page 2: Don't Fear the Walking Dead @ PHPUGHH
Page 3: Don't Fear the Walking Dead @ PHPUGHH

How we started• built on top of a standard e-commerce platform

• a lot of custom code to support a wide combination of product options

Feature X Feature Y Feature Z

Core Code Customization

Page 4: Don't Fear the Walking Dead @ PHPUGHH

The challenges of a growing business

• serious performance issues

• own developers don’t feel comfortable with the code

• adding individual features is too complex

• upgrading is hard

Page 5: Don't Fear the Walking Dead @ PHPUGHH

Finding a way out

Page 6: Don't Fear the Walking Dead @ PHPUGHH

You don’t have to replace everything at once!

Page 7: Don't Fear the Walking Dead @ PHPUGHH

What part of the software causes the highest amount of pain?

• category pages

• product detail pages

Page 8: Don't Fear the Walking Dead @ PHPUGHH

Planning

Page 9: Don't Fear the Walking Dead @ PHPUGHH

Current Setup

Legacy System

Session Storage

RDBMS

Webserver

Page 10: Don't Fear the Walking Dead @ PHPUGHH

Idea

Legacy System

Session Storage

RDBMS

Webserver New Software

Page 11: Don't Fear the Walking Dead @ PHPUGHH
Page 12: Don't Fear the Walking Dead @ PHPUGHH
Page 13: Don't Fear the Walking Dead @ PHPUGHH

FURY Frontend Key-Value Storage

getCategoryPage(341);

"<html><head>…</head><body>…</body></html>"

Page 14: Don't Fear the Walking Dead @ PHPUGHH
Page 15: Don't Fear the Walking Dead @ PHPUGHH

FURY Frontend

Key-Value Storage

["SBU06HE"

,"TEOD3HE"

,"ANW04HD"

]

Search

search("{'

category':

341, 'filt

ers':{...}

}");

getTiles(["SBU06HE","TEOD3HE","ANW04HD"]);

["<div class="category-item">…</div>", …]

Page 16: Don't Fear the Walking Dead @ PHPUGHH

Webserver

Key-Value Storage

Search

FURY Frontend FURY Backend

FURY Components

Page 17: Don't Fear the Walking Dead @ PHPUGHH

Webserver

Key-Value Storage

Search

FURY Frontend FURY Backend

Legacy RDBMSLegacy System Session

Storage

Collect & Export

Page 18: Don't Fear the Walking Dead @ PHPUGHH

Webserver

Key-Value Storage

Search

FURY Frontend FURY Backend

Legacy RDBMSLegacy System Session

Storage

FURY Requests

200 OK

Page 19: Don't Fear the Walking Dead @ PHPUGHH

Webserver

Key-Value Storage

Search

FURY Frontend FURY Backend

Legacy RDBMSLegacy System Session

Storage

Requests to Legacy System

404 NOT FOUND

Page 20: Don't Fear the Walking Dead @ PHPUGHH

Webserver

Key-Value Storage

Search

FURY Frontend FURY Backend

Legacy RDBMSLegacy System Session

Storage

Requests to Legacy System

404 NOT FOUND

200 OK

Page 21: Don't Fear the Walking Dead @ PHPUGHH

Learnings• We have full responsibility now

• No framework needed

• No relational database needed

Page 22: Don't Fear the Walking Dead @ PHPUGHH

Goods and Bads• fully object-oriented

• easy refactoring thanks to 100% code coverage

• not enough automated acceptance tests

• dependencies to legacy software (database changes, API calls)

Page 23: Don't Fear the Walking Dead @ PHPUGHH

Deployment

Page 24: Don't Fear the Walking Dead @ PHPUGHH

Webserver (Router)

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

Webserver

FURY Frontend

Server B

K/V StorageSearch

FURY Backend

Page 25: Don't Fear the Walking Dead @ PHPUGHH

Webserver (Router)

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

Webserver

FURY Frontend

Server B

K/V StorageSearch

FURY Backend

active = A

Page 26: Don't Fear the Walking Dead @ PHPUGHH

Webserver (Router)

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

Webserver

FURY Frontend

Server B

K/V StorageSearch

FURY Backend

active = B

Page 27: Don't Fear the Walking Dead @ PHPUGHH

RDBMS Read Slave

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

Webserver (Router)

Build Server

Deploy Code

active = B

Page 28: Don't Fear the Walking Dead @ PHPUGHH

RDBMS Read Slave

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

Webserver (Router)

Build Server

Deploy Code

Collect & Export

active = B

Page 29: Don't Fear the Walking Dead @ PHPUGHH

RDBMS Read Slave

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

Webserver (Router)

Build Server

Deploy Code

Collect & Export

Smoke Tests

active = B

Page 30: Don't Fear the Walking Dead @ PHPUGHH

RDBMS Read Slave

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

Webserver (Router)

Build Server

Deploy Code

Collect & Export

Smoke Tests

Switch to A

active = A

Page 31: Don't Fear the Walking Dead @ PHPUGHH

RDBMS Read Slave

Webserver

FURY Frontend

Server A

K/V StorageSearch

FURY Backend

active = B Webserver (Router)

Build Server

Deploy Code

Collect & Export

Page 32: Don't Fear the Walking Dead @ PHPUGHH

We are very close to launch!

Page 33: Don't Fear the Walking Dead @ PHPUGHH

What next?• party hard!

• identify the next pain points we want to work on

• replace the next parts of the legacy system with new, self-contained components / services

Page 34: Don't Fear the Walking Dead @ PHPUGHH

https://www.instagram.com/kartenmacherei/

Q&A

https://www.facebook.com/kartenmacherei/ +49 40 468996861

[email protected]

http://www.kartenmacherei.de/recruiting