Challenges With Distributed Systems