In the course of an enterprise cloud migration effort, engineers often rely on domain knowledge or employ a heuristic approach when allocating resources to workloads. While this approach may be sufficient for the initial lift, it is an inefficient strategy for ongoing data center operations in the cloud. It increases the risk of over-provisioning, which results in increased total cost of ownership. It also increases the risk of under-provisioning, which increases the potential for service level agreement violations. This research presents an analytic approach to workload resource allocation in the cloud. It presents techniques to analyze and model the characteristics and patterns of workloads within a cloud computing environment. It also presents an approach with which to learn from prior workload behavior and prescribe an optimal resource allocation scheme or optimization policy based on set objectives and constraints. Finally, the work presents an approach to predict how workload characteristics will change as a result of variations in allocated resource parameters. This is critical in order to understand the impact of proposed optimization policies, so they can be validated before being implemented in real world environments.Workload modeling and resource optimization in cloud environments is challenging for several reasons. Some of these reasons include challenges due to the abstraction and overhead presented by the virtualization layer, the lack of clarity with and absence of sufficient system-level trace-logs that correlate with performance, the complexity and variability of workloads and a lack of effective standards for workload classification and forecasting. This research takes these challenges into account and presents mitigating approaches to them.