---
title:  Apache CloudStack Open Source Cloud Computing
---

##<i class="icon-cloud"></i> Understanding Apache CloudStack

<img src="/cloudstack/images/cloudstack-oss-architecture.png" class="illustration" width="294" height="333"> 
Apache CloudStack is open source software that forms the foundation for infrastructure clouds. Data center operators can quickly and easily build cloud services within their existing infrastructure to offer on-demand, elastic cloud services. Enterprises can use CloudStack to take on hybrid workloads, making it easier to manage legacy workloads while spinning up workloads that take advantage of the cloud model.

CloudStack users can take full advantage of cloud computing to deliver higher efficiency, limitless scale and faster deployment of new services and systems to the end-user. CloudStack allows user to coordinate virtualized servers, networking and network storage to provide infrastructure-as-a-service (IaaS) just like hosting providers &ndash; but on their own hardware. 

CloudStack is an open source cloud operating system which delivers public cloud computing similar to Amazon EC2 but using your own hardware. CloudStack provides orchestration of your virtualized resources into one homogeneous environment where you can delegate the creation to users of the virtual machines using the self-service CloudStack portal.

CloudStack provides powerful features for enabling a secure multi-tenant cloud computing environment. With one click virtual servers can be deployed from a pre-defined template. Virtualized instances can be shutdown, paused and restarted via the web interface, the command line or by calling the extensive CloudStack API.

CloudStack can be used for multiple purposes:

- Service Providers can offer virtualized hosting in an elastic cloud computing configuration
- Enterprises can stage development, testing and production in a consistent way easing the development and publishing processes for applications
- Web content providers can deploy scalable, elastic web infrastructure that can adapt to meet the demand of their readership
- Software-as-a-Service providers can offer true multi-tenant software hosting while securing each user's environments

All these capabilities are a result of years of development and collaboration by the Cloudstack development team with cloud computing users to deploy some of the largest, most scalable private and public cloud computing environments in the world.

###Key Features

- **One Cloud, Multiple Hypervisors** - With CloudStack, a single cloud deployment can run multiple hypervisor implementations of multiple types. Based on a pluggable architecture, CloudStack software works with a variety of hypervisors including KVM, vSphere and Citrix XenServer to give customers complete freedom to choose the right hypervisor for their workload.
- **Massively scalable infrastructure management** - CloudStack lets you manage tens of thousands of servers across geographically distributed datacenters through a linearly scalable, centralized management server that eliminates the need for intermediate cluster-level management servers. No single component failure can cause cluster or cloud-wide outage, enabling downtime-free management server maintenance and reducing the workload of managing a large-scale cloud deployment.
- **Easy-To-Use Web Interface** - CloudStack makes it simple to manage your cloud infrastructure with a feature-rich user interface implemented on top of the CloudStack API. Fully AJAX-based and compatible with most popular web browsers, the solution can be easily integrated with your existing portal for seamless administration. A real-time view of the aggregated storage, IP pools, CPU, memory and other resources in use gives you better visibility and control over your cloud.
- **Robust RESTful API** - CloudStack implements industry-standard APIs on top of a low-level CloudStack API with its own unique and innovative features. Although the CloudStack API is documented, maintained and supported, CloudStack does not assert it as your only option! We also have support for the EC2/S3 API and may implement other cloud API standards as they become available.

For a full list of features, see [our feature list](/features.html). 

###Benefits

- CloudStack empowers users to "serve themselves" - giving IT the opportunity to remove roadblocks from speedy service delivery and to focus on solving business problems.
- CloudStack automates previously labor intensive tasks, helping to reduce IT operations costs and deliver services more quickly.
- Allows IT to provide standardized workloads, which ensure consistency with application and service delivery.
- Enhances visibility into resource allocation and the business usage of services.
- Increases the server/admin ratio and delivers benefits of scale: Even if deployed globally!

###Download Now

You can get started with CloudStack immediately. See our [downloads page](downloads.html) for source code and convenience binaries.
