Distributed systems: A glance at designing data-intensive applications