 So let's start by an example. So I don't know, is any of you like familiar with OpenStack or yeah, yeah, one, two, three, four, do you know the cloud at least? Yeah, you heard that, the cloud, all that stuff. Well, so we have some other people that's using OpenStack. So there is like a small group out of Switzerland that has like a concept that say, they need to take the information and treat it and try to understand life. So you probably know the name of that little thing. It's called CERN. So CERN has been using OpenStack quite a bit. And they've been using all the infrastructure, the internal infrastructure, like to calculate all those lush collidon, all those stuff fancy physics stuff. They've been using OpenStack for that. And they have around like 11,000 physicists like running 35 PB per year, blah, blah, blah. And all of that, they're using all of it on OpenStack. So you might ask, so what's OpenStack then? So what is OpenStack? So OpenStack is a, so marketing people would say OpenStack is an operating system of the cloud. So it's a marketing thing. So basically like you have like three basic resources like compute, networking, storage. That's what you find like usually on operating systems. And those ones, you're using it like in a very scalable system that's doing like what we call infrastructure as a service. So you have like, first of all, you get compute. So what's compute? Compute is what you spawn VN with. So when we saw like the presentation that's done about vagrants or about those VMs. So take OpenStack in front of it. I would use like virtual box if you wanted, but usually you're going to use KVM, Xen, whatever. And it's going to do like management of all those platforms. It's going to schedule and try to see which place to go to like to get those VMs like working and see and manage all that stuff. So it's basically will do like you do compute as a service. So usually like it's hypervisor agnostic. So everything is pluggable, everything is modular. You can plug everything together or you can write whatever you want like out of it. Sorry, oh no, sorry. So there is as well the networking. So the networking is like again you manage like all your network like our own data centers. So it can scale like about multi-regions. So you get like different regions altogether. And you can have like all those networking as long as you have like the networking gears behind, you can have like plug-in for it. They can manage new network. And you get the storage. So storage, it's two different things in OpenStack. Maybe you've seen it on Amazon. You can know, you know, Amazon S3. So Amazon S3 is an object storage. Object storage is basically like a crud, like create, replace, update, delete. So you upload your objects and you can use them. So it does that in a very efficient way and a very scalable way and for VH chip as well. And there's another components called Cinder. Cinder is a block storage and where you can attach for it. I'm going to go more into it just after. So that's a quick review. So let's see some examples. So what do you want to do like with the cloud? So next example, like you want to have like a three web server with 2DB, blah, blah, blah, and stuff and things together. So what you do, like you just click like start five or you just use the API, start five servers. And I want to use that kind of resources like QCPU, 4G of RAM. And when you start it, if you want it, you can post them or you can snapshot them as well. A key. So the networking resource, so usually what you want to do, it's attach IP addresses or you can say like I want that public address, public IP, like straight on that VM. Or you can like do it like as well firewall. So you can do like rules that say like I want to allow like AD, 4.3, blah, blah, blah, and stuff. And all of that things like it's done in a modular, in a flexible way, that would, that would way you do that with API and from whatever language you want. And you can do like private network and subnets and all those networking stuff that you probably want to do. And you get block storage. So that's the thing I was talking about, block storage. It's the one that attach a volume to a VM. So a volume, what's a volume? It's like a hard drive basically. So you get like it's going to show up like as a dev SD, whatever, on your VM. And it's something that you can transpose to another VM as well. So if you want to do some failover or you want to use like in a HA way, you can just pin up the VM again using like those puppet chef thing. But you can still have your data on those volume. That's not attached to it. So you get, and you can tell like snapshotting, obviously. So you can do like those snapshotting of those volume and store them somewhere. And you get object storage. So the object storage, it's great like for those use cases, for those web developer use case. So you won't like to have a bunch of images that you want to upload like all your family pictures there. So usually you can do that on your hard drive, exploding by FTP and stuff. But with the object storage, it does that like in a really efficient way that it's going to focus only on certain operation that's like get, put, delete. And out of it, it's going to serve it. And for the service provider, it's a really cheap because it runs on community hardware. It doesn't run like on sand, big hard drive and stuff. You can, all the logic of the RAID is based, like it's directly, directly on the software. And we get a dashboard as well. That's the pretty face of OpenStack. That's the one that we do like we use for demos. So not a lot of people is going to use it. I mean like, so people will use it, but like big companies or large companies are going to build their own control panel. But it's a good way to start and to start experimenting with OpenStack with Dashboard. So I would have loved to make you a demo out of it. But my internet doesn't work here. So I can take my word for it. It's pretty. OK, so we develop what we usually like. It's cool to click, click, click. But usually what we want to do, we want to automate like all those things. And you want to be able to talk to the services. And that's what Cloud is all about. It's like a bunch of API tied together, tied them together, that gets you like talking to it. So we're using REST. Everything is REST everywhere. So I'm sure you all know Familia with REST. Easy. Basically it's like HTTP in API. So I use like GetPootDelete. Get is for creating. Get is for getting. Put is for creating. And Delete by robot. Easy as. And so if you don't want to do pure REST, it's not that easy. Then you can have like Python binding. So Python binding is basically a library. And those like those Python library are used inside OpenStack. They are actually provided by OpenStack officially, all the Python binding. And there is another project that's using SDK for Node.js, Ruby.NET, Perl, blah, blah, blah. But I'm sure we all love Python. I'm going to use the official Python binding. So one thing I need to mention, why do I present OpenStack in a Cloud thing? Not because it's just a cool project. It's as well like everything is in Python, no matter what. Like all of it. We get like a few CSS XML files. We get like a few Ruby, Puppet, module. But all of it is using Python really extensively. And so the project is really active. It's a really cool product that's been attracted like a lot of people since the beginning. So I actually personally started on OpenStack since literally the beginning. I was working out of Rackspace. And when we get like with the people from NASA to start contributing to project to each other. So basically what happened is that at that time, we, NASA, had a need and Rackspace had a need. Rackspace had an object storage system. And NASA had a compute system. But they both needed each other. So they say, well, we just open source everything. And so we just handed OpenStack like that. And so since then, like it took like a huge active. Like it's just insane. Like for the last three years, it's been like just over three years now, we had like 230 companies that just joined. We get like 1200 individual members. We get like for the last six months, there's like 720, 60 reviews like that past that went through. And we have like people coming from everywhere and from every country really. We get a bunch of companies that back up that thing. So I'm sure you recognize a few names. And actually that slide is really old for the simple reason that there is too many of them. So usually on the website, if you go there, you'll see like this more than 300 companies that support OpenStack. OK, so that was the high level overview. So now we're going to dig into the architecture of the cloud and how does it look like really? So when you look at that, that's the diagram. That's the high level diagram. So you see like the way stuff communicates. So it looks a bit complicated, maybe probably. But I have more confusing diagram just after, so don't worry. You don't see better. Not really, you'll see. You'll need to see it after. So OK, so I'll do that thing. That's going to take all stuff over. So we'll be looking like it's more. So we get like compute. So compute is central. So a lot of people usually, when they think about cloud, they think about like VMs. So VM, compute is what we have centrally. That talks to the image. And that's what we get, like to spin up VMs on the nodes. I'll go over like more deeply just after, so I'll just explain. So we have that project called OpenStack Nova. So it has a codename, like a nice Python codename. And we call it Nova. So basically what we have, so we're going to store all your flavors of open systems, like Red Hat, Suzy, Windows, Sorority, whatever. And if someone wants to put Sorority there. But you'll get like all of those. That's going to what's listed your images. You get the identity. So the image service is called Glon, sorry. An identity is called Kiston. Identity is literally like an API that's plugged together a bunch of ossification mechanisms that you can plug in a very modular way to your LDAP, to your Active Directory, or even has a local SQL database that a lot of people is using as well. And it's the one that types all the services together to give ossification and ossification and give the right resources to each one. And you get the networking. So networking, it gives networking for the VMs. And it's mostly managing the networking. So it manages the networks in a villain way. I'm not a networking person, so I'm just going to say words. But like villains, SDNs, firewalls, blah, blah, blah, and stuff, if you want to talk about networking, that's my colleague over here. He's really good. And you get block storage. So the block storage is the thing I was explaining just before. It's what's managed the block devices and to attach to the VM. And the object storage is what is managing the binaries. And the dashboard. Dashboard type everything together. And it's actually a software that consumes OpenStack API. So if you want to start looking over the way the API needs to be used, or you've been using all the binding, or it doesn't use any private APIs or anything like that, it doesn't have access to the back end. It's using only the public APIs to connect to everything. So that's the overview. So let's take an example. That simple example. We have Alice, web developer. Nice girl. She's happy and stuff. She wants to spawn like an Ubuntu server for an app to do some testing. So what she does, she started a new server using the Ubuntu 1204, the one we were seeing in the image in the service catalog. And she wants to attach to the network called MyNet. So what happened on the back end? What happened behind that on the thing? So you get the dashboard. So imagine that she's doing that by the dashboard. So she would click Start Server. So what happens? She enter a password, like username and password. The username and password would ask that thing directly to Keystone to the identity server. And the identity server is going to validate if the username and password does all right against the back end. So it's usually a SQLite back end or MySQL back end. But it can be active data or anything. And whenever she gets to the identity, when you get validated, when you get the token being good enough, then she's going to connect to the computer Nova server. So the Nova server is going to see the request. It's going to go to the image services, going to see if the Ubuntu image is really there. And then the image services is going to get is real object, like the VM itself, like the image of the VM, directly unswift on the object storage to say, OK. So whenever I get that, the computer would go to networking. And after that, it would give you a network. So whenever it gets all of it, all the information that it needs, and all the connection end points, then the compute server would connect on the app, as well, on the local back end. So whatever you were using, KVM, Xen. Usually people are using KVM. And they would start the virtual machines until it's coming back to Alice. And I see that the server is not running and connected to it. You see? She's very happy. But I wouldn't work here, if I was testing. She doesn't work. But how does that work? So that was like a high-level overview. So now it's like, how does everything plugs together? So I'm going to go focus on the OpenStack compute. So OpenStack compute is the VM spawning thing that's managing all the resources and now get together the resources. Sorry. So OpenStack compute is having different demons. So those are Unix demons that's listening. And they have a different use for different things. So the API services, Nova API, you'll see on the top, that's the one that's going to give you an API. So it's going to expose an API. And those API can be different things. So we have the OpenStack APIs. And we have the EC2 APIs as well. So implementing Amazon web services, EC2. So it provides different APIs. So for now, there's only two of them. And I just thought, what's that? All right. So there is the Nova API. The Nova API is going to connect to the Nova compute, and which is what connects to the hypervisor. And after that, we get Nova console that's going to give you a VNC. You get Nova Conductor that manages all the database access to the database, so the persistent connection and the different connection that we have. And you get the scheduler. The scheduler is going to determine to know which physical host a VM is going to end up with. So the demons is using non-blocking IO, obviously. That would be a shame if we're using a blocking IO. That would be very scalable. And we're using EventNet. So I don't know if you know EventNet. Now it's a Python library that does like non-blocking asynchronous request. And it's using like Grantsrade to get that. So it's very scalable, and it works really well. So we actually find a lot of bugs into it because we're using it in a very extensive way. But we've been helping them like for patches and stuff. We have the demons, like I was saying before, like they maintain like a persistent state to using an SQL database. And they're using that to use SQL Ikemi. So I'm sure a lot of you are familiar with SQL Ikemi. So it's an abstract ORM. And it's what we use to get like different databases. Like in an easy way. So most people using for testing, we're using like SQLite. A lot of other people we use in MySQL, or you can even do Postgres. But a lot of people is using MySQL and Galera for maintaining like a distributed MySQL. So demons communicate like to each other using RPC over our message queue. We have all the OpenStack services using message queue like to communicate to each other. So we have an abstraction library called Oslo, Oslo Messaging. That's an abstraction layer that we use for communicating like to different queues. So we have different queues on different systems. So actually Red Hat prefer like to use QPID. On Ubuntu, they prefer to use RabbitMQ. So yeah, whatever, potato, potato, whatever you want to choose, you choose it. Okay, so I'm sure you guys are asleep. So now I'm going to get you awake. That's a very crazy picture. I'm not going to go over everything. So I'm going to focus like to the one that we had before which is the confusing. But if you see like all that stuff is a complex thing. So it's not like a, it's not like an easy thing to do. Like in one way, I'm going to take my weekend and just like try OpenStack. So yeah, you can try, it's good. It's, there's a lot of documentation, but there's a lot to understand as well. So the good thing as well with trying OpenStack, it's that we got some script called DevStack which is like OpenStack for developer basically. So you would do like all the git checkout and everything. And it's actually a shell script. So it's a huge, big shell script that does everything that can do like there are a lot of options and everything like you can imagine to do with DevStack. And that's actually what we use in our CI. So whenever there is a CI, whenever there is a patch, it will run a DevStack with all the functional testing into it and make sure it works. So the good thing about that is that you can use DevStack, you can read the shell script and it would describe you like the way it works, trunk or the way stuff like together. Personally as a developer, that's the way I do. So I like documentation, I read documentation and everything. So there's plenty of documentation everywhere but reading the shell script makes it really easy. I was my little parentist. So let's go back to the earlier example. So when you get like a, when you start like a new computer, you, the request come in the Nova API demands. So in this case, the request say like start a new computer on a computer server. So after that, since the request is for a new VM, then it's going to get queued directly like to the Nova scheduler. So Nova scheduler is going to know where to go and we'll ask the queue as well to go like to the Nova compute to get the configuration of the systems and see if it's possible to get that. So, so when, whenever like the, whenever the compute services is selected, then it would contact the API and of the image services. So that's the service catalog and would the start like to ask for the virtual machine image. So the grand services, the grand services is basically like a registry. So I don't know, like the same thing that we have on non-linux and on Windows for a long time. It's, it gives you like a list of stuff, like a key value kind of stuff. That's, that goes like from Nova compute. When you guess like, where the VM is, the Nova compute is going to talk like to the quantum server. So the quantum server. So quantum is, is the networking, networking services. So it's used to be called a quantum. So we just change it like to neutron. So why? Because those guys from, you know, those guys were making a hard drive. They were not happy about us winning. So trademark issues. So we had to change everything, all the trademark, all the code. Code was easy, but updating slides is the other. So didn't do that. So you get quantum giving you like a network and they give you back, they give you back a network together. And that Nova compute knows that network comes through. And the virtual machine, the virtual machine image is present. Then the networking information is like it's confirmed, is obtained. And Nova compute like is going to, is going to start on the app as I'm going to request a VM. So basically it's going to talk to KVM. And it's going to use a library called Libert. And then if you heard about Libert, Libert is an abstraction library, like kind of SQLI KVM for hypervisor. And which implement like all different stuff. And it would say like start VM, whatever backend you have on it. And that's the way, that's the way it works. Like on the backend and everything is there. So I know it's a bit confusing. I'm sure there is a lot of information. There is, so I'm going to go like, what is OpenStack as well, just to come back a little bit. Take a step back. So marketing-wide, that's a marketing slide there. So it's not something, awesome technology platform that's very scalable and pluggable and flexible. So that's usually, that's my notes here. But it's surely open. So the good thing like with OpenStack is like, it's completely an open source thing. So why OpenStack came true? So as I say before is that you had Rockspace, you had NASA, they get together because there was like this big elephant in a room called Amazon, which is huge company that does like really great stuff. But unfortunately, they don't do that in an open source way. So all those company, main reason why there is so much traction for OpenStack is that all those companies started to get a common enemy kind of thing, especially like all those big guys like Dale, HP and whatever. So they decided to collaborate with each other. So it's one of those projects that has like so many people that are enemies, they work together just because Amazon is so big and needs to work on that. So everything is offered like in an open source way. So there is no close source whatsoever. But people can use it like to adapt and to do whatever they want with it. So we have on OpenStack, you can do like some customization, but usually like what you do with OpenStack, you can use that as a framework. So you're going to use it like at first like to spin up some VMs, but in a company, if you're going to be in a company that needs like customization, you can do it like pretty easily. So we can ask you, that would be good if you can contribute back, if you add new stuff, like just not doing any fork or anything, do like in a proper open source way, that would be great. And you can do that like, especially like don't do fork, like don't fork OpenStack, because it's a moving target as well. So you won't like to do that like in a kind of middleware. So everybody's familiar about Whiskey, WSGI, yeah. So Whiskey is awesome like for Python, is that you can plug middlewares together, you get a pipeline, and you get like middlewares, which you can take that as plugins, and you can add new stuff into it. So for example, on Swift, which is the object server, you can add like all different things together. So personally I work on Swift. So whenever like there's a client who ask me like some crazy stuff, like we need an anti-virus for all the files, for all the objects. So I could just do like, I didn't have to fork anything, I didn't have to change the code of Swift itself, because that would never get upstream anyway. We, I just add like that middleware that would take the request when you do a post, that would do like send over our claim AVE anti-virus, like in a chunking way, like a different chunk, and after get back the response and say a 501 if it was a various or two, whatever, if it was a proper. So it's very flexible using the Whiskey and using like all the Python stuff that you've been using before. So you can have as well, you can have a different probability like schedulers. So you know like when I was talking about before is that you want to be able like to, the scheduler is the one that's going to go on the host and going to see if there is resources. But that algorithm that you want take, like you can tweak it the way you want. So you can, so some people would tweak it if by power construction. So do we get like a power service that would know like how many power consumption and they would want like to store like as much as possible on each host. So instead of winning CPU for the VMs, they want like to win power because power is really expensive in that center. So there is like trick like that that you can do with the schedulers and those are drivers, they're all drivers and they're all pluggable. And dashboard is Django. Dashboard is basically Django. We all know Django hopefully, but we, that's really easy. So you get like all those apps. So different services, different apps. And you can plug that or you can get that into your own software. And as I said before, it's easy to try. You just go on DevStack.org, DevStack.org and you just get there, you'll see what to do. They get you one command line that you run in a VM that you need to run as a user, not as a root because just make sure, because a lot of people run as root and it's actually failing if you run as root. And it's easy to get. So interacting with community. So I get a little bit more slide like to explain like how to contribute and what to do, what's the process to contribute and everything. But that's more like an overview. And since I think I have 15 minutes so I'm not a question, I will see. So all development is done in the open. So we are on OpenStack. There is nothing in OpenStack that's not open. So we don't have any private RRC or anything. So we have ESA pads, which is like not taking things. So when we have OpenStack meeting, we usually do all the conferences and everything over ESA pads or talking and take notes there. We get Blueprints. So whenever you want to add a feature, you need to register a Blueprint. So to use Blueprint is a system that's used on Launchpad. And then if you know Launchpad, Launchpad is the backend of Canonical that made by Canonical for Ubuntu. And it's used for different projects. So we use Launchpad just for the Blueprints and the bugs. So usually, if you want to put a new feature, you put a Blueprint. You get it approved for Cycle. So we get different cycles that roughly match whatever Ubuntu Cycle has. Not on the dates, but on the really cycle kind of things every six months. And those one, so whenever it gets updated, you get a code. So the code is using Garrett. So I don't know if you know Garrett. It's basically like a review interface to git. And whenever it gets reviewed, and you get people that's reviewed the code. So the way it works on OpenStack is that we have a bunch of people can do plus ones. But we have a team by project that does our core reviewer. And those are the ones if you get like two plus two, then you get your thing accepted and then it gets released directly on the OpenStack. So I'll go over more just after I get 14 minutes. So hopefully I'll get a bit of some. And so what we do, everything works on IRC. So for me, like most of them are based in North America. And so for me, I need to stay late to talk about features, which is a bit annoying, but you guys lucky. So a lot of it, like you can talk to them and everything is done in Open. So we have like different channels and all slash, sorry, hash OpenStack. And you can connect to it and just talk to them or ask questions. So we get like OpenStack for the dev questions and hash OpenStack for the user one. And after you get like all the sub project that has the own channel like OpenStack Switch, OpenStack Nova, OpenStack, blah, blah, blah. So like I said before, every line of code is reviewed like at least by two people. So you need to have like a plus four. But usually for large project, you get much more, you get much more reviewers or get much more interaction and iterative reviews. And the continuity integration and testing factor is pretty huge. It has so many things. Like personally I've been working on Open Source for the since 98 or whatever. I've always been working on Open Source in the companies. And I never seen like such an efficient way to do like code reviews and all the integrate everything together. So I'm not going to go over everything. I'm actually going to talk about tomorrow the OpenStack in action. It's called a conference that my company is organizing and that goes over all the features that are in the CI. So you don't have to do coding if you wanted. If you wanted you can do documentation, translation, infrastructure as well. And all of that is a collaborative so and a very accepting community. So we have something to say. It's like people who's been doing Open Source since a long time. So I used to contribute to Linux kernels and different stuff like that. So I don't know if you've been contributing to those projects. Sometimes it can be hard to contribute to it. So people are not very accepting, especially when you run like a bad patch. But I believe like in OpenStack it's a very accepting community. So people would help you, like really help you. It's what I like to call it like the maturity of Open Source project. Is that people are very welcoming. There's no arrogant people that would show you away and like it's very good for that. So don't feel free like to collaborate if you wanted. So we have as well like different stuff for community support. We get Ask OpenStack which is a Stack Overflow special for OpenStack. We get many list, we get a bunch of many list where people can communicate. We get IRC as I say. We get local user groups. So you can come to the local user groups as well. I'm not sure the one in Montreal is running session. Sorry. And we have plenty of blogs that talks about OpenStack. We get Planet OpenStack as well which has like so many stuff. There is a lot of information everywhere. You can look over the internet and you will see it just a bit crazy.