Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

18.09.2017 Clojure Meetup - PATH TO MICROSERVICES

316 views

Published on

Vasilii Avdiushkin from Zalando adtech lab in Hamburg held this presentation called "Path to microservices" on the CLOJURE HAMBURG MEETUP in the Zalando adtech lab Office on 18th September 2017

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

18.09.2017 Clojure Meetup - PATH TO MICROSERVICES

  1. 1. Path to microservices (in parentheses) Vasiliy Avdiushkin software engineer Zalando Hamburg Hamburg Clojure User Group Zalando Tech Events Hamburg
  2. 2. Applications “An application program (app or application for short) is a computer program designed to perform a group of coordinated functions, tasks, or activities for the benefit of the user.” from Wikipedia
  3. 3. Why do applications look like that today?
  4. 4. Path to microservices
  5. 5. Please, not today
  6. 6. Today
  7. 7. Today Interconnected world
  8. 8. Areas of focus • Interfaces • Transparency • Simplicity • Performance
  9. 9. Areas of focus • Interfaces • Transparency • Simplicity • Performance
  10. 10. System threads/processes
  11. 11. System threads/processes
  12. 12. System threads/processes
  13. 13. System threads/processes ?!
  14. 14. System threads/processes ?! CGI Fast CGI WSGI Some other GI
  15. 15. System threads/processes Simple model Isolation Handled by OS Limited amount of connections Complex synchronisation Performance Resources
  16. 16. Event loop (epoll, kqueue, etc...)
  17. 17. Performance Synchronisation 10K connections Complex (async) model No blocking allowed No isolation (need to handle global state) Single threaded Event loop (epoll, kqueue, etc...)
  18. 18. Dispatching complex IO logic
  19. 19. Epoll network coding in plain C
  20. 20. NIO in Java
  21. 21. Telnet chat in Javascript
  22. 22. Telnet chat in Erlang
  23. 23. Actor model
  24. 24. Actor model
  25. 25. Actor model
  26. 26. Actor model
  27. 27. Telnet chat in Clojure (+ aleph)
  28. 28. Chat server
  29. 29. User input channels...
  30. 30. ...and message buffer...
  31. 31. ...are connected this way
  32. 32. Delivering messages
  33. 33. Delivering messages
  34. 34. Transducers on channels
  35. 35. Release and deploy
  36. 36. Telnet chat in Clojure (+ aleph)
  37. 37. Transparency, simplicity, performance
  38. 38. Channels • Interactive • Safe • Buffered • Immutable • Not hiding anything
  39. 39. Clojure • STM (atoms, references, agents) • Channels (core.async) • Functional transformations (transducers) • Java interop • Interactive development (REPL) • As simple as possible • But not simpler
  40. 40. “Not only is there no God, but try finding a plumber on Sunday.” Woody Allen
  41. 41. (filter #(contains? % :question)) Questions?

×