The Basics of Cloud Computing: Understanding the Fundamentals of Cloud Computing in Theory and Practice