Cloud computing represents a viable approach for hosting scalable applications and services. As business processes and scientific jobs become more intricate, users may have unbalanced and evolving requirements that are associated to the specific underlying sub-job or service. In this paper, we investigate the problem of managing virtual resources for service workflows in a cloud environment and propose an agent-based framework that makes resource management decisions that are customized to optimize different levels of the application. To facilitate the management process, we introduce and evaluate an adaptive workflow configuration algorithm to assign virtual machines to services (composed within a workflow) while aggregating virtual machines on appropriately-resourced physical machines. We use simulations of real-world networked cluster traces to evaluate and demonstrate the effectiveness of the algorithm.