Within any enterprise environment.
We have to look at the different infrastructure concepts that go within our environment.
That can include things as hardware, software, the different networks, our endpoint devices, and
what most literally people miss is usually people themselves.
So let's talk about hardware first.
Hardware is any device or physical device that's installed or involved within your enterprise environment.
This is often servers, switches, firewalls, you name it.
If it has a physical construct to it and it's inside your network, it's considered a hardware specific
device within your enterprise environment.
Then there is software.
Software usually resides on the hardware, and that software could be independent of the specific hardware,
or it could be dependent upon the hardware itself.
What I mean by that is if I've got a firewall that has specific software involved in it, then that
is specific to the hardware itself However, I can also have software on a specific server or on another
enterprise device that, while it is specifically designed to be on that hardware, it is interoperable
outside of that hardware infrastructure where dependent upon the hardware that's utilizing that software
goes hand in hand, i.e. a firewall or a switch.
Whereas within a server I could have an application that just checks and monitors different data that's
going through it.
Then there's the network itself.
Networks are usually comprised of different hardware, and that hardware usually has a software component
that allows you to communicate from one point to another, whether it's from your client to a server,
or from a server to the network, or from a client over the network to another client way out in the
middle of nowhere.
Uh, your network infrastructure usually comprises advanced infrastructure and hardware devices that
interoperate between each other to create a seamless environment of communication.
Then we have endpoint devices.
Endpoint devices are a device or a piece of hardware that is utilized at the end of the network infrastructure.
Structure.
This is usually clients like a windows machine or a mac, or even a Linux.
But it's not usually something that we would consider to be like a server or a firewall or a switch.
And only devices are specifically at the end of the road when it comes to your network IoT devices.
Then there's people that actually work within the environment itself.
Those people are responsible for the maintenance, the operation, even the installation of new devices
that are interacting within your enterprise environment.
We can't forget about people.
They are the framework and the foundation of any corporate environment.
And people really determine how well or how ill your enterprise environment is within your different
infrastructure environment, within the different enterprise environments.
Most often we as our mental picture goes through, we look at an enterprise environment as being on
prem or on premises, meaning that the physical hardware devoted to our enterprise environment is something
that we can see and touch.
If I have a server go down, I can physically walk into the server room, unplug it or mess around with
it, jack into it, and then change the configuration files and actually move the cables in a purely
virtual environment, I log into the system, and while I don't have necessary application to change
cables, I can still change the configuration.
However, in modern technology, we often have an on prem network that is also using virtualization
as a subset.
This is for different purposes.
Within an on prem network.
I usually have a higher data speed, a higher throughput, it's more leverage, it's more secure.
And I may need that within the different data sets that are operating within my enterprise environment.
However, a virtual network provides the advantages of fast scaling.
I can encompass more users rapidly.
Uh, it's quicker for data sets across the world, meaning that I may have somebody in Italy that needs
to access the information.
And since it's virtual, that's easier to get Ahold of than, say, if the enterprise environment was
on prem.
So it provides that little bit of availability to it in a virtual environment.
However, in modern technology, we do a hybrid network architecture.
This allows us to keep what's secure.
Secure.
And I may have data that I need fast, secure access to.
With robust speeds.
And then there may be data that I need.
Availability to across the world or scalability where I need the capability to expand my network architecture
very quickly, which is an advantage of a virtual network.
By combining the two, I get the best of both worlds.
Within a serverless architecture, we are literally calling something serverless because there is no
server.
This is something that we fairly recent in development that allows us to literally expand our capabilities
very quickly in a serverless environment.
I know I keep on saying serverless like you should automatically know what it is, but it truly is a
environment that has no server.
This provides us a lack of management, which means I don't have to go through and constantly address
it.
I don't have to log into it every day and change the little idiosyncrasies within an environment on
a day to day basis.
It's also event driven, meaning that if an event occurs, then we go through, and if this happens,
then this happens in auto scales.
If I have the capability or if I need more, uh, expandability or more capability to handle more users,
it can auto scale very quickly to encompass more users simultaneously interacting with that serverless
architecture.
An example of this would include AWS or Azure, or even Google iCloud.
Within a virtual environment, virtualization is set up into three different important points.
Isolation is usually the primary point.
If I make something virtual, I can isolate it from the rest of my network.
That provides me a secure environment to do testing and maybe do some bug hunting, maybe even some
malware analysis.
By providing an isolated network within a virtualization, I can literally go through and fool around
with it without the perceived problem of accidentally screwing something up.
Uh, it's not uncommon, especially in a virtualized environment, to play around with things.
We obviously don't want to go to a production environment and start tweaking the settings, and now
we've got our network going all over the place.
Uh, sometimes machines don't like to be messed with.
And so if you change your setting and then you change again, you change again.
The machine freezes up, which just causes all kinds of problems within our enterprise environment.
It wasn't that long ago when I worked for a different company where we went through and management came
out and said, oh, let's change this.
And then it went down to the tech two level.
And they said, well, let's change this to encompass this.
Well, that didn't work.
Let's change this.
So 5 or 6 different iterations later with working with tech two inside the environment in a production
environment, the system just stopped operating.
It just didn't like it.
And this is bad.
We do not want our production environment to stop operating or to make it to where we can't actually
do anything with it.
By utilizing an isolated virtualized environment, we can mess around with those settings, see how
they interact with the different software, see how it's interacting with our other environments, all
in a virtualized setting where if it stops working, no harm, no foul, we reboot it, we start from
scratch.
And once we've identified the solution, then we roll that out to our production environment.
We can also do resource pooling inside of a virtualized environment.
What I mean by that is inside of a server environment, I have all kinds of resources.
I may have 128GB of Ram, and more than enough CPU power to do anything and everything that I want to
do.
And so by doing resource pooling, I can build out different virtualized environments, all with a set
of Ram, maybe eight gigabytes of Ram, and set apart literally 30 different machines to do 30 different
processes and pool those different resources.
I can also do snapshot and cloning when my example before, when we talked about how I've got an environment
that I can roll out new fixes on, I can literally take a snapshot of a production server or a production
machine, snap that into a virtualized setting, and then work on that virtualized setting in isolation
in order to make it roll out.
It's not unnatural to see something in a virtualized setting, and then want to clone it so that we
can fool around with it some more.
Maybe I'm messing around with one isolated environment, and I said, well, that's pretty good, and
I don't want to screw with it, but maybe I want something else so I can continue to work on it.
But if that doesn't work, I want to keep this one.
I simply clone the machine, and then I can have an exact copy of that original virtualized machine
machines roll out into a new virtualized machine that then I can start messing around with.
This is referred to as cloning.
There's two types of hypervisors when it comes to virtualized systems.
There's type one and then type two.
This is something that you will need to memorize when you're going through your CIS exam.
It's real simple.
A type one virtualized or hypervisor system is a bare metal machine, meaning it's operating at the
core function of your system.
If I were to take my laptop, wipe it from everything, and then put Linux on it, it is now a Linux
machine that is operating at a hypervisor level.
One aspect with a type two hypervisor.
This lays on top of the existing operating system.
So this is what we probably see in something like VirtualBox or virtual machines where I've got my windows
environment.
That is my core operating system, but then I'm laying on top of it a VirtualBox program that has a
Linux box on top of it.
In my example with the last lecture that we talked about, I was showing you a virtualized system on
top of my windows system.
This is indicative of a type two hypervisor where it lays on top of the operating system.
Finally, we have containerization.
Now, containerization and virtualization often get confused.
Virtualization involves emulating hardware and booting a full fledged operating system within the environment.
Containerization, in contrast, leverages the host machine's operating system kernel, allowing for
faster startup and more efficient resource utilization.
While there are some vast similarities between the two.
What you really need to know about containerization is that it's a faster spin up time than what you
may see in a virtualized system.
It's very much isolated, just like a virtualized system.
I'm portable, just like a virtual system, sort of.
Right.
So with a virtual system, if it's sitting on top of a hard drive on top of a desktop computer, that's
not really portable, but on my laptop, if I have virtualization on on a virtual box, obviously that's
portable, but that's because my laptop is portable.
That's not what we're referring to here.
With containerization, we're truly portable, meaning that we can move the device or we can move the
the kernel as we see fit.
And then there's resource efficiency.
Containerization is a lot more efficient than virtualization.
The problem with virtualization is I'm stealing from the main operating system in the type two, where
I'm taking it all in a type one, right.
And a type two.
We're going to dedicate so much Ram to it.
We're going to dedicate so many processors and it's stealing from that core machine.
And that's normal for this type of system.
However, with containerization we have a lot more resource efficiency where it can overlap with one
another and it just provides a more streamlined process.
A lot of times you'll see virtualization for things like I just explained where I'm a at home user and
I'm using virtualization one, two, three, four different machines, and I'm spinning those different
machines to interact with one another.
In containerization, I'm using more containerization in an enterprise environment where I'm literally
containing a different server or a different complexities of an enterprise environment.
That's where containerization is utilized, because I need that resource efficiency.
I need that ability to quickly expand.
Containerization has a faster spin up time.
It's better for capabilities, aspects of it, and it still provides us that isolation.