Since the advent of cloud computing, these two acronyms have been the talk of the town. What exactly do they stand for? What distinguishes them? Should they be opposed or associated?
IaaS or Infrastructure as a Service
IaaS is part of a trend observed over the last twenty years or so of delegating digital assets to Cloud services. Let’s draw a few parallels.
Around the year 2000, if a music lover wanted to listen to a song by Pearl Jam, he or she usually had to own the band’s CD. Now, thanks to services such as Spotify and Deezer, they can listen to the track in question without having the physical object at their disposal.
At the same time, if you wanted to play a particular video game, you usually had to buy the corresponding CD or cartridge. With a service like Steam, they can now play Baldur’s Gate 3 or Elden Ring without having to own the corresponding DVD.
The same logic applies to IaaS: it is no longer necessary for a company to purchase expensive, high-powered computer servers to house its software and applications. By renting cloud services, they save the cost of purchasing such hardware, and the expense of maintaining it.
Amazon, forerunner in IaaS
Cloud Computing is not a new concept in itself, dating back as far as the 1960s. However, it was the development of AWS (Amazon Web Services) in 2006 that gave IaaS its first breakthrough.
Known primarily as an online bookseller, and later as a retailer of a wide range of products, Amazon was the first to offer easy, on-demand access to the server infrastructure it had set up.
It wasn’t long before Amazon Web Services counted a large number of prestigious customers:
- Netflix
- Samsung
- Airbnb
- Dow Jones
- Expedia
- CIA
- etc.
Microsoft, Google and others...
From 2008 onwards, other technology giants entered the fray, including Microsoft with Azure, Google (Google Cloud Platform), IBM with IBM Softlayer, later renamed IBM Cloud Infrastructure, as well as Oracle and Alibaba, to name but a few. This competition has stimulated innovation.
Businesses embrace IaaS
During the 2010s, companies of all sizes gradually came to appreciate the benefits of IaaS – the ability to manage cloud computing, or at least outsourced computing, including servers, storage systems, compute units… They were sensitive to factors such as the flexibility offered by this approach.
Whenever a need arises for storage or computing power, it’s simply a matter of renting new infrastructure from the IaaS provider (or adapting the current monthly or annual subscription). Developers can concentrate on their programming tasks, rather than having to worry about the “hardware” aspects.
IaC or Infrastructure as Code
While IaaS is concerned with hardware, and more specifically cloud servers, IaC (Infrastructure as Code) is concerned with configuring these same servers via scripts. Instead of having to manually configure the desired state of these infrastructures, this is modeled in code files, which are then executed on the servers.
Before the advent of IaC, each infrastructure had to be configured individually, by hand – a very time-consuming process. This stage, prior to software installation, was not immune to human error.
As a result, a whole series of IaC tools gradually appeared:
- Terraform from HashiCorp, which takes into account tools such as AWS, Azure, Google Cloud and others;
- AWS CloudFormation, Amazon’s offering for its Cloud service;
- Microsoft’s Azure Resource Manager;
- Google Cloud Deployment Manager, Google’s tool for managing Google Cloud Platform servers;
- Ansible, developed by Red Hat (an IBM affiliate),
- etc.
IaaS and IaC: similarities and differences
What’s the point between these two approaches? Both aim to help companies manage their cloud infrastructures more flexibly.
The difference is clear:
- IaaS focuses on the supply and deployment of hardware infrastructures adapted to a company’s needs at a given point in time.
- IaC is a method of controlling these infrastructures using software, i.e. scripts usually coded in JSON or YAML.
When to use one or the other?
Typical IaaS scenarios
- When a company is in its start-up phase, it often doesn’t have the budget to invest in hardware, so IaaS will help it get started with basic equipment that can be upgraded as demand grows.
- Similarly, when the company is considering a new project requiring IT resources, IaaS will avoid the need to purchase specific equipment.
- To guard against any situation where IT becomes inoperable, a company will benefit from having replicas of its data and software in other parts of the world.
Typical scenarios for IaC
- A company that frequently deploys identical test, development or production environments will be helped in this respect by IaC: the code developed to configure one infrastructure can be used unchanged on the new infrastructure.
- IT managers wishing to keep a clear record of successive versions of server configuration will be helped in this by IaC applications. In fact, IaC code acts as documentation.
IaaS or IaC?
If you’ve been reading this, you’ve probably come to the conclusion that there’s no point in pitting these two approaches against each other.
Although they can be implemented independently, ideally, IaaS and IaC will be used in a complementary way.
Simply put, IaaS provides the resources needed for enterprise IT. IaC guarantees optimized configuration of these resources.
So, it seems that the winning formula lies in combining the two!