Founders and product managers that have ever had to deploy and manage their own IT infrastructure understand how difficult it can be to keep everything running. Sometimes this IT infrastructure management has been outsourced by locating a provider that can select, configure, and manage the hardware and software infrastructure. However, this doesn’t alleviate the time and expense of planning, installing, and removing this infrastructure as your business needs change.
Cloud computing reduces your time and expenses by allowing IT and other infrastructure services to be provisioned on-demand. Typical cloud computing resources available include: compute services (CPU), storage services, data storage, and applications. Each of these cloud services are metered, much like electricity and other utilities, allowing the business to pay for only what they need. No more guess-work on how many servers or software licenses to purchase.
Cloud computing can be summarized with these core advantages:
It takes a large amount of money to build up a full IT infrastructure: servers, bandwidth, rack space, electricity, network firewalls and switches, test environments, production environments, email services, and other supporting systems. This infrastructure takes time and money to locate, install, and maintain. This is money your startup has to spend on infrastructure rather than investing directly into the product. Cloud computing strives to change this by distributing this cost across multiple customers.Instead of every startup building the same infrastructure, you get to outsource it to someone who is more capable of monitoring and managing what you need. In short, cloud computing helps you defer the cost by paying for only what you need now rather than everything up front. Plus, you get to share the cost with other customers that need the same kind of resources. Cloud computing builds on these "economies of scale" and can work in favor of your startup.
Not only are there costs for hardware, there are other costs that should be factored into the shared cost model:
Personnel (and middle managers) for hardware/software monitoring and management
Hardware repairs and downtime if critical hardware or software is down
Security, facilities, cooling, electricity, backup power systems, etc
Cloud computing can provide a large reduction of infrastructure, creating a huge advantage for many startups.
Deploying and configuring hardware and software can take weeks to months of valuable time. Cloud computing provides on-demand provisioning of these resources, allowing businesses to become more agile. No more waiting to determine if network, storage, or server capacity is sufficient for a new product or service offering. Identify the need, provision it from your cloud service provider, verify the configuration, and promote it to production when ready.
In addition, the ability to provision services as needed allow for the exploration of new or alternative production environments. Product configurations may be cloned into temporary environments, changes made, or new opportunities explored all within a much shorter timeframe. These changes can then be rolled into a production environment, adjusted, or abandoned, all with a reduced impact to both cost and risk.
Elasticity is the on-demand growth or shrinkage of a resource for a specific time. In short: only what you need, only when you need it. Is your business growing? Grow your storage and CPU power. Is your business stabilizing? Keep what you have. Is your business slowing down after a busy season? Shrink your resources until next time. Use what you need, when you need it.
Often, Amazon's Elastic Compute Cloud (EC2) comes to mind as an example. Amazon provides customers with the opportunity to grow or shrink the number of servers they need at a given time, giving them nearly unlimited compute power.
Elasticity, however, is about more than just CPU power. Any resource that can be pooled, automated, and managed can be made elastic: CPUs, memory, storage, databases, network bandwidth, message brokers, deployment platforms, web applications, etc.
It is important to note that elasticity is different from scalability. Scalability is dealing with growth or shrinkage of resources over time, whereas elasticity is related to a specific period of time.
As an example, several years ago a major retailer experienced a severe shortage of servers during the Christmas season. This caused a variety of problems when taking orders online. Their need wasn’t driven from month-over-month growth of customer usage (scalability), but increased web traffic for that specific time of the year (elasticity).