40

Raus aus dem Vendor-Lock-In

Embed Size (px)

DESCRIPTION

ENGLISH - Symfony developers should be happy about the amount of publicly available open source libraries they can use for building web applications. In most cases, these libraries can reduce the required development time greatly. However, when you have to maintain an application with many dependencies to third-party libraries, this can become one of your biggest problems. One issue is that you might want to exchange one library with another one but didn't think of this when integrating it. In another case, the maintainers of a bundle might not have the time to revise all pull-requests and bug tickets you sent them. With only a few tricks you can make these situations less painful! This talk uses the HTTP client library Guzzle as an example to discuss how you can profit from the great functionality it implements while avoiding vendor lock-in. --- GERMAN - Bei der Entwicklung von Symfony-Applikationen kann man auf eine Vielzahl bestehender OpenSource Bundles und Libraries zurückgreifen. Dies verkürzt in der Regel die Entwicklungszeit immens, da man nicht bei jedem Projekt "das Rad neuerfinden muss". Bei der längerfristigen Betreuung einer Applikation, die viele Third-Party-Libraries verwendet, wird allerdings genau dies oft zum Problem. Man möchte evtl. eine Komponente austauschen, hat dies allerdings bei der Integration nicht bedacht oder der Maintainer einer Library kann nicht die Zeit aufbringen die notwendig wäre, alle Pull-Requests und Bug-Tickets zu bearbeiten. Diese Situation lässt sich mit ein paar Tricks deutlich weniger schmerzhaft gestalten. Dieser Vortrag erklärt am Beispiel der HTTP-Client-Library Guzzle, wie man die Abhängigkeiten zu konkreten Libraries und Bundles gering hält und dabei trotzdem von ihnen profitieren kann. Rate this talk: https://joind.in/9418

Citation preview

Page 1: Raus aus dem Vendor-Lock-In
Page 2: Raus aus dem Vendor-Lock-In

R A U S A U S D E M V E N D O R - L O C K - I N

PA U L S E I F F E R T | 0 8 . N O V E M B E R 2 0 1 3

S Y M F O N Y L I V E B E R L I N 2 0 1 3

Page 3: Raus aus dem Vendor-Lock-In

PA U L S E I F F E R T

Page 4: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N

Page 5: Raus aus dem Vendor-Lock-In

Grenzen der Bibliotheken

Keine Garantien

Einfluss auf die eigene Architektur

Page 6: Raus aus dem Vendor-Lock-In

A B E R …

Page 7: Raus aus dem Vendor-Lock-In

Wiederkehrende Funktionalität

Best Practices

Gekapselte Komplexität

Page 8: Raus aus dem Vendor-Lock-In

F R Ü H E R …

Page 9: Raus aus dem Vendor-Lock-In

• “reines” PHP

• keine Frameworks

• Viel Technologie-spezifischer Code

• Stark gekoppelte Komponenten

Page 10: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N ?✔✔✔

Page 11: Raus aus dem Vendor-Lock-In

S PÄT E R …

Page 12: Raus aus dem Vendor-Lock-In

• Struktur durch Framework

• Abstraktion über Technologien

• Libraries teilweise austauschbar

• Vermischte Concerns

• Framework nicht austauschbar

Page 13: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N ?✔

Page 14: Raus aus dem Vendor-Lock-In
Page 15: Raus aus dem Vendor-Lock-In

E S G E H T N O C H B E S S E R !Controller PageRepository

<<Interface>>PageStorage

Symfony / HTTP Application

MySQLPageStorage

MySQLBackend

MySQLConnection

Page 16: Raus aus dem Vendor-Lock-In

• Das Herzstück der Software ist ein Modell der Domäne

• Frameworks sind Details

• Libraries sind austauschbar durch semantische Abstraktionen

Page 17: Raus aus dem Vendor-Lock-In

Controller PageRepository

<<Interface>>PageStorage

Symfony / HTTP Application

MySQLPageStorage

MySQLBackend

MySQLConnection

Page 18: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N ?

X

Page 19: Raus aus dem Vendor-Lock-In

B E I S P I E L : G U Z Z L E

Page 20: Raus aus dem Vendor-Lock-In

• HTTP-Client Library

• Viele praktische Features

• Erweiterbar

Page 21: Raus aus dem Vendor-Lock-In

I N T E G R AT I O N V O N G U Z Z L E

Page 22: Raus aus dem Vendor-Lock-In

I ) G U Z Z L E - C L I E N T O B J E C T

Page 23: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N ?✔

Page 24: Raus aus dem Vendor-Lock-In

I I ) G U Z Z L E - B U N D L E

Page 25: Raus aus dem Vendor-Lock-In

I I ) G U Z Z L E - B U N D L E

Page 26: Raus aus dem Vendor-Lock-In

I I ) G U Z Z L E - B U N D L E

Page 27: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N ?

✔✔

Page 28: Raus aus dem Vendor-Lock-In

I I I ) E I G E N E S I N T E G R AT I O N S - B U N D L E

Controller <<interface>>Search

GuzzleSearch GuzzleClient

AppBundle

GuzzleSearchBundle

Page 29: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N ?

Page 30: Raus aus dem Vendor-Lock-In

I I I ) E I G E N E S I N T E G R AT I O N S - B U N D L E

Controller Search

GuzzleSearchClientGuzzleClient

AppBundle

GuzzleSearchBundle

<<interface>>SearchClient

Application

Page 31: Raus aus dem Vendor-Lock-In

V E N D O R - L O C K - I N ?

X

Page 32: Raus aus dem Vendor-Lock-In

S Y M F O N Y- A N W E N D U N G

G U Z Z L E

Page 33: Raus aus dem Vendor-Lock-In

S Y M F O N Y / H T T P

G U Z Z L E

A P P L I K AT I O N S - L O G I K

G U Z Z L E -S E A R C H

Page 34: Raus aus dem Vendor-Lock-In

T E S T I N G

Page 35: Raus aus dem Vendor-Lock-In

S Y M F O N Y / H T T P

G U Z Z L E

A P P L I K AT I O N S - L O G I K

G U Z Z L E -S E A R C H

Page 36: Raus aus dem Vendor-Lock-In

• Erfindet das Rad nicht neu

• Macht Euch nicht abhängig

• Semantische Abstraktionen

• Dependency Injection

Page 37: Raus aus dem Vendor-Lock-In
Page 38: Raus aus dem Vendor-Lock-In

D A N K E S C H Ö N !

https://joind.in/9418

Page 39: Raus aus dem Vendor-Lock-In

• Eric Evans: Domain-Driven Design

• Vaughn Vernon: Implementing Domain-Driven Design

• Guzzle: guzzlephp.org

L E S E S T O F F

Page 40: Raus aus dem Vendor-Lock-In

• Lock - http://www.flickr.com/photos/24410855@N07/3172109331/

• Wheel - http://www.flickr.com/photos/72802667@N00/456568753

• Structure - http://www.flickr.com/photos/46271629@N00/2305078608

• Progress - http://www.flickr.com/photos/29312295@N06/4115844000

• Spaghetti - http://www.flickr.com/photos/7897906@N06/8602097091

• United States Capitol - Paul Seiffert

• Gears - http://www.flickr.com/photos/wwarby/4782904694/

• Guzzle - http://www.flickr.com/photos/66969579@N00/451668854

• Questions - http://www.flickr.com/photos/bilal-kamoon/6835060992

P H O T O S