Apache Ignite and Apache Storm are two rather different technologies in many aspects - especially since Storm has one very specific use-case, while Ignite has quite a large set of tools under one roof. As I understand it, the core of Ignite is its in-memory storage. Built on that is its data locality sensitive computation. Built on that are all kinds of cool "toys". The one I am interested in is the Streaming functionality, which is basically a querying listener on the changing in-memory cache.
If I set the sliding window to one tuple, Ignite provides - like Storm - a one-tuple-at-a-time functionality. The data is stored in memory by Ignite. Storm does not "store" the data in an in-memory sense, but the tuples are of course also stored in memory. So in both cases I have streaming and I have data in memory and I am able to distribute my computation.
I get a sense that writing programs that do many steps of data transformations might be easier to write in Storm, due to the abstractions of both technologies. What is to say about that?
Second question: What about the performance? I'd guess Ignite's data locality might give it an advantage. On the other hand I think multiple steps might be better distributed in Storm (different bolts on all kinds of machines), while an Ignite program might not be split so easily.
If I still wanted to distribute the stream (not just per data, but also the steps on different machines). I guess I would have to write multiple Ignite streamers, which communicate through Caches, right? This would sound more difficult to write than in Storm (bringing us back to the first question).