I am working with scala and I have used many streaming engines like Spark, ZStreams, fs2. I wanted to ask what kind of engineering techniques / principles / algorithms you need to know to understand the internals of these frameworks. Or design and implement such a system from scratch. Where do I start ?