If you check online, there are thousands
of different definitions of what the cloud might
mean to someone.
I've often heard people describe the cloud
as computing devices that are simply located off site
from where you happen to be.
But the cloud incorporates so many more capabilities
than that.
Take, for example, the deployment of new applications.
Application instances usually involve
a lot of different components and services
all working together.
So you can deploy a web server, a database server,
an application server, and anything else
you need to run that application with one click.
And it is now available to anyone in the world.
If you have a very busy application that
needs more resources, you can simply
deploy more application instances
to deal with that load.
And when that load is decreased, you
can remove any excess instances to perfectly size
your particular application.
This application can also be deployed to anywhere
in the world.
You can have it in a data center that's in the United States.
You can deploy another application instance
to Europe and yet another instance to Asia.
You can move those application instances from one data center
to another where you are effectively following the sun.
So as people need more access to that application,
they can use a data center that's closest to them.
And from a cost perspective, this
is a very efficient way to deploy an application.
You don't have to buy your own equipment.
You don't have to maintain your own data center.
You can simply pay for time on someone else's
cloud-based system and pay for all of these resources
as you need them.
Some organizations don't go to a third party for cloud services.
Instead, they purchase their own equipment
and build their own cloud within their own data center.
We commonly refer to this as a private cloud
because it's one that only that company has access to
and it's not one that's designed to be shared with anyone else.
Cloud services provided by Amazon, Microsoft, Rackspace,
and others can be configured as public clouds
so that you can deploy application instances that can
be used by anyone in the world.
Some organizations might build application instances
where part of the application instance
is on their own private internal cloud
and the other part of the application instance
is managed at a third party, such as an Amazon
or a Microsoft.
That combination of using both a private and a public cloud
is referenced as a hybrid cloud deployment.
There might also be a situation where many organizations that
have a similar goal might all chip in
to purchase their own cloud equipment.
This would give them the advantage
of having a private cloud without the expense
of purchasing all of the equipment just for this cloud.
And so with a community deployment,
all of those organizations can share in the overall cost.
There may be times when an organization has
built their own application instance that
includes databases, web servers, and other devices.
In those situations, a company may only
need the raw infrastructure to be able to load the software
and deploy these cloud instances.
If an organization only needs CPU storage and a network
to be able to deploy this application instance,
then they want to use infrastructure
as a service or IaaS as their cloud deployment model.
You'll sometimes hear this referred
to as hardware as a service or HaaS
because you're effectively buying time on someone else's
hardware and deploying your own software
to that particular deployment.
In this type of cloud model, the end user
is responsible for a large amount of the implementation.
The cloud provider is effectively
providing the hardware to run this application
and in some cases, perhaps even the operating system.
But everything else would be the responsibility of the end user.
Because you as the end user are deploying this application,
you're also deciding how and where this data will be stored.
So in the case of infrastructure as a service,
you may have a bit more control and security over that data.
A good example of an infrastructure as a service
deployment might be with a company
that provides web services.
So they would provide you with the server
to be able to load the website.
And you would be responsible for building and deploying
the website content.
With infrastructure as a service,
the end user is responsible for the application, the operating
system, and everything in between.
With software as a service or SaaS,
the end user doesn't have to deal
with anything relating to the application or the operating
system.
There's effectively no local installation required
for any type of software.
The end user can simply log in and manage
an email distribution list, log in
and manage their payroll or any other type of software
as a service implementation.
This means the end user doesn't have
to worry about building their own application.
They don't have to deploy an application
or update or manage that application.
They don't have to find a way to store the data
or protect any of the data that might be there.
Instead, the software as a service provider
is the one responsible for maintaining the application,
storing the data, and keeping all of that information safe.
So if you're simply logging in to a website
and using that application, it's most likely software
as a service.
Good example of that might be Google Mail.
You simply use your username and password.
And now an entire email system is available to you.
You don't store the data for the email.
You don't maintain the application.
And you are not responsible for providing
any type of ongoing maintenance of Google Mail.
Google handles that entire process
so that would be defined as software as a service.
Another good example of software as a service is Microsoft 365.
The email, word processing, spreadsheets,
and everything else relating to that cloud-based service
is all managed by Microsoft.
You simply log in and the entire application is available to you
because it was deployed as software as a service.
The middle ground between infrastructure
as a service and software as a service
is platform as a service or PaaS.
With platform as a service, someone else
is providing you with a platform that you can use
to build your own applications.
So you would need your own development team,
but someone else is providing you
with all of the building blocks that you
would need to put together every piece of that application.
So if someone is a provider of platform as a service,
they may allow you to log in and give you a set of modules
that you can put together to build your own app.
So you might have a login page module, an inventory page
module, and another page that allows
people to check in or check out pieces of that inventory.
You would be responsible for putting together
all of those different modules and then placing them
on the platform as a service so that you can then
make that application available to others.
This service provider has built this platform
so that you don't have to do a lot of programming.
Most of the hard work has already been done for you.
You simply need to put together all
of the modules you might need, and the platform
as a service provider will take care of making sure
that your data is safe.
A good example of a platform that gives you
all of these building blocks that you can then put together
to create your own application might be
a platform like salesforce.com.
Salesforce has an extensive platform as a service offering
that gives you complete customization
over the applications that you can easily
deploy on their platform.
If you were planning to deploy these applications
in your own data center on your own hardware using applications
that you yourself have written, then you're
probably using an on-premises model
where everything in that model is managed by the client.
With cloud-based technologies, a portion of this
is going to be managed by the provider.
So if we look at infrastructure as a service,
the provider might provide us with the networking,
the storage, the server, and the virtualization platform.
And everything else on infrastructure as a service
would be our responsibility.
So we might need to install the operating
system, the middleware, anytime runtime data,
and the data and the application itself
for the application instance.
If you're using software as a service, none of this
is managed by the client, and everything is
managed by the cloud provider.
So the cloud provider is the one writing the application.
They're the one deploying it on their own systems.
They're providing the operating system,
and the networking, and everything else
required to make that application work.
And in the middle is platform as a service where the service
provider is giving you everything
you need to build your own applications.
And then you would provide the application and the data that
would run on their platform.