43
JS @ SPOTIFY FELIPE RIBEIRO | @FELIPERNB

JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

Embed Size (px)

Citation preview

Page 1: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

JS @ SPOTIFYFELIPE RIBEIRO | @FELIPERNB

Page 2: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

SPOTIFY FOR DESKTOP IS A WEB-BASED APP

Page 3: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

A BIT OF HISTORY…

Page 4: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 5: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 6: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 7: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

WEB VIEWS INSIDE THE CLIENT WITH CEF

Page 8: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 9: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 10: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 11: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 12: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

WEBALL THE THINGS!!1!

Page 13: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 14: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

TO REWRITE OR NOT TO REWRITE?

Page 15: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

EMOTIONAL DISCUSSIONS !

Page 16: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

ENGINEERING THINKING !

Page 17: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

TRADE-OFFS ⚖

Page 18: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

THE ARCHITECTURE

Page 19: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

client-core

client-desktop

Chromium Embedded Framework

JS Container

Browse Search Radio Playlist

Page 20: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 21: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

DID YOU JUST SAY *IFRAMES*? !

Page 22: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

THE CODEBASE

Page 23: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

▸ one repository per app (playlist, browse, search, …)▸ one repository per lib

▸ internal npm registry to publish and distribute the libs

Page 24: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

NOPE !

Page 25: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

WHY NOT?

Page 26: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

HARD TO COORDINATE HORIZONTAL CHANGES

Page 27: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

COMPLICATES CI, TESTABILITY AND

STANDARDIZATION

Page 28: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

dependencies: { "spotify-css": "~1.0.0", "spotify-uri": "~1.5.0"}

dependencies: { "spotify-css": "~2.0.0", "spotify-uri": "~1.0.0"}

Page 29: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 30: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

One repo to rule them all— Git Sauron

Page 31: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

MONOREPO !

Page 32: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

▸ simplified CI▸ easier to test the impact of changes▸ free to break backwards compatibility▸ atomic refactorings (and rollbacks)▸ consistency and standardization

Page 33: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)
Page 34: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

things are simpler than before, but there’s still a lot of entropy

Page 35: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

GOLDEN PATH

Page 36: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

▸ standardization workgroup▸ de-facto standards and path of least resistance

▸ data-driven decision making

Page 37: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

LESSONS LEARNED

Page 38: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

!EVOLVE THINGS INCREMENTALLY

Page 39: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

!NO “IVORY TOWER” INFRA

TEAM

Page 40: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

!GIT REPOSITORIES SHOULDN’T

DEFINE THE ARCHITECTURE

Page 41: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

!CONSISTENCY IS KEY

Page 42: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

LIKE THE CHALLENGES?SPOTIFY.COM/JOBS

Page 43: JavaScript @ Spotify (Felipe Ribeiro Technology Stream)

QUESTIONS? !@FELIPERNB