--- ## There is no cloud! :no_entry_sign: :cloud: :two_women_holding_hands: :computer: ### It's just other people's computers! :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) --- ### Car Factory :factory: :car: Note: Vous avez probablement déjà entendu parler de "cloud computing" ou d'"informatique dans les nuages" Mais qu'est-ce que c'est vraiment? Nous allons le voir dans cette présentation. Exemples d'applis dans le cloud: nouveau telephone, synchronization, partage de fichier et edition collaborative. ---- ### Car Factory :wrench: :package: :truck: :construction_worker: <span>How can we increase performance?<!-- .element: class="fragment" data-fragment-index="1" --></span> Note: Revenons en arriere avec une analogie, nous avons une usine qui produite des voitures. Elle a une ligne d'assenblage, des etageres ou mettre des composants et un entreprot de l'autre cote de la rue. Le manager va décider quelle car va etre fabriquée chaque jour Un ordinateur est similaire: ligne=cpu, etagere=ram, entrepot=hdd The manager is the Operating System, which decides which programs (cars) will use it's resources. Et de la meme maniere que le manager decide quelle voiture est fabriquée a quel moment, l'OS decide quel programme est executé a quel moment. Maintenant, comment ameliorer les cadences de fabrication? On peut imaginer une ligne d'assemblage plus rapide, mais on attendra a un moment une limite. Vous avez des idées pour augmenter la production? ---- :wrench::wrench::package::package::truck: :wrench::wrench::package::package::truck: :construction_worker: Note: CPU single-core (2004), to multicore with moore's law. Maintenant vous avez une grosse using avec plusieurs lignes qui peuvent faire plusieurs voitures en meme temps ---- ### If stuff break on one line ... :wrench::boom::package::fire::truck: :wrench::wrench::package::package::truck: :scream: Note: En revanche... ---- ### ... the whole thing stops :x::boom::x::fire::no_entry: :x::x::x::x::no_entry: :rage: Note: cela crée des problemes: par exemple s'il y a un probleme sur une ligne, toute l'usine devra s'arreter pour voir ce qu'il se passe et cela impactera l'autre ligne.... donc potentiellement les voitures sortant de la 2e ligne arriveront tard chez le client (qui sera enervé!) De plus, mettons que chaque ligne construise une voiture pour des marques différentes, il y a potentiellement des informations critiques qui peuvent circuler d'un cote ou de l'autre et que l'on voudra eviter.... --- ![](https://codimd.web.cern.ch/uploads/upload_6de0e897dc2ad176305d1dcec45ffd68.jpg) Note: C'est la meme chose dans un datacentre. Les serveurs de calculs qui sont des ordinateurs tres puissants pour usage plutot professionnel sont devenu tres puissants. Donc, les administrateurs, qui sont les personnes qui les gerent, pouvaient installer plein d'applications dessus, Database, a mail server, webserver, etc, etc. Et cela cause les memes problemes que dans l'usinge: Ces programmes seraient gérés par des personnes differentes, il y aurait des problemes de confidentialités ou pire - si un programme plante et qu'il faile redemarrer le serveur, cela veut dire que toutes les autres applications sontindisponibles! Previous Images: - upload_7f102e250460c42c497cd531ce5a5b7c.jpg - upload_a59af0161aed66cb82df4fb5841fc6f9.jpg --- ### Adding Isolation... :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: Donc pour resoudre ce probleme, on peut compartimenter. C'est a dire séparer leslignes par des murs par exemples et un manager par ligne avec etageres séparée pour les pieces ---- ### ... and a hypervisor :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: Et il vous faut maintenant, quelqu'un au dessus des managers pour les gerer - on l'appelle l'hyperviseur. Donc on se retrouve avec un hyperviseur qui voit tout et tout le monde, puis en dessus, les managers qui ne voient que leurs ressources (lignes et etageres associées) sans savoir meme combien d'autre managers il y a. Ils savent simplement leur agenda et ce que leur production a besoin d'etre Et c'est exactement pareil pour les ordinateurs.... --- ### Moving Stuff around :wrench::wrench::package::package::truck: :construction_worker: :construction::construction::construction::construction::construction: :construction: Note: L'avantage de ceci etant de permettre une meilleure utilisation des ressours puisque l'on peut etre sur que toutes les lignes peuvent etre utilisées. De plus, le compartimentage permet une meilleure sécurité des operations et une meilleure robustesse. Mais le plus grand avantage est la flexibilité, c-a-d. Imaginez etre un manager, vous avez l'habitude d'une usine et de voir une ligne et de travailler avec certaines ressources dans une certaine salle. On peut changer tout l'exterieur sans que cela vous impacte. Si l'on remplace toutes les machines par des machines plus efficaces mais avec les memes interfaces, cela ne chaange rien pour vous. De meme, si l'on constuisait la meme salle avec les memes equiepements/ressources dans une autre usine ailleurs, vous pourriez probablement travailler directement avec. 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":"There is no cloud, it's just other people's computers","description":"The presentation for the Open Days","slideOptions":{"transition":"slide","theme":"cern5"}}