Nathan Marz uses the following picture for explaining the lambda architecture
Lambda Architecture Visualization by Marz
However, on the internet I often find the following architecture, in which the serving layer is not only the next step after the batch layer, but also the streaming layer, i.e.
From what I understand, I would argue, that Marz used his visualization to differ between the different requirements/properties of the used components, i.e. the batch layer has a lot of writes, while the serving layer needs to perform good at random reads only. The streaming component could be queried directly (i.e. by using an API), thus no additional database is required.
However, I also understand the visualization in which the serving layer combines both - the batch and the speed layer - since both expose some kind of view. So I do not understand why Marz did not add a streaming layer for the speed layer or used the merged serving layer as in the DZone example.
Could someone explain me, why there is no streaming layer for the Speed Layer in the Marz Architecture or why there is a streaming layer in the DZone example?
Thank you!
Both seem to be valid approaches. Mraz and DZone have proposed different abstractions for the same concept.