Overview
Infrastructure-as-a-service (IaaS), also known as cloud infrastructure services, is a form of cloud computing in which IT infrastructure is provided to end users through the internet. IaaS is commonly associated with serverless computing.
IaaS vs. PaaS vs. SaaS
IaaS is 1 of 3 widely recognized cloud service models—alongside Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS)—that gives users all the benefits of on-premise computing resources without the overhead. In the IaaS model, users handle the applications, data, operating system, middleware, and runtimes.
The IaaS vendor provides the virtualization, storage, network, and servers. This way, the user doesn’t have to have an on-premise datacenter and doesn’t have to worry about physically updating or maintaining these components themselves.
In most cases, the IaaS user has complete control of the infrastructure through an application programming interface (API) or dashboard. As the most flexible as-a-Service cloud model, IaaS makes it easier to scale, upgrade, and add resources—like cloud storage—instead of having to anticipate future needs and pay costs up front.
Kinds of “as-a-Service” cloud service offerings
The term as-a-Service generally means a cloud computing service that is managed for you so that you can focus on what’s more important, like your code and relationships with your customers. These offerings have grown in popularity because of their pricing models, which can be more cost-effective than self-managed, on-premise infrastructure. At the same time, the ecosystem of available technologies, partners, and integrations offered by cloud service providers continues to expand.
In general, IaaS offerings require the customer to handle more layers of management than PaaS and SaaS options.
With PaaS, hardware and an application-software platform are provided and managed by an outside service provider, but the user handles the actual application and data. Primarily for developers and programmers, PaaS gives the user a platform on which to develop, run, and manage their own applications without having to build and maintain the infrastructure usually associated with the process. Cloud platforms are a type of PaaS, which includes services provided by Amazon Web Services (AWS), Microsoft Azure, Google Cloud, and IBM Cloud.
SaaS is a service that delivers a web application, which the service provider manages, to its users typically through a web browser. Software updates, bug fixes, and other general software maintenance are taken care of for the user, and they connect to the app through a dashboard or API. SaaS also eliminates the need to have an application installed locally on each individual user’s computer, allowing greater methods of group or team access to the software as desired.
As-a-service offerings are especially appealing for customers whose workloads change, since the service providers can provide the expertise and effort required to handle scalability and load balancing.
How IaaS relates to virtualization, automation, and containerization
An IaaS provider is able to simplify the developer experience by removing the overhead of setting up managing servers. This usually relies on cloud computing architecture supported by virtualization, containers, and automation. To the developer, applications can just be built and deployed, as the server management is abstracted away.
Through virtualization, virtual machines (VMs) provide complete environments that function as a virtual computer system with their own CPUs, memory, network interface, and storage. In IaaS, these are created on a physical hardware system in a data center. Software called a hypervisor separates the machine’s resources from the hardware and provisions them appropriately so they can be used by the VM.
IT automation is at work beneath the service of every IaaS offering, enabling the underlying virtual machines and other infrastructure to be deployed seamlessly, and scale up and down as necessary to meet demand. The automation of multiple tasks and configurations across groups of systems or machines is known as orchestration.
An IaaS offering may also offer support for containerization, in which software code with all its necessary components like libraries, frameworks, and other dependencies are packaged in their own Linux® container, ready for deployment into a computing environment (which can be a VM). In contrast to virtual machines, containers do not include their own operating system (OS) and thus can be much smaller in size.
Specific IaaS solutions can help developers working with containers. One solution is Kubernetes, an open source container orchestration platform that helps manage distributed, containerized applications at massive scale. Kubernetes takes care of automating the deployment and management of containers. Some IaaS providers offer Kubernetes as a service.
What does IaaS have in common with DevOps?
DevOps describes a way of working at the intersection of development and operations. It emphasizes reducing the time it takes for software improvements to advance to deployment, so users gain access to new applications faster. DevOps approaches require development teams and operations teams to communicate frequently and collaborate as teammates.
DevOps goes hand in hand with frequent changes to code and dynamic infrastructure usage, which can make it a good fit for IaaS. DevOps emphasizes automating routine operational tasks and standardizing environments across an app’s lifecycle. DevOps teams will often build their software using a microservices architecture and link these services together with APIs. This all helps teams deliver software faster by focusing on creating smaller pieces of functionality, then using strategies such as agile methodology to bring it all together.
IaaS—by reducing the need to maintain server infrastructure and emphasizing a simpler, automated developer experience—can help support DevOps workflows.
What’s the difference between IaaS and serverless?
Serverless computing describes a cloud-native development model in which servers are abstracted away from app development, and it’s commonly associated with IaaS.
Serverless relies on a cloud provider to manage both the infrastructure and the scaling of apps. Serverless apps are deployed in containers that automatically launch on demand when called.
Under IaaS, it generally remains the user’s responsibility to scale up server capacity during times of high demand and to scale down when that capacity is no longer needed. The cloud infrastructure necessary to run an app is active even when the app isn’t being used.
With serverless architecture, by contrast, apps are launched only as needed. When an event triggers app code to run, the public cloud provider dynamically allocates resources for that code. The user stops paying when the code finishes executing. With serverless, routine tasks such as managing the operating system and file system, security patches, load balancing, capacity management, scaling, logging, and monitoring are all offloaded to a cloud services provider.
Things to consider when choosing an IaaS provider
- Flexibility: Purchase only the components you need for your use case and scale them up or down based on business needs.
- Affordability: Low overhead and no maintenance costs make IaaS an affordable option. Pay only for what you use and how often you use it—similar to paying a utility bill.
- Control: The user has control of their infrastructure.
- Security: Does the provider have a trusted reputation and the resources to prevent and manage any security threats? Are there documented disaster recovery protocols that ensure business continuity?
- Multitenant systems: As IaaS providers tend to allocate infrastructure resources to multiple clients as needed, the provider is required to make sure that customers are unable to access each others’ data. Having multiple customers using a provider’s infrastructure can create an imbalance known as noisy neighbor—where a single user’s monopoly of a specific resource can slow down performance for others—so providers need to plan resource allocation carefully. This is why it's important to understand how the provider scales with their consumer loads.
- Service: What are the service provider’s service-level agreements (SLAs)—the minimum amount of time and effort the provider guarantees to solve resource provisioning issues?
- Reliability: Performance and speed largely depend on the provider. Any software or hardware problems on their end will impact user runtimes.
IaaS with Red Hat
Red Hat’s cloud infrastructure products let you build and manage an IaaS cloud. These include Red Hat OpenStack® Platform, Red Hat Satellite, Red Hat Ceph Storage, and our container orchestration platform Red Hat OpenShift.
Deliver services faster, increase your IT department’s value, reduce total cost of ownership, and improve manageability. Deploy the components however you want, whenever you want—and you can always depend on Red Hat’s award-winning support.
To simplify buying and managing enterprise software, Red Hat Marketplace offers automated deployment of certified software on any Red Hat OpenShift cluster.