--- ## 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"}}