---
## Il n'y a pas de nuage
:no_entry_sign: :cloud: :two_women_holding_hands: :computer:
### Ce sont juste les ordinateurs des autres ! :wink:
[Georgios Kaklamanos](mailto:georgios.kaklamanosjulien.leduc@cern.ch) and [Julien Collet](mailto:julien.collet@cern.ch)
from **IT ST**orage group [CERN](http://www.cern.ch)
---
### Usine automobile
:factory: :car:
Note:
My guess is that you have heard the term "cloud computing" or that
"runs on the cloud", going around the news. But what is the cloud? How
did that came to be? And what does it mean that something runs on the
cloud?
Right now there are a lot of applications that store data on the
cloud. For example when you buy a new phone and you put your account
information there, soon you get all of your images and contacts
synchronized and ready to use. Or you open your browser to a
collaboration platform and both you and a friend can simultaneously
edit the same document. But you don't run a document editor on your
local machine. It runs someplace else. On the cloud.
----
### Usine automobile
:wrench: :package: :truck:
:construction_worker:
<span>Comment accroître les performances?<!-- .element: class="fragment" data-fragment-index="1" --></span>
Note:
Let's go back and start with an analogy. We have a factory that wants
to make cars. It has one assembly line, some shelves next to it where
we can store car components, and a big warehouse to the other side of
the street. The factory works five days per week and the factory
manager is decides what car will be produced every day.
You can think of a computer like this factory. The assembly line is
its processing power (CPU), the shelves the main memory (RAM), and the
warehouse its storage (Hard Drive). The manager is the Operating
System, which decides which programs (cars) will use it's resources.
And as the manager in a factory allocates days of the week to
different cars, same the operating system allocates CPU time to
different programs.
Now imagine that you want to increase your production. One way to do
it would be to have a more efficient assembly line that will work
faster and faster. At a point you'll reach a limit with speed. What
could you do then?
<pause for someone to reply; hopefully saying to add more assembly
lines>
----
:wrench::wrench::package::package::truck:
:wrench::wrench::package::package::truck:
:construction_worker:
Note:
Exactly, that's what happened with CPUs around 2004. We had reached
the limit of the speed of one processor, so we decided to start adding
more cores (assembly lines) to a computer.
Now you have a really big factory, with many assembly lines (CPUs) and
you could produce multiple cars (run multiple programs) in the same
time.
----
### S'il y a un problème sur une ligne...
:wrench::boom::package::fire::truck:
:wrench::wrench::package::package::truck:
:scream:
Note:
----
### ... toute l'usine s'arrête !
:x::boom::x::fire::no_entry:
:x::x::x::x::no_entry:
:rage:
Note:
However that creates the following problems: 1. If there is an
accident on one assembly line basically the entire factory has to stop
to check what’s going on. And imagine that these cars are ordered by
different companies. And they get angry when their production is
disturbed by issues coming from another one. Similarly, they don’t
like how basically people from other companies see how their cars are
constructed, since there might also be private information and patents
there.
---
![](https://codimd.web.cern.ch/uploads/upload_6de0e897dc2ad176305d1dcec45ffd68.jpg)
Note:
The situation was the same in datacenters. Computing servers, which
are computers designed specifically for professional use, had become
very powerful, so the administrators, the people who were responsible
for managing them, would install a lot of applications to them: A
Database, a mail server, webserver, etc, etc. And we’d have the same
issue with the factory, namely these programs would be managed by
different people, and there would be the security issues and those of
stability (e.g. the database people might not like the fact that the
server had to be restarted because the webserver crashed)
Previous Images:
- upload_7f102e250460c42c497cd531ce5a5b7c.jpg
- upload_a59af0161aed66cb82df4fb5841fc6f9.jpg
---
### Mise à l'isolement...
:wrench::wrench::package::package::truck: :construction_worker:
:construction::construction::construction::construction::construction: :construction:
:wrench::wrench::package::package::truck: :construction_worker:
:construction::construction::construction::construction::construction: :construction:
Note:
So how would you solve this issue in the factory? Well, you could
install some fake walls, and parapets between the assembly lines. And
now you tell your manager, that your responsibility are those 2
assembly lines, and you can get components only from these
shelves. And then you get another manager, and another, depending on
how many "partitions" you will make.
----
### ... et ajout d'un superviseur
:wrench::wrench::package::package::truck: :construction_worker:
:construction::construction::construction::construction::construction: :construction:
:wrench::wrench::package::package::truck: :construction_worker:
:construction::construction::construction::construction::construction: :construction:
:woman:
Note:
And then you would need a supervisor for your managers. Let's call him hypervisor.
So you have at the bottom level, a hypervisor who has a holistic view
of the entire factory, then above him the managers (Operating Systems)
that only see their part of the resources, their assembly line, their
shelves, and don't know how many more managers are in the
factory. They only know what their schedule and what their production
needs to be.
Exactly the same thing exists with computers. Instead of installing
the operating system directly to a computer, we install a hypervisor,
which created virtual partitions of the system's resources, what we
call "virtual machines" and on each of these partitions we then
install the operating system. So instead of seeing all the CPUs that
the server -- the physical machine -- has, that operating system only
sees a few of them, what exists in the virtual machine.
---
### Mobilité
:wrench::wrench::package::package::truck: :construction_worker:
:construction::construction::construction::construction::construction: :construction:
Note:
The benefits of this is the better utilization of the resources, since
you make sure that you always use all the assembly lines. Similarly,
since you have the operations isolated, you have better security. The
managers don't see what's going on the other assembly lines. And they
can't influence them either. If one is down due to errors the others
can keep working on. But the biggest benefit is that you can move
around stuff!
What do I mean by that. Say that you are a manager, and you are used
to go to work and see a specific assembly line, working with a
specific set of resources, inside a specific "parapet". Does it make a
difference if the stuff outside the parapet change? If during a night,
someone replaced the mechanisms of all of your machines with faster
and better, but left all the controls and interfaces the same, would
it makes a difference to you? Similarly, if you go to another place
which had the exact same machines, wouldn't you be able to work
directly?
This is what's happening with virtual machines now. Since they don't
depend on the physical resources of the computer, but the "Virtual"
stuff that we have defined, if there is another computer (factory)
running with the same configuration, we could move the entire Virtual
Machine (factory manager), there, and it would still be able to work
fine. And these two computers don't even have to be in the same
location. They can be on different buildings, or different
countries. And because you just see the end result of the program, and
you interact with it through the internet, practically, you also don't
really care where it exists.
----
<!-- .slide: data-background="https://media.giphy.com/media/5WJ09Mca4SzernO9ZV/giphy.gif" -->
:wrench::wrench::package::package::truck: :construction_worker:
:construction::construction::construction::construction::construction: :construction:
----
<!-- .slide: data-background="https://media.giphy.com/media/5bd7bfL2WfVAwAuRHG/giphy.gif" -->
:wrench::wrench::package::package::truck: :construction_worker:
:construction::construction::construction::construction::construction: :construction:
---
<img src="https://codimd.web.cern.ch/uploads/upload_1f08d20dbc8cface9b1725e1a763688b.svg" align="center" class="plain" width=70%>
Note:
And that's how you get the name "cloud" for this. Because when
engineers were making diagrams of the network and the system's
architecture, they used to draw a cloud to represent all the stuff
that run somewhere on the internet, but we don't really know
where. Because even if initially started on a datacenter based on
Germany, because they wanted to renovate it, they moved all the
virtual machines to a datacenter in France.
So there you have it, "the cloud", is just programs that run on other
people's computers. There's no "magic" behind it, although these
technologies are really cool and quite difficult to set up and manage.
And as I mentioned this has a lot of benefits, like better resource
utilization, application isolation and security, and speed. For
example if you are a new company now, and you want to test something,
you don't need to buy your own hardware, you can simply rent resources
from a could provider and then just stop using them. However, a number
of privacy issues arise, since data that traverse different countries
have different country laws being applied to them. But that discussion
is quite a big one and I don't have an answer to give. Also our time
has run out.
---
Note:
My guess is that you have heard the term "cloud computing" or that
"runs on the cloud", going around the news. But what is the cloud? How
did that came to be? And what does it mean that something runs on the
cloud?
Right now there are a lot of applications that store data on the
cloud. For example when you buy a new phone and you put your account
information there, soon you get all of your images and contacts
synchronized and ready to use. Or you open your browser to a
collaboration platform and both you and a friend can simultaneously
edit the same document. But you don't run a document editor on your
local machine. It runs someplace else. On the cloud.
Let's go back and start with an analogy. We have a factory that wants
to make cars. It has one assembly line, some shelves next to it where
we can store car components, and a big warehouse to the other side of
the street. The factory works five days per week and the factory
manager is decides what car will be produced every day.
You can think of a computer like this factory. The assembly line is
its processing power (CPU), the shelves the main memory (RAM), and the
warehouse its storage (Hard Drive). The manager is the Operating
System, which decides which programs (cars) will use it's resources.
And as the manager in a factory allocates days of the week to
different cars, same the operating system allocates CPU time to
different programs.
Now imagine that you want to increase your production. One way to do
it would be to have a more efficient assembly line that will work
faster and faster. At a point you'll reach a limit with speed. What
could you do then?
<pause for someone to reply; hopefully saying to add more assembly
lines>
Exactly, that's what happened with CPUs around 2004. We had reached
the limit of the speed of one processor, so we decided to start adding
more cores (assembly lines) to a computer.
Now you have a really big factory, with many assembly lines (CPUs) and
you could produce multiple cars (run multiple programs) in the same
time. However that creates the following problems: 1. If there is an
accident on one assembly line basically the entire factory has to stop
to check what's going on. And imagine that these cars are ordered by
different companies. And they get angry when their production is
disturbed by issues coming from another one. Similarly, they don't
like how basically people from other companies see how their cars are
constructed, since there might also be private information and patents
there.
The situation was the same in datacenters. Computing servers, which
are computers designed specifically for professional use, had become
very powerful, so the administrators, the people who were responsible
for managing them, would install a lot of applications to them: A
Database, a mail server, webserver, etc, etc. And we'd have the same
issue with the factory, namely these programs would be managed by
different people, and there would be the security issues and those of
stability (e.g. the database people might not like the fact that the
server had to be restarted because the webserver crashed)
So how would you solve this issue in the factory? Well, you could
install some fake walls, and parapets between the assembly lines. And
now you tell your manager, that your responsibility are those 2
assembly lines, and you can get components only from these
shelves. And then you get another manager, and another, depending on
how many "partitions" you will make. And then you would need a
supervisor for your managers. Let's call him hypervisor.
So you have at the bottom level, a hypervisor who has a holistic view
of the entire factory, then above him the managers (Operating Systems)
that only see their part of the resources, their assembly line, their
shelves, and don't know how many more managers are in the
factory. They only know what their schedule and what their production
needs to be.
Exactly the same thing exists with computers. Instead of installing
the operating system directly to a computer, we install a hypervisor,
which created virtual partitions of the system's resources, what we
call "virtual machines" and on each of these partitions we then
install the operating system. So instead of seeing all the CPUs that
the server -- the physical machine -- has, that operating system only
sees a few of them, what exists in the virtual machine.
The benefits of this is the better utilization of the resources, since
you make sure that you always use all the assembly lines. Similarly,
since you have the operations isolated, you have better security. The
managers don't see what's going on the other assembly lines. And they
can't influence them either. If one is down due to errors the others
can keep working on. But the biggest benefit is that you can move
around stuff!
What do I mean by that. Say that you are a manager, and you are used
to go to work and see a specific assembly line, working with a
specific set of resources, inside a specific "parapet". Does it make a
difference if the stuff outside the parapet change? If during a night,
someone replaced the mechanisms of all of your machines with faster
and better, but left all the controls and interfaces the same, would
it makes a difference to you? Similarly, if you go to another place
which had the exact same machines, wouldn't you be able to work
directly?
This is what's happening with virtual machines now. Since they don't
depend on the physical resources of the computer, but the "Virtual"
stuff that we have defined, if there is another computer (factory)
running with the same configuration, we could move the entire Virtual
Machine (factory manager), there, and it would still be able to work
fine. And these two computers don't even have to be in the same
location. They can be on different buildings, or different
countries. And because you just see the end result of the program, and
you interact with it through the internet, practically, you also don't
really care where it exists.
And that's how you get the name "cloud" for this. Because when
engineers were making diagrams of the network and the system's
architecture, they used to draw a cloud to represent all the stuff
that run somewhere on the internet, but we don't really know
where. Because even if initially started on a datacenter based on
Germany, because they wanted to renovate it, they moved all the
virtual machines to a datacenter in France.
So there you have it, "the cloud", is just programs that run on other
people's computers. There's no "magic" behind it, although these
technologies are really cool and quite difficult to set up and manage.
And as I mentioned this has a lot of benefits, like better resource
utilization, application isolation and security, and speed. For
example if you are a new company now, and you want to test something,
you don't need to buy your own hardware, you can simply rent resources
from a could provider and then just stop using them. However, a number
of privacy issues arise, since data that traverse different countries
have different country laws being applied to them. But that discussion
is quite a big one and I don't have an answer to give. Also our time
has run out.
---
{"title":"Il n'y a pas de nuage, ce sont juste les ordinateurs des autres !","description":"The presentation for the Open Days","slideOptions":{"transition":"slide","theme":"cern5"}}