Why building highly scalable applications is hard - Part 1