High dependability in Internet services is a difficult challenge: new features are constantly added, the systems are being scaled to support more users, and these systems are subject to unpredictable workloads and inputs. To deal with these challenges, operators must constantly adapt and evolve their system in response to its dynamic behavior. We argue that this online evolution is necessary for the development and deployment of dependable Internet services. This paper presents a conceptual model of online evolution consisting of three phases–monitoring, analysis, and modification–and presents techniques we have found useful in speeding the process of online evolution.