 What's up? All right, I'll tell you what's up So the agenda Motivation problem is a real problem. I hope you see that This is already work obviously, but I'll get to those things. So we'll go over that I will propose a solution and also do a live demo and Then next steps and challenges and then of course, hopefully you'll have some questions. So first thing is who am I? You all know about me, but I wanted to kind of clarify why I'm doing this kind of things So I've sit you at IBM. You can find me all here, but really I consider myself a OSS s what is that s? It's important Before being an Alex's team at IBM and doing OSS working a lot with pivotal I used to be a scientist. So I consider myself an OSS scientist And you will see why that is relevant. So remember that yes Sometimes sometimes but sometimes, you know, you dream big, right? Maybe okay. So what's the problem? What's the problem? So let's get straight to it So what's the problem? The problem is that you have a developer Fred? That has an idea for like a line of business L. O B is line of business application, right? If you were in the keynote today, you saw parts of it where she wants to do a voting app Fred Erica, okay, and She starts with some kind of a voting function Maybe at some point she creates an app Using the voting function putting some UI Maybe she secures it with blockchain like Neema and Swetha did this morning She wants to scale it maybe to her business unit and then eventually move it to a larger organization, right? This is a classic use case of a developer That's starting small and then growing to something that maybe becomes big Right, you've seen this before. Maybe it's not using blockchain or voting apps, but you know, it's similar So I think this covers about 80% of the cases most over everywhere, right? Of course, it's a simple one things get a lot more complicated But let's see what we can do about this one. So it's important to note that During that entire time and I believe so and you could disagree with me and if you do let's have that discussion after That she really never cared about the targeted platform I really don't think she even thought of it, right until the later stages She wanted to add some feature incrementally So keep adding stuff as you go along because you don't know the you know, what's going to happen And she wanted to layer what we call non-functional attributes to her app After so things like scaling things like securing It's important to design your app with that in mind But you also want to be able to add those things as you need like so scaling for instance You might want to auto scale you might want to automatically scale to a big number initially so those things you want to add after The reality is though is that you have many different platforms that are available. You know Kubernetes is a thing There's also another thing called Knative Then there's also Amazon that does the one thing. Of course, there's us but foundry and then you can name it right open Whisk and I bet you there'll be more because Kubernetes encourages more things like Knative, right? To layer on top of the base platform so a lot of these things exist and they they're not all perfect You know some give you more advantage than others and of course you select one you become locked in Of course in cloud foundry because most of those things are open source So you can kind of pick one and then you move to different vendors But you still kind of locked into a particular one eventually you can do some work and remove yourself what you're there, right? And I think the goal though especially for large organization that are not just doing one line of business application But many many is to be somehow focus on your code just focus on your code get it done and then all the other things come after I really think that's the value and that's something that in cloud foundry we've said but now there's a reality that there's many alternatives Okay, so I think that's the reality of the world So what's the solution to this now? You may disagree that that's not a problem. Okay, but let's assume that's a problem So I invite you to agree with me for a little bit So what is a solution to this problem? Which is that there are multiple platforms they all do they all have different features They kind of do almost the same things but not the same way the experience is different in each right? So how could we do better for people like Fred so that different parts of our application? She has Something better than what exists right now because like if she wants to use Kubernetes. She's gonna have to do a bunch of YAML If you've never seen those YAML file, I encourage you to go check it out. It's not fun Even for somebody with Bosch background that does a lot of YAML Kubernetes does a shit load more Knative guess what same thing cloud foundry very simple experience, but maybe some limits You know, so everybody has their kind of different experience, right? So I claim that the solution that we want is the following a Unified pass can we create one? So it's a big question And part of what that would do is one platform as a service experience. Maybe I should put that here That rules them all could we create that? That's exactly what I tried to do so I will show it to you for the first time First thing warning. It's experimental. It's alpha very early What you're gonna see is not even public yet But I will make it public soon and then I invite you to give me feedback if you think it's cool. All right, so One thing I want to kind of go over and then we'll get to the demo and then we'll go back to slides Is this idea that? You know, I'm gonna talk get those platform I won't show you the serverless one today because I don't have enough ready, but a lot of this is there This is kind of a chart to show you that not all the features are gonna be Exposed by all platform, but the experience will be the same That's what I'm hoping for and then of course it's extensible so that you can add more columns Okay, so those are my desiderata and then we'll get to the demo Actually a few slides because I want to show you kind of the experience in slides and then we'll get to it so what I'd like is and this is again my Goal desiderata means that I'm hoping and I would like those things for Fred But obviously we may not be able to achieve all of them So a uniform interface to all paths now interface not go interface meaning the interface of a user Target many of them Common workflow, I think that's the key. That's where the experience comes from Support various QoS and then make it extensible You will see my proposal for the experience my implementation. It is influenced by both cloud foundry and Kubernetes and Bosch and so on so I hope you like it So one thing you can do here are some examples and then we'll get to slide to code to see it So you can do something like upm and it shows you the different environments. You can create environments deletes environments and so on You can check what plugins are available of course the current plugin that's being used You can check apps. You can create apps delete apps and so on and then I'll do a demo So that's sweet live instead so So I have two two two things here One on the right is mostly because when I'm running Kubernetes I can show you more because I can use the Kubernetes thing and then on the left here is gonna be where I use it So first thing we'll do is we'll say UP amps So we list the different environments. You can see that I have two k-native environment and one CF environment Of course you could keep adding more The first one is the one that's targeted you see the little star so we can say something like UP apps and We can list the different apps right now. I'm just deploying this the basic hello application from the k-native You see it's been running for 21 days on this particular environment The second environment If you look in the top so you say UP set M And then you give it the number or the name so I can say one so now we switch to one So we can say UP apps again, then we'll see it. I Created one yesterday 21 hours for dr. Nick, but I forgot to put the D. So let's delete it. I know so horrible So I can say UP delete app And then the name And it's deleting it. So now if I say UP apps All right, and you can say UP L a for list apps. So there's a lot of shortcuts and so on So what we should do is create maybe like an app a simple app now So you understand these things are running on k-native And we can test them, but we have to do a special curl But you'll see that it actually goes through and we can actually hear In Kubernetes Get services Everything is using the default and I'll explain to you that the default namespace That's why I don't have to put the namespace here So you'll see that it's it's showing those and then as I create new one you'll see them coming to live So we'll just watch it for a second and then you'll see the new one. So of course I'm doing here UP create app Minus H Yeah, so here's kind of the help for it, right? So we can go and do the simple app. So here you're passing a docker Container image But you can actually a docker Yeah, for docker image. That's already in gcr.io in that repository But you can also put a git you can also do build pack Part of this especially to plug in for k-native was influence. I work a lot with Dimitri That's where I can joke with them We actually built something called KNCTL, which is an experience for just k-native and And and some of it certainly influence a little bit this but we'll deploy one We'll say hello Basil, right? So if you watch on the right-hand side, you'll see that The new app is being created. So we'll say hello dash Basil And then as it's creating you'll see on the right-hand side. It's putting it up. So you can see now There's a hello Basil service Now in k-native as you create more of the same thing it creates revisions and so on I'm not exposing that because the experience has to be the same and why because I also want to be able to do the Same thing in Cloud Foundry and I'll show you that in Cloud Foundry. I'll also have that, right? So UPF and then in UP, you know set environment to 2 To switch it to Cloud Foundry and then we can say UP apps It takes a little bit more time in Cloud Foundry To list the apps because it has to go through the whole process of login target and so on and also because I'm Reusing the CLI but the intent for the real plug-in Will be to essentially code it directly to the API so it will be a little bit faster But you'll see the experience is the same creating apps on Cloud Foundry will be exactly the same way The same thing deleting apps the same thing and then I'll show you a little bit more So one thing that I got feedback on is to get the same output because of course I can generate JSON out of this and I can generate YAML so making the output the same is also another target So part of the idea this is a basic flavor of it these apps run I mean I can show you that after but I want to show you a little bit of where where I intend to go with this because Part of the idea is not to just do apps. It's also all the other things So let me show you in slides at least where I'm going with it so that you can have an idea And then also when we after we go through this You can also create environments delete environments And when you create environments on Knative it actually installs Knative for you delete Removes it you do have to have a cluster already. So things like that, right? So but for Cloud Foundry, we could even make creating environments spinning up depending on the kind of plugin that you're using Bosch light or just connecting to a real Cloud Foundry. So part of the idea is Unifying the experience and then unifying what I mean what I Naming apps functions Services Walkers and so on. So let me show you a little bit more in slides, but hopefully next time you see this. They'll be more implemented So for functions, it will be similar So you create functions you delete them You can also one of the things that I that I realize and this is the same for everything is that I'm actually If I define a spec, it's not the Kubernetes specification for those different objects, right? But it has enough information that covers all so that you can download the spec modify it and apply it Because I'm doing all this machinery in UP to do that for you So in some ways, I want to give a little bit of the flavor that you get with Kubernetes But also the flavor in Cloud Foundry because you saw as I was using the CLI feels more like Cloud Foundry other thing is I want to add is events because you know creating functions without having events is Kind of useless right because you want to have triggers for those functions and that Inkinative they're not quite ready for events or at least the event is still in beta or how far more they should say So that's why you saw a server less because I'm implementing the the plug-in for serverless instead Yes Yeah servers that come yeah They have kind of like an API that they've defined that allows you to use different functional Function as a service platform so targeting them Hopefully and again as I said, this is alpha in experiment so What I'm hoping to do is to learn and then of course if other people are excited and see if it if it has value Right, so services. It's pretty straightforward in the sense of you know You do have to have brokers so the experience is gonna also map with the brokers I also realize that you need registries because or at least Registering registries so that you can have access to images otherwise you're gonna have to pass secrets and stuff like that So it will become a little bit more complicated than what it is right now But I'm hoping the the basic thing is the same now for QoS This is maybe the most important piece is that I think the way I look at QoS is because did you see when I listed the plug-ins I am defining QoS objects For the different environments, so for the different plugins Right auto scaling blue green and so on so the idea would be that you would you you could do something like this Where when you want to apply the QoS You say apply the name of the QoS and then your app name and so on and it will do the work to translate that Command into the right thing. So in Cloud Foundry, it would mean creating a Service instance for the auto scaler setting up a policy connecting them and so on so in some ways again I'm optimizing for the basic 80% case Obviously people might want more deal more details, right? But then you go into Kubernetes or you go into Cloud Foundry So, you know, there's poison cons but if I can do that and I can cover what Fred wants As an enterprise user, hopefully she's happy and she can tell you all those different ones without having to deal with the underlying stuff There are challenges, lots of challenges. So I will list them and of course there'll be some time for questions so you can maybe even point out more So ingress and egress across those different paths environment. I think that's that's a big deal I think I know how to solve it because with When you create the environment, I can add things with Cloud Foundry adding Istio It shouldn't be too hard for me to essentially use that set up VPCs across the different environments So that's something I'm looking at. I'm actually Engaging with a research team at IBM to help me on this. So That's one thing. There's a big question about is the common denominator of features enough, right? That's always gonna be a big thing But I the gut feel is that if I can optimize for that 80% That's good enough to start with Those functional attributes you can ask the same question for that. There are other things like logs SSH You know, obviously that we could do so we can definitely look into those things Most of this I feel is possible at least for the current plugins that I have Obviously accepting something like this is is a big deal, right because you're essentially Saying to the community here is a better experience Over your native experience, but remember a part of the idea is that we're targeting people that, you know Don't want to deal with the underlying detail. She just wants to have her app running so next steps obviously Keep continuing the different you can see that I have a you know, a particular pattern that I'm trying to be Very keen on in terms of verbs the object and then options Service and event discovery is definitely next steps There are some details of the commands that I didn't show you but obviously I need those like memory and so on to make them You know very consistent, but we can do that image registry I think is is an interesting question because if you don't do that Then you're gonna have to set it up and I discovered this working with Dimitri on the Knative KNCTL CLI because a big part of that is Essentially making sure that you have registry now if it's a public registry no big deal, right? But talking private registries Because each one of them have different things not just like username and password some of them requires you you know Big certificates and stuff, but it's not hard to add right so it's coming up with what the experience should be This is what I mentioned VPC between evs and part of the idea is that you could have your really your service running on Cloud Foundry And your Kubernetes running on You know, I'm sorry your app running on some Knative and in another piece of the app But they all connected with each other. They don't have to go to the public You can do that to the public But if you had a private one you can see how it works, right? So you really give them a really nice unified experience Nima from our team had this great idea The idea of like allowing you to have migration so my great app between environments Right in some ways possible because I have all the details there. So so that's something I could explore Dr. Nick had even a better idea. He said well if I'm gonna love this I would like to be able to say you P create up not even specify the environment and then it would detect kind of an enhanced Buildpack which environment is best for my app. That's an interesting idea. I'm not sure I would put it seven I put it here for you, but It's definitely something to look into And in of course something like this only is valid if other people come in and join right so Maybe even creating a better plug-in than the one that I have right now So that's that's one thing And then socializing it I'm starting the socialization just because I've talked to enough people In my so I talk of course to my boss here and then he said well talk to Jason if Jason likes it Maybe we can talk about something so I talked to Jason a few other people and they they were like, yeah So so this is you're the first to see this and You know, but hopefully I'll be presenting it again with more features But if you're interested ping me so that we can we can talk about it and I can give you access So with that I want to thank you and see if you have questions. What do you think? Thank you It was very sarcastic club, but what is your question dr. Nick addition to that's true. That's true Do you hate it more like it more okay, it's somebody else Hmm. Yes, that's true. I'm not so sure though. You could do that. You could keep layering things which is where we are heading Yeah, but here's here's what I discovered when you talk to the folks in my team and That are doing Kubernetes. They actually love this document YAML model I mean they get lost in it, but they kind of like it and then you talk to people doing Cloud Foundry They love that experience when you talk to customers. I don't know any of it. They hate the Kubernetes because too much YAML and they kind of like the Cloud Foundry better No, no, no, I agree. I agree. But the point I'm making is K native though is essentially making it a pass Oh, I agree. But in K native without K and CTL you have to do those YAML Absolutely even more so the point I'm making is the experience The experience is horrible For a wide variety of the population that just want to focus on their code And it's gonna get worse because Kubernetes is designed to allow more things like K native to exist And we don't know which one is gonna win So I'm saying coming from Cloud Foundry. Let's reinvent that shit Let's make it better. And that's what I'm hoping to this achieves. That's the goal, right? I didn't say that but that's the goal. Let's reinvent pass but make it unified even But that's an opinion though. So You I may be very wrong that, you know, most people are quite happy with their YAMLs and quite happy Well, so no, so so this is saying This is saying this is saying You learn one experience which is better than Cloud Foundry. So that's one of the things that I'm doing too I'm trying to make it better than Cloud Foundry. And then that experience will port across the different the different passes But yeah, let's see. Let's see. Let's see. No. Ah, yes It's it's an interesting point. I mean, obviously I think there's more value than just the manifest because To prove that the manifest works you have to build all this stuff, right? So you can you kind of you know, it's a chicken and an egg thing and in the second problem With what you're suggesting is that in Kubernetes for instance, they've had a hard time agreeing On what the manifest for app would be So much so that Knative itself which came from Google. So I'm assuming those guys talk to each other Completely defined it differently and but it does apps pretty much So there is a group in in Kubernetes defining apps and in Knative form Kubernetes also defined it completely differently And I bet you there are more so I think It is true that there will be great value and the the the notion of those different things and having very clear specification for them But you can't prove that works without You know some ways to drive it now, of course, you know, that's one way to drive it So I'm in agreement with you, but I but I don't think I could say hey Here's how I like past apps to be defined and then go and implement it. That's never gonna work. Yes. Yes. Yes, I Agree with you. I'm just saying that they are having problem agreeing themselves So you sort of have to do it outside and then hopefully it catches on right? But if you do it outside, you have to prove the value, right? So Any other questions and By the way, if you're interested in this I can share some of the details of the manifest with you and so on Part of what I'm not showing it is because it's still in flux at least the CLI experience is not gonna change much Because it's sort of a quad over things Yes, yeah, it's cool. It can be more controversial than him Yeah So according to chip this morning 44% 44% of all Cloud Foundry users have looked at Kubernetes and stood up Kubernetes and I can't reveal IBM numbers, but I can tell you it's even better than that And I'm sure if you talk to the other people you'll see so in other words people are trying different ones now It doesn't mean they could be just testing it, but that's okay though, right? No, no, no, it could be experimenting with it. I agree with you It's not it's not a notion of 44% or in Production with Kubernetes at the same time as Cloud Foundry, but if they are testing it then some percentage of them will eventually go to production, right? Yeah, I'm seeing this because obviously one of the problem with Abstracting and having a unified layer is that all of a sudden you have to drop some things And then once you do that the expert user would be like well That's that little thing that I'm looking for and I need to use it, right? So there's gonna be those people, but I think I Mean at least, you know coming with some enterprise knowledge, you know I mean there are certainly enterprise people that want to do low-level stuff. They want to define you know Services and detail stuff and so on. Yeah, but I think we can cover a vast majority of this LOB folks and You know for big enterprises, I think it's it's a big part of that, right? Making their life easy. I mean, that's the reason they love Cloud Foundry, right? I'm saying I love Cloud Foundry but it's time to think bigger and Use the experience we had in Cloud Foundry use some of the experience we had in Bosch You know with setting up different environments because nobody just use one environment you have bunch you have tests you have Multiple tests so having a unified experience over this and over those different platforms is a good thing And it would be hard for me to go to the current CLI in Cloud Foundry and say oh You should change it and then come up with something new so we do I think this is saying let's reinvent it But let's learn from those Experiences and target that class of people All right, I'll be around if you have any other questions feel free ping me also this is my Twitter and my IBM email is maxim at us that IBM.com, but if you go there you ping me. I'll reply to you I'm always on the cap call. I run the cap call. So if you are in Cloud Foundry, I would encourage you to join those cap calls so you can chat with me And we can have different conversation. I'm hoping by the time next time we meet There'll be even more and then it will be public people can try it and so on But if you want to have access now I can I can do that. So thank you again for your time