 Také je tam jedna deslu. Tu máš. Tu máš. Točke. Kdybyš se tam je tě, já se to má, aby to nepripoje. Ně, ně, tu máš. Ještě Alik, který může se dát za otázky. Za otázky máme mý vlastné trička. Ale tak víme, ještě Alik údně. Jo, tohle je přímole. Dobře. Toto je voda pre nás? Nie. Ani máš nějakou odnud? Dáj mi, prosím, dělá se, jednou nám daj. Dělá se. Jsme to děláme. Jsme to děláme. Jsme to děláme. Jsme to děláme. Jsme to děláme. Dělá se. Dělá se. Miha, můžete se dělá se do výstveností? Máte肺bu Palestinians appeared. One step at the time. We are going from the third place to second place to first place. A test to, gw shoulder? kettle, valve question. Bylo to od jasné, že to samé chci na tomu. Mělam se na tomu, když bylo od jasné, že to samé chci na tomu. Jsem bylo od jasné, že to samé chci na tomu. Prvně na mě budu, že to samé chci na tomu. Prvně na mě budu, že to samé chci na tomu. Slog mi, že to samé chci na tomu. Je to dostal, že to samý chci na tomu. Víte všechno prezentování, máte 3 šály, kderé můjste nosdát, pokud se bylo někdo do přeglát. My vám budem mávat 10 minut a konec času. No ho jasný. Tomi, tu asi tak dlhodně budeme. No to bychcete nebo jsi chcete nakonec, to si ruknit a sami lid. Pohodil. To máš mi co. Tady je mikrofon. Popičce byte pohybal z nějaké rozumné vzdávánosti, tak to chytne. Jo, ve větších zdávánosti už ne. Ani máte ještě taky ten extern, ne? Popičce byte někdo ptá, tak to prosím, zopakujte, tady někde prostě poblíš. A to vlastně je malé, tak to je kod. Přesně ten člověk, vím, vím, větších, větších, větších. Ok, dobře. Jo, že když se jen dozeptá, tak prostě to zopakujte, ono to chytne, že tady poblíš. My se uvideme sami, co jen můžeme. Ne, úplne pohodit. Čekaj, čekaj. Bra. Masl, masl, ale chytne. A teď ještě vytrovko od vás četkou, tak když ho zpomejdějme, to bělí chlouka. Ne, třeba, ne, třeba. Ne, to je v pohodě. A když je to stranka? Vytrovko od toho. Vytrovko od toho. To poznáme, hej, my to asi sdějeme šeskóry, my potom máme asi 15 minut poječené násled. Ještě, že bylem potom znamen zastat, když už řekajme. Mám tady byt taký, že už jsem ne, pojď si alu. Máme, máme, a já bychom to znamen. Ještě, že jste se jít a já vysponím. Ještě, že jste se jít a já vysponím. Ještě, že jste se jít a já vysponím. To je to vůbec, že jste se jít a já vysponím. Ale můžu adaptor. Co ještě, když mám? Máš adaptor? To je. Fungujete to? Ně, to mi nefunguje vůbec, takže... A vyfungujete, že jsme... Ne, nefungujete, co? A dástem dobře hislo? No, no. Bo já jsem na tom furt. Marek has a cable. Možnou kále. Switch up the cable connection. Ale tak to máš ničeho zchromu, může? Bežin tam promodráná úplne, všetky teba jsou. Takže to máš. Ať do tydy. Možná se o výpud než osduvala než 8 minuty. 14 minuty. Už se. Už se. Out! Vyspáte se výpud. Jdou se teď výpnout. Jsou. Jsi to pojíct. I co to je. A je to takovat výpný? Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Aho! Abit, abit, abit, abit. There you go. Up! Yes, yes. This is the main challenge, where we actually get something. Like this fancy tablet. So for the next year, don't forget, the winter is coming, or will be coming. The glitter is always here to check the product. Yeah. And so we start for the third prize, the third prize is to go to Red Hatter, Gal Tomáš Tomacek. For a terminal interface for Docker engine, which you can basically monitor your dock containers and manage your images and containers as well. Etc. Etc. Etc. If you won't there is the link. It's pretty neat thing. We tested it in Michal. So let's go on. The second prize goes to friends, to Vincent, the behar. And for a dashboard basically... To není Adan, ale to je velký deshboard na načině, který je nejlepší, ale je velký nejlepší. Vypadáme se na to, že se vyskáváte. Vyskáváte se na to, že se vyskáváte. A první první do Japanu je Kenjiro Nakayam. For Kubernetes Manifest scanner, and yeah, it's, Michal played with it, he said it's great, I cannot complain with Michal. What it allows you to do, is that you can explore the API on a command line, so you can list different fields for different resources, so it helps you understand how the Kubernetes OpenShell works basically, it's a very neat interface, it's working like a manual page or something like that. We have all the resources in OpenShell and Kubernetes, so it's good to know what they do. So the first player goes to Japan, and the enterprise price goes again as a second year to Spain, to our enterprise customer from Madrid, it's called Protobahn, and they created basically two submissions, one is a template, which is associated with images, and the second one is a rail-based image for running Java application from OpenJDK. Protobahn is the IT shop behind the Banko Santana, so they're playing with your money and keeping it safe, and using a lot of OpenShift, so we're really pleased to have them as part of the community, and we're going to send them some prizes directly through their sales guys. Yeah, we managed them to put to all of their developers one t-shirt, so it's fair. And that's it for the winter of code, and we have another announcement from marketing, that in March there will be a worldwide hackathon happening, which will be focused on health application, fitness applications, it's about to be announced, the corrugate, but we don't have it yet. We just listen to our blogs, tweets, whatever, and the winning pool is $100,000, so don't forget about it. This will be even more fun, so perfect. Did any of you in the audience participate and submit to the OpenShift winter of code contest? Any hands? Anyone from the audience? No, almost a t-shirt. Alright, so next year the challenge is on and for the hackathon to get there, get in your applications early so that we can vet them, and hopefully you put them on how there's open source code too, if you can. Yeah, everything has to be open source, everything has to be on GitHub. Alright, thank you. Thank you, so back to behind the open source. Thank you guys, so this was the winter of code, and now this is the main presentation. So this presentation will not be about coding, I don't want to be super technical, but what I found really interesting is how OpenShift engineering works, how we, as engineers, on a daily basis, how we work, what tools we use, how we are structured, how we manage to build a product from nothing to OpenShift v3 in one half year basically. So for me that's very interesting and I just want to share with you how we work and what we use. So before I start going to tools and different kinds of stuff, also the other half of this presentation I want to use for the questions, so I would really love to have a discussion about how you want to use OpenShift, what you want to do on OpenShift, what's your use cases, what's your pain points, you can just make it interactive so you can just ask us questions about OpenShift v3 or Kubernetes or whatever you find interesting. We are engineers so we can probably ask for those questions, maybe we don't ask for them marketing way or sale way, but we are trying to get your answer at least from the technical point of view. And all good questions we will receive a t-shirt. So before I go to the presentation, I just want to show you the history of OpenShift project, which also predates me and the OpenShift project itself in RedHead. So I joined RedHead in 2010 and we first announced OpenShift online in 2011. That was basically done after we bought the company called Makara. So RedHead told like there is a space on the market for having something like a platform as a service. That space was basically because of the jables. So people want to run jables applications more effectively, they want to run it in cloud, you know, all these cloud buzzwords in that time come up. So that was the date when we announced OpenShift online. Then in one year we started with OpenShift Enterprise v1. So that was the first original version like in OpenShift. It was based on a custom containerization that you sell in X, kernel namespaces, you see groups and other stuff. So it was pretty much like a docker. It was not that fancy as docker. It was not like docker run, docker create and docker pool. Basically we have the containerization technology already there, but it was not dockery. And also the Ruby at that time, the project was written in Ruby. So it has something like 19,000 lines of code, which was pretty small project, but it basically was very basic. So then we told like with OpenShift v2, Enterprise v2, we basically don't v1, but we listen to all the customers and users who wants to also run the applications like Node.js, Python, PHP and so on. And they also want to have something that they can add to their applications like cartridges, as you want to have a database, you want to have Mongo or Reddys or whatever. So we come with these cartridges for a month. So the code base within a one year goes from 19,000 lines of code to 116,000 lines of code. It's not that much step, but it was still written in Ruby and basically OpenShift v2 is what you currently have in OpenShift online. So if you go to OpenShift.reddys.com or OpenShift.com, you will get these, so gears, cartridges, what we are calling OpenShift v2. So then this Docker hype started. So everyone was crazy about Docker containers and containers and Docker and Docker images and sharing and unicorns everywhere. And people really see Docker as the way to go, the way of the future, how the container should be done. For me the most interesting aspect of Docker is that they add this ability to share images. So it was not just you have the container running on your system and you are fine, it works for you, but you can also take that container and share it with somebody else. Which allows beautiful things. Now you are not tied to the source code, but you share the entire environment where your application runs, which was a huge step. And while in v2 we are still using our containerization technology, we see this as something that people really want to do, like sharing social media and stuff. That's currently what people do. So we can't ignore it. So we have two options. We either go with our containerization technology and build this images concept ourselves and then we will look in ourselves into this. Or we will just use what other people want, which is Docker images, because Docker and this wheel and logo, Docker cones, t-shirts and stuff, what people love. So we start thinking about having the Docker supporting app on the ship. And that's how the OpenShift v3 started. So before we started OpenShift v3, as it happened in the same year, we spent like half a year in R&Ds and we created a project called GearD, Longleaf GearD. That was the place that we started to write GO. So you can think of OpenShift engineering, it was all around the place, Ruby programmers, even the administrator operations was Ruby. Everyone was written in Ruby, because everything was written in Ruby. And now somebody come and say, OK, guys, we are going to use GO. Why? Because Kubernetes is written in GO and Kubernetes is what we want to use to run containers in cluster. And also Docker is written in GO. So why we should continue writing our software in Python or Ruby or something else? We can have a native interface to Docker in Kubernetes. So then half a year, it was maybe faster, but we all switched from Ruby to GO and we started writing a GO code, which was interesting, because when we released OpenShift v3 last year, so in one year, we managed to write 200,000 lines of code in GO, which was basically we wrote the whole OpenShift from scratch, completely from scratch, which means we already have Kubernetes, but what Kubernetes doesn't provide for you is built. And we really care about the user experience and for us, the user experience is that the user have a source code and they want to run it in platform as a service. So users don't want to run containers. Users want to run their application services and build them from the source code they have. How many of you are building Docker images? OK, one, two, three, four, five, six, seven. I don't count you because... You're doing it. So seven people actually use Docker and build Docker images. So how many of you write code? Everybody. So that's what people want. People want code. People don't want Docker images, but the Docker images are nice because you can place the code inside Docker images and share it with somebody else. So that's why we go. So now we are here present. So we are currently on OpenShift Origin 311, which has 300,000 lines of code. So the movement, like the effort that we spend as engineers to write OpenShift and put more features in it, you can see that from the lines of code actually. It's growing rapidly. We do a lot of new stuff. We have controls that Kubernetes doesn't have. We do a lot of plugins for Kubernetes and so on. I don't even count the contribution to Kubernetes itself. And to Docker, right? We have people contributing to Docker. Currently on GitHub, we have something like around 100 active contributors. So people that actually write the code and sending us pull requests, we managed to have something around 9,000 comets for origin since it starts. So I think that's pretty good numbers. It's even higher than that. Yeah, I know. Yeah, yeah. So who we are? So basically we are a team of engineers. We globally distribute it. I think we use old time zones. I mean like we have people working in the U.S. We have the QA guys and testers in China. We have people working in South America, in Europe, everywhere. So that's beautiful how these things work together. So I'm part of the developer experience team here. So OpenShift Office Engineering is dividing these four major teams. Of course we have many more teams. So we have teams for networking. We have teams for integration services. But these are the main, the core engineering teams in OpenShift. So I'm part of the developer experience team, which primary responsibility is to build a developer experience around OpenShift. So how developers are going to interact with OpenShift, right? Docker images, builds, how to convert your source code to around application, tools, CLI, everything that makes your life as developers better. Then we have user interface team, which Yakub is in, which you know, they are JavaScript developers. What do we have? No, they do a great job in making the proposal. So the website, that you can control. You know, the OpenShift wait, you can see the containers and everything in the web browser. And they do great job in doing that. So without, we have also the integration services team, because the OpenShift currently can be integrated with many other third-party tools, like Eclipse for example, right? You have Eclipse plug-in, you can just create a new project and deploy it in OpenShift and continue to develop that project and redeploy it in OpenShift. We also have a platform management team. So that's a bit like a very low-level team for us, because those are the poor people who are doing their basis to Kubernetes. They are basically getting the code from Kubernetes and rebase OpenShift on top of these. So it's a very poor job. They are also doing a lot of commits to Kubernetes itself, so it's kind of guys that work with OpenShift. So these are all the pictures I took from the GitHub page. So these are all the contributors who are actually actively working in OpenShift right now. So we're all working together, we have meetings, we do a lot of R&Ds, we do a lot of design sessions and it's a very challenging environment. Sometimes we even argue about things, we get pissed and mad about other guys. Some bike-shedding sometimes. And it's very important to have management. There will be a big boss saying, you do this and you do it this way. So OpenShift is more like a developer-based, so we create the features in Trello, I will show that later, and then we go implement these features. Because we are developers, we know what is the best for other developers. Managers don't know what is good for developers. Paycheck. Yeah, so food. So these are all the contributors. But we also have some very smart guys that is actually supervising all of those people that are great minds about what the future of all these things should be and how these things should work each other and where we will be in one or two years. So we have very smart people on the team. This is Clayton, he is the chief architect for OpenShift Engineering. So he is basically having the great picture about everything. All the microservices that he flows, he is basically the guy who is saying yes or no on the things that we basically do. He is a great guy. And this is how the bigger picture looks. Yeah. And it's funny because on the GitHub his nickname is Smarter Clayton because he is smarter than us. Someone already took his nickname so he just prepared it with Smarter. Yeah. Okay, so that was about that. So now, we have Trello. Trello is a very easygoing website where you can have different boards and cards and you can basically manage your project in a jile way. So this is how developer experience Trello board looks like. Every team has its own Trello board, right? But this is like how our developers look like. So this is a new board. Every new idea we have, everything that we get from you as a community, you know, end up here. We'll be good for developers. Template enables specifying volume or creating a secret in template, you know. Everything goes here. Then every sprint we basically discuss what here should go here, right? Like what is, is it sane to do this or we do a lot of discussion about every card and we discuss about like, are we want to do it? Are there any better ways to do it? I don't really do this card. Then it goes to big look, you know, and you know, it sits in the big look for a while. And you know, one per time it goes to next, which is like what we are going to do next sprint. For us, the sprint is three weeks where one and a half is dedicated for development. So we do development. We really do the code reviews and other stuff. And we can do development and that's how we basically work. And then in progress is basically what we do this sprint, right? So this is what we are doing this sprint. So we have internal Git server going for online, you know, secrets and builds, issues and stuff. And this is complete. So we use a Trello because it's very simple for us. Our Trello boards are public. So anyone can just come and make a comment at new card, you know, and see what they do. And that's the link for the Trello. So you can see all the boards there. So the next tool we use is this. It's hated and laughed. People hate it because of the comments and disappearing and force push and blah, blah. So there are people who hate it. There are people who love it because it's actually allowing you to have this social aspect of coding, right? So you write comments and you fork the repositories, whether it's good or bad, right? But we use GitHub because Docker use GitHub, Kubernetes use GitHub and it makes the project more visible for people, right? Like you can just easy go to GitHub and see all the source code, you can see the comments, you can see the pull request and what's going on. As I said, we do a lot of code reviews. So, I mean, like we really are very, sometimes it's, you know, it's too picky. So we spend a lot of time reviewing other people code trying to, you know, suggest better names for variables or the reorganize the code. The open ship, as I said, it has like 300,000 lines of code. You spend one life to learn all of it, right? So what do we do with these reviews? We have a guy who are the subject field expert for every of this part of the code. So they can do suggestions for you. So if you are implementing something that already exists in Kubernetes, they can just point you there and, you know, that's how we keep our code by saying, basically. What is important is that we have a pretty strong integration with Jenkins. So we run our internal Jenkins. I can show you how that looks like and it's connected to GitHub and it's connected to Trello and other things. And because it's Friday, there is nothing going on here. It's actually good. We can track how many people work through the number of jobs running. So we basically built everything through Jenkins. Jenkins is also commenting under pull request. You can instruct Jenkins to build and test your pull request if you want. You can also specify what tests should run in Jenkins, what test concept, where you can say, okay, I'm changing something related to build so I can execute all extended tests that touches builds and that runs for two hours. And it will tell you if you break something or not. We also don't merge on GitHub, so we never hit the merge button on GitHub. Jenkins is doing that for us. So Jenkins has a merge queue, so all the pull requests are properly organized. And Jenkins we are not using the Docker Hub integrated build service because it sucks. And we can have more control of what we are building. So we can also execute the test against the images. We can see if the images are actually working or if we broke them or something is wrong in them. So instead of just blind publishing every commit on Docker Hub, we know what we are going to push. So that's testing. We have a test. Jenkins will report the URL. You can go check what's going on in Jenkins. We also use Travis, so Travis builds, it's like a smoke test. Things compiled, okay, perfect. Now running in Jenkins. And what is important, there is one guy who is actually a father of this Jenkins infrastructure. It's a very complex infrastructure because we are connected to Amazon ADS. So we don't have any slaves, as you notice in the Jenkins screen. We run an instance in Amazon and we run it there and then we shut down an instance because it's more effective. And of course, it requires a lot of plug-in works and we have a special plug-in for Jenkins to actually manage all of these. And this guy and with a red hat on it, he's basically an architect for OpenShift who do all the CI flows. He also supervises all the engineering teams and try to keep things same. So he's participating in all the meetings. Another great mind, same with Clayton. But not me, the other guy. Not him. So this is how the Jenkins looks like on Thursday afternoon when the US gets up. Testing, testing. Very busy. So the last thing I want to mention here is Vigrant. So with OpenShift V3 we switched from the ABS-based development, as something that we can share with community and other people can have the same developer environment as we do. So we have a Vagrant file published on the Origin repository. So if you just close the repository and do Vagrant up, you get the developer environment all set up with Go installed, with OpenShift installed, insistently everything is set up for you. So you can just start coding. The source code is mounted into the Vagrant. It's a binary restart OpenShift. It's a very fast development, I guess. Sometimes it works, sometimes it breaks. But usually it works. So this is something we have a special Vagrant OpenShift plugin that is also responsible for compiling the source code, installing Docker images, we have a lot of commands there that you can use to make your development workflow better. We have a lot of time because we really care about our developer environment. I don't see a lot of other teams in RedHead doing the same. So we spend a lot of time improving our developers workflows, like what we do. If there is some pain point or something that we found as very frustrating because we need to wait hours to rebuild something or something like that, we usually go sit and improve that tool so we are on the free note. You can join the OpenShift dev, you will find all the developers there. As I said, we are distributed in the different time zones. So we are distributed in different time zones so you should always find somebody online there. And we also use BlueJeans for video calls, I don't know why I put it there. And yeah, so that's it. So that was the presentation, OpenShift Engineering. I don't know if you have any questions about that. You can just shoot. So you said you don't have a merge problem, but you have a merge queue on Jenkins? Yes. Do you enforce rebasing to master before you merge? Yeah, so the Jenkins, we have a Jenkins bot that is a user on GitHub. That is actually, so every time we tag the pull request with the comment merge, Jenkins will execute some smoke test and then Jenkins will merge that pull request for you. If there are a concurrent pull request, so we have ten different pull request and all get merge tag, the Jenkins will make sure they will come in order, how they were tagged. And in that case, our Git history, we have to do rebase because without rebasing or if you have a conflict or something like that, your merge will fail, of course. So that's preventing us from the problem like you have three or five concurrent merges and the last two conflicts each other, right? So the Jenkins will just refuse to merge it and send you the message to remace. So that's why we use merge queue. So rebasing is done by you? Yes. Exactly. Like you will see that you have conflict on your pull request, you have to rebase and then force push, basically. Yeah. Test it. So that is very important because a lot of as a lot of projects that are merging as crazy to master like they say, it's broken, you know, like we don't care. Time to time we just, we think that things are stable we just take it as a stable or something or create a stable branch and that's it, right? We don't do that. We actually every pull request that gets merged to master is properly tested. We never merge something that breaks things. In theory, right? I mean, at least it compiles and it runs the unit test. But the goal is like to master. Oh, you mean like redhead.com? Yeah, it's not this version. Yeah. We are going to announce online sometime plus minus. I can't tell you date, but it is coming this year. He was first. Yeah. So the office ship is super complex system, but it is one static binary. So what do you do? It's like you just static binary and redeployed, right? So what can break is it also depends on different docker images, right? We also run docker registry. We also run router. We also run, you know, the ports and stuff. That can break. And yes, you need to be, you know, you need to rebuild those images if you if you are changing the builders, for example, was done. But you know, we don't do it. I don't think like we do a lot of testing like we build and recompile it, start it, make sure everything works. And then we send the pull request and tag it for the extended test and make Jenkins do the the dirty job of testing that thing, right? If something breaks, Jenkins tell me like what's wrong and I don't need to sit two hours and watch all the extended test running. So that's what we do, basically. And in the whole binary everything is bundled like console, web console, operating itself, Kubernetes, ITCD not anymore. I think it is. It is? But you can replace it with standalone. Should we have a question? When you moved from versions 2 to 3 you did a lot of things because Kubernetes did a lot of stuff with it and why was that choice made or was it a big decision to have to go and say we're going to drop everything we have and the code structure just won't be right. So with v2 it's my personal opinion and in v2 we had a very good developer experience we have very good like from nothing to have your application running, right? But it was in the other case it was limiting, right? Because if you want to do something complex or you want to have like a multiple cartridges or multiple gears that connects each other and work, right? That doesn't work that well, right? Because you need to write these crazy YAML files with the cartridges and understand the concept of subscribing and having like a scaling out and so on. So we thought like when we started working on the v3 we took that and we tried to build like a very complex system that allows you to do these complex things. So we thought like the future will be microservices, right? The people will try to run like a different API servers you probably want to run a different REST API, you have a Vorny, you have a database back end, you have a lot of small components, a lot of small services that are talking each other. So for me v2 and v3 are two different concepts, right? In the end, like we might end up in v3 to provide these simple to use user experience. We are getting there slowly but we need to make first sure that all these complex scenarios that we want to satisfy are working, right? That's why it looks very complex right now but give it one year and we will have an RFC create. I don't think it's that complex, right? Like you have this nice UI. It's actually never finished because the Wi-Fi really sucks here. So I'm building the Docker image and it's pulling the image in. But this is how the Opacity UI looks like. I don't think it's that bad. It's great. It's great, yeah. So yeah. Even I'll ask you to this I call it manager's view. So it visualizes how different services talking each other, how different components are related each other. If for example you scale this up you see this is real time so it will show you what's going on inside your project and stuff. Because we really want to tell people the story that they should go this microservices way because that's what Docker encourage people to do. With Docker you can do this microservices thing. Without Docker it will be much harder to do this. And with our previous containerization technology it will be even more harder. I see the real shift is happening on that three years ago we were all thought that we depend on the source code. So you have a commit, this is the commit I'm going to deploy the production and then you deploy the production. In this world it's like yes, this is the commit the source code I build the Docker image and I promote the Docker image to production. So you're promoting the entire environment. So that allows you to do this microservices. And I suppose the internal Jenkins it's public actually that's you can go there. But my understanding is that if I create my request there is Jenkins sitting in my head. What do you mean with merge request? Poor request. So somebody has to tag it with the test and then Jenkins runs. Doesn't run automatically. I mean like somebody needs to add a test tag. From our organization. It should be tested. You have access to the logs from the Jenkins. It's public. You can just go to that URL. There is a URL. There is nothing private here. It's all public. No, it's not. It just has weird address. ci.openchv.redhead.com It's not. So this is public. You can just go there. Can you repeat it? It depends. You want fast or you want slow. So if I do development I usually go for 1.4 because it's much faster compilation time is much faster. So when we build this thing in Jenkins we go for 1.5 because that's what the stable is. That's what optimizing is. The problem is that the go 1.4 is much faster compilation time comparing to 1.5. But between them there is no backfaring compatibility. They are compatible. So it doesn't matter really. We are only testing against detect versions. We have a Travis that tests against all the go versions. But inside Jenkins we just use whatever version we have in REL or in Sentos or Fedora. We don't have multiple go versions there. You don't need to test that because the Travis will do that job for you. Travis is free. We don't need to pay for it. Any other questions? Really good question. Do we have the marketing people here? Just close your eyes. My opinion on this is that we have this Kettle versus Pet analogy. We treat containers as Kettle. If something is wrong with container we just shoot it and start another one. Stateless. I don't think that analogy applies to databases actually. Because databases is where I have the money. I don't want to treat databases as Kettle. It's my pet. If it gets sick I will go and investigate what's wrong with database, why the index is corrupted, why my data are lost, why my table is corrupted. There is no such thing. If I will go to production I won't run database in OpenShift. I will probably dedicate one node as I will run and I will treat it as a pet there. Make my data safe and then in OpenShift I will create a service that points to that IP address and use it for my deployment. I don't have a database container. I run database as a first class citizen in my infrastructure and I just export it and use it as an IP address for the service. There was something like persistent storage is very tricky. You can get it good but you never get it right. We are trying to get it good now but still there are a lot of problems with that. Before we end I just want to ask Tomáš. Can you come up here? This is one of the winners of the Winter of Code competition Come on. So we have some prize and then you will have to buy and get a t-shirt. Thank you. Any other questions? Zero. Zero. If you are shy to ask questions let's count please. Kamu tě by zastavit to jak zastavit máš blokomotivu? Musíš kopnut. A to bychom je takový měprost. Zděláš? Tak. Takový měprost? Takový měprost. Takový měprost? Takový měprost. OK. Závět. V měproste. Proste. Závět. Symi to počká moje. Kto by to pokazil? Do se dovolit. Tako teoreticky by mohl být řešit se velmi dobrý storiš, že mám host mám. Ještě mám na hostový prostě výst. A mám tevukované nody, kde běžím databázi. A teď tam možem potom, když je databázi, když je odmýškalo. Je to o skvůle, tomu vlastně, že běhám ten host, kde je to o skvůle. A mi je. Osobde normálně poživ, ale si tím hostil, že musí těmať takový noctelektor na tak podiff, kde běžel na té istémy. Je to, kde běžel, že ti vyknoříši, že si vytnit, že si vytnit, že si vytnit. Jak se zpoušel, že si vytnit, že si vytnit, že si vytnit. No, ne, že si vytnit, že si vytnit, že si vytnit. Taky takový noctelektor, Můžu, že cerockým se tě dalo, že v produkcii takže datávazom mám rítmulný container, ktorý je jim musíte máná kytatový osmálnice. Ještě to dá mnodlě, která má si to zespejí, mám všetka pomáma nějakým netapom a podobným tyto vecí. Žlíké deplení to datávazom, takže jí jim datávazom to už je na třeště ne. Snamení, že i ty vlastně a reška v netenglom v tenhle stále si bude mát tenhle s tím osmálním. Můžete se to zespejit, že jim to jim vlastně, že jim vlastně a reška v netenglom v tenhle stále si bude mám rítmulný container. Můžete se to zespejit, že jim vlastně a reška v netenglom v tenhle stále si bude mám rítmulný container. Můžete se to zespejit, že jim vlastně a reška v netenglom v tenhle stále si bude mám rítmulný container. Můžete se to zespejit, že jim vlastně a reška v netenglom v tenhle stále si bude mám virovný container? O, to je? OK. Normálně jsem vždyčil. A když bylo nějaké zvuky, můžu se dělat? O, to je zvukovat? Je to nějaké zvukovat, můžu se nějaké zvukovat, můžu se dělat. Tak, se tu se na říkáš, což něco hostí... ale jsem bychom zvolila. Jsi to děláš? Já to děláš. A je to přijtavá? Já budem projít 10 min a 5 min vom léču, kteří時. Můžu se dělat. Ejte. Můžu mnohu doskou zvukovat? Já tady neůjstavím pěknat. Kdybych vůbec cítit pro Volkan... A kého pr WordPressů věděl? Tak, Mike Barrad. Věděl bych vlastně věděl. Věděl bych. Já vyskoušel, když jen za malý príklad. A ty se nám však chci dělat mít za výjvný, který je přednáke, docíkladčí v tom, když lidi byli počkány. Díky, díky! Vyjad! Na záležitě jsem hodím, když děláme se před ní dnes s 6 hračů. Vojím, že jim vytneme 40 minut, které mi se vytneme z nich vytneme. Takže jsme se předneme jim vývný, se jste se vytneme, když jim vytneme s větně nevájíš několik. Těli jsem si se na příjvném věti, ale také bychom nás příjít, když jste předný nás vytvěděli. Máme se na to zvukovat. To je potom předný předný. Mám vzlušit to a říkám, že to nezvukovat.