Software-defined infrastructure, also known as cloud computing, lets developers and operators use software to requisition, configure, deploy, and manage bare-metal and virtualized compute, storage, and network resources.
Cloud computing also enables more abstract platforms and services, such as Database-as-a-Service (DaaS), Platform-as-a-Service (PaaS), serverless computing, container orchestration, and more.
Private clouds let businesses use expensive on-premises hardware much more efficiently.
Public and hosted private clouds let businesses rent capacity at need, letting them move and grow (or shrink) faster, simplifying planning and avoiding fixed capital investment.
Benefits of cloud paradigms
Self-service (platforms on demand) – Cloud resources can be available within hours or minutes of needing them. Thus speeding all phases of development, and enabling rapid scaling of production capacity. Applications can be scaled in the public cloud region, service set, or provider that is most cost-effective.
Close specification, consistency, repeatability – Developers can capture and standardize unique configurations, maintaining configurational consistency of platforms through development, testing, staging, and production. Deploying a known-good application and configuration prevents bugs that can be introduced during manual platform configuration changes.
Platform abstraction – Container technologies abstract apps and platforms away from one another, by encapsulating application dependencies and letting your containerized app run on a generically-specified host environment.
Challenges of cloud paradigms
Developers must pay close attention to platform design, architecture, and security. Cloud environments make new demands on applications. Public or private cloud frameworks have varying UIs, APIs, and quirks. This means that users cannot always treat cloud resources as the commodities they really should be, especially when trying to manage clouds manually.
Access control is critical, because cloud users with the wrong permissions can do a lot of damage to their organization’s assets. Cloud permissions can be also challenging to manage, particularly in manually operated scenarios.
When cloud resources can be self-served quickly via manual operations, consumption can be hard to manage, and costs are difficult to calculate. Private clouds require frequent auditing and procedures for retiring unused virtual infrastructure. Public cloud users can be surprised by unexpected costs when pay-by-use resources are abandoned, but not torn down.
Many of these challenges can be addressed through automation.