Cloud Computing: From Promise to Fruition