Cloud computing is undergoing a fundamental shift, stimulated by an exponential growth in data and users and an increasing desire for elastic, easy-to-use services. Instead of requiring users to manage virtual machines, the emerging wave of cloud computing offers users compute and storage services, backed by disaggregated resources that cloud providers manage automatically. Two fundamental requirements for enabling the emerging wave of cloud computing are fast access to remote data and intelligent control of storage resource allocations. I have designed and built software systems that provide fast, predictable access to remote Flash storage, automate storage resource allocation with machine learning, and autoscale storage resources across multiple dimensions for emerging cloud applications. In this talk, I will focus primarily on two of these systems, ReFlex and Pocket. ReFlex allows cloud providers to improve resource efficiency without sacrificing performance by providing applications with fast, predictable access to any remote Flash storage server in a cloud facility that has spare capacity and bandwidth. Pocket is a new cloud storage service that builds on top of ReFlex and enables a new class of cloud applications for real-time analytics by intelligently allocating resources across multiple nodes and storage technologies. I will conclude with a discussion of future challenges and opportunities in the new wave of cloud computing.