Externally indexed torrent
If you are the original uploader, contact staff to have it moved to your account
Textbook in PDF format
Explore the event-driven architecture (EDA) in a purely functional way. Learn to design and develop distributed systems that scale. Identify common design patterns in such systems.Take your functional programming skills to the next level by joining me in developing a distributed system powered by Apache Pulsar and Fs2 streams, all in Scala 3!
Explore the event-driven architecture (EDA) in a purely functional way. Learn to design and develop distributed systems that scale. Identify common design patterns in such systems.
In the same spirit of Practical FP in Scala, we will develop a distributed system written in Scala 3 that meets the requirements of a modern software architecture capable of processing billions of events per day at scale powered by Apache Pulsar and Fs2 streams.
The system also includes a Web Sockets service powered by Http4s, and two Web applications (one written in Elm another in Scala.js), just for fun!
Although the application picks a particular design and implementation, the concepts should easily translate to other designs in the same space that can be built on top of Apache Kafka, Rabbit MQ, or other message brokers.
Time to dive straight into the code, and what better way to do so than with Scala 3! This new major version of the language comes with exciting new features, some of which we will be exploring in this chapter, together with other functional libraries. We will start with domain modeling and everything that applies to it: typeclass derivation, newtypes, refinement types, and orphan instances. Next, we will briefly see typeclasses, capability traits, and HTTP routes. At last, we will explore a design pattern that leverages one of the brand-new features of the language.
Additionally, essential reading material is recommended for those who wish to dive deeper into topics such as Distributed Systems, Streaming Systems, Event-Driven Applications, and Observability.
Have a look at the distributed system that supplements this book:
https://github.com/gvolpe/trading