Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Functional Languages to Functional Architectures

6b8d8f84c065846e8ec1f12f67d79991?s=47 Juliano Alves
December 28, 2020
13

From Functional Languages to Functional Architectures

Slides of my presentation for Codemotion 2020 (https://events.codemotion.com/conferences/online/2020/codemotion-online-tech-conference/)

Software tends to be organised in a similar way in different levels: methods in classes, classes in packages, packages in projects and so on. The OO approach defined a good amount of this standards. However, there are companies building massive systems out there, handling numerous requests in a functional way. Could the functional approach have any impact on architecture? Lambda functions, immutable databases and short-life infrastructure are a few examples. In this session you will see how the functional paradigm has impacted software architecture at a much deeper level than one can imagine

6b8d8f84c065846e8ec1f12f67d79991?s=128

Juliano Alves

December 28, 2020
Tweet

Transcript

  1. From Functional Languages to Functional Architectures Juliano Alves @vonjuliano juliano-alves.com

    October 20-21-22, 2020
  2. Who am I? • Software Engineer, Searcher of perfect modularization,

    Lover of Functional Languages • The cool ones Scala, Clojure, Elixir • The "vintage" ones Java, C#, Python, Ruby @vonjuliano juliano-alves.com
  3. None
  4. What is software? "Software is representation of knowledge"

  5. How do we organise that knowledge? "Software tends to be

    organised the same way, in different levels"
  6. COMPUTATION INPUT OUTPUT

  7. SERVICE A SERVICE B SERVICE C SERVICE D SERVICE E

    SERVICE F SERVICE G SERVICE H SERVICE I
  8. COMPUTATION INPUT OUTPUT

  9. They behave as Functions.

  10. f(x) x y

  11. None
  12. Http Server http request http response

  13. None
  14. None
  15. None
  16. State

  17. None
  18. None
  19. None
  20. final var album = new ArrayList<Picture>(); album.add(picture1); album.add(picture2); System.out.println(album); //

    [pic1, pic2] album.set(1, picture3); System.out.println(album); // [pic1, pic3]
  21. val album = List[Picture](picture1, picture2) println(album) // [pic1, pic2] album.updated(1,

    picture3) println(album) // [pic1, pic2] val newAlbum = album.updated(1, picture3) println(newAlbum) // [pic1, pic3]
  22. State in environment

  23. None
  24. None
  25. None
  26. https://www.thoughtworks.com/insights/articles/understanding-clouds-significance

  27. State in applications

  28. None
  29. SpaceTimeContinuumException

  30. None
  31. https://www.confluent.io/blog/build-streaming-etl-solutions-with-kafka-and-rail-data/

  32. TOPOLOGY

  33. Conclusion

  34. "The way one express themselves affects their worldview." Sapir–Whorf hypothesis:

    https://en.wikipedia.org/wiki/Linguistic_relativity
  35. From Functional Languages to Functional Architectures Juliano Alves @vonjuliano juliano-alves.com

    October 20-21-22, 2020 Thank you!