Good morning, everyone. For those who just joined Cube India, welcome. I hope you guys enjoy as much as we are doing so far. And for those who have been with us since 8 AM in the morning, please, guys, hang in there. Lunchtime is almost there. I would like to start the presentation by asking you guys a simple question. How many of you have worked with eBPF and its usage on 5G applications? OK, I see a couple of hands. It's a bit tough, right? I know. Let's make it more simple then. How many of you know about this famous character, Ant-Man, from The Avengers? All right, guys. I know, I know. So it would be crazy to say that Ant-Man is to the quantum realm, as the eBPF is to the inner core of a Linux kernel for a 5G. Sounds crazy? Today, Prakash and myself, Marco, we talk about this in that topic, paradigm shift in 5G deployment. It's a problem for eBPF, for open source, 5G cores, performance, and security. I will start with just listing the content. We start with the introduction of ourselves, followed by a problem statement and hypothesis. Then we will discuss about the state of art, followed by the pre-designed environment we prepared for the presentation. Last, we will work on the verification of results and some takeaways. OK, let's move on. Prakash? Yeah, thanks, Marco. Hi, guys. So my name is Prakash. This is a brief introduction of mine. So I'm from Andhra. And my tech journey began when I did my bachelor's in computer science, followed by post graduation from UT Austin. Right now, currently, I work as a cloud architect in Accenture, Japan. And there, I tried to develop and deploy cloud solutions. And my hobby is doing snowboarding and having fun, so looking forward to having a great session with you all. Over to you, Marco. Amazing. Prakash, smart guy, I'll pray that, guys. Smart guy. About me, my name is Marco Gonzalez. I'm from Lima, Peru, South America. I've been working in telecom for over 14 years now, a long time. And now I work as a 5G inclusion architect at Ericsson, Japan. In my free time as an AWS Community Builder, I talk about AWS, 5G, and this mix of both. You can check out my blog, the link. And also, sports, a lot of soccer. Okay, guys, that's enough for introduction. Let's jump into the good stuff. Before that, short disclaimer, this presentation contains some information that belongs to our personal opinion and insights. That being said, we did not want to reflect any position or views for our companies. Please, guys, take a look at the following diagram over here. We tried to summarize in five items all the current challenges 5G is facing right now. The first one, challenges in performance and security. Every system we have right now are facing these evolving threats of security and demands grow speed and reliability. Since 5G entered the picture, it has been the same. Second one is the demand and complex, sorry, dynamic and complex 5G demands. 5G is by no means guys aesthetic. It changed over the time. It changed since 2018 and we will keep changing. And for that, we require a robust, yet flexible solution to manage them. Third one is a very common scenario, improve user experience under the most difficult environments, let's say, overload scenarios. That's what customer wants, quality, always. Fourth one is the current dependency we have, the high dependency on current modules and proprietary hardware for 5G solutions. It's a big one, guys, and we'll talk about this today. Last but not least, the cloud solution, multi-cloud and hybrid solution we have so far, yet they have so many approaches that fall short when we want to deploy 5G solutions. Based on these five items, we prepare the following statement. If 5G core can coexist with EVPF, then can performance and security be improved? By the end of the discussion, we will know the answer about these questions. Let's start with some sort of art about EVPF. And for that, let's focus on this diagram. It shows a conventional container networking solution. You can see the pot which the application can be anything, can be 5G, for instance, sockets, IP tables, then routing, and the internet interface. This pot connects to the node or the host node using this virtual internet, and then we see again a duplicate view, right? We see again in the host nodes, IP tables, routing, and, of course, more overhead. It helps us to solve the most common solutions right there. Create stacks, isolate pots, and make communication between them. But, in fact, they add a big overhead, and we will talk about this. I will zoom in and try to mention the three most well-known overheads we have so far. The first one is the context switch overheads. It happens when the packages go through the internet in the pot all the way to the internet in the host node. The second one is perhaps the most impactful one is the IP tables overheads. When the packages go traverse from the pot to the node, we see all these overheads. And last, we have the contract or connection tracking overheads. This is how IP tables identify what to do next with the packets in the summary of the stream. So then we ask ourselves, what is EBPF doing then? How is EBPF solving this? In simple words, EBPF is removing all these IP tables overheads. EBPF uses customized packet filtering, processing, and programmable network data path on each Kubernetes node, and this allows us to minimize first the context switching, then it reduce completely the IP tables overhead. And that make us have the full latency and CPU overhead reduced. Let's see some example about this following slide. A key difference between IP tables and EBPF is latency. In this example we took from reference, there are 100,000 sequential requests being sent to a Kubernetes service. And this is not just any kind of request. They are TCP connect requests and response, which means the whole cycle. And we can see by far how EBPF outlasts IP tables. And as we increase the number of services, we see this difference way bigger. Another difference that we can highlight is how EBPF solved this IP table rule, this mess we have right now operating this. For those who have been into the operation work, handle these kind of lines of work, or these lines of IP tables can be really messy. So how EBPF solved this? Well, simply just remove them. No more IP tables set up. And this is key guys, because as we increase services in our solution, it becomes a crucial part of how to maintain this service. Which lead us to the next slide, 5G Core. We mentioned before that our goal is to co-exist EBPF and 5G Core. And we must understand three key points first. Telco APIs, guys, 5G Core is for developers. It will be like this and will continue to be like this. Enable 5G for developers and API exposure in 5G network. Why we mentioned this? Because the goal, the ultimate goal in our view is monetize 5G and cloud app solutions. So I have to say, but it's the truth. I'm not going to into the 5G topology because we can take a whole new session about this. I just want to highlight this small component here. Network exposure function. It is right now standardized by 3GPP as the edge how to talk with different applications worldwide. And then we ask how we can improve this. What happens when our element needs to handle 1,000, hundreds of services in a single infrastructure? Let's talk about our demo next. Finally, we believe in open source. Our demo, our demonstration is focused extremely on open source projects. In this presentation, we have used U-Around Sim and Open 5DS. For mainly two reasons, guys. First, the versions are really stable. We have deployed it, implemented in AWS environments. And second, guys, there's a huge community behind this. And community means help, support, and efficiency. All right, Prakash. Thank you, Marco. So now let's get into the project design and environment. If we go back to the beginning, the problem statement which Marco mentioned. So if 5G core can be deployed along with the EPPF, then can it optimize the performance? So that was the main question. So let's answer that through this project design which we executed. So for this, we deployed the 5G core in two different scenarios. In the first scenario, we tried to deploy U-Around Sim as one open to virtual machine and the 5G score in another open to virtual machine. And we established networking between both of those VMs. And after that, we attached an ad gateway for one way connectivity outside and we attached internet gateway so that whenever the UV sends a request, then it goes through open 5G score and it accesses the internet through the internet gateway. So this is the first scenario and let's check the second scenario. And here, the main thing to notice is we utilize the traditional IP table setup here. And in the second scenario, we deployed the 5G core as a Kubernetes port and keeping the U-Around Sim as a virtual machine itself. So our main focus here is to identify the metrics and the performance of the 5G core itself. So that's the reason we kept the U-Around Sim as a virtual machine separately. And here as well, we established a networking between both the U-Around Sim open to VM and the 5G score. And this is an ad gateway for one way connectivity. And here as well, there's IGW attached so whenever the UV tries to access the internet, so the flow will be from the U-Around Sim to the 5G score and again to the internet gateway. So these are the two setups which we executed. And now let's look at the components inside the 5G score. Before that, one more thing to point out here is in the first setup, as I mentioned, so we use the traditional IP Linux tables and here we use the Cilium operator which is EBPF enabled. So now let's look into the open 5G score part which we deploy and see what are the components of that. So without going into too much detail, these are the 5G core components. We have these are the 5G core components present in the report. If you see here, we have AMF, SMF, UPF, NRF, et cetera. So and this raises the question, what are we trying to achieve through this setup? So there are different scenarios in 5G, there's roaming, et cetera. So we are trying to achieve three different scenarios. The first one is the UE initial registration. So the UE registers to the existing 5G core following the security authentication and radio connectivity. So this is the first scenario we are implementing and the second scenario is PDU session establishment. So the UE, the user equipment requests both the RAN and core resource to start exchanging data traffic. So that is the second one. And let's check the third one. And here we are trying to provision the operations. So we try to register a new UE and an existing one in the 5G core database. So through this setup and through these scenarios, we are trying to see how can the performance be improved only if these scenarios are considered. Now let's jump into the verification and see the results of that. Yeah, so after we deployed the setup to simulate the traffic, so we need for those three specific scenarios. We do two bascripts. So the first basket, it generates the UE traffic and when I say generate the UE traffic, it means creating the UE users. So it all depends on the IP address availability of the subnet itself. So through those two bascripts, in one, we are trying to create the user equipment. We are trying to increase the user equipment. And in other script, we are trying to create the UE RAN sim links. So through that way, we are generating the traffic here. So after simulating this traffic to jot down the metrics, we focused on the following KPIs. So these are the following KPIs which we followed. First one is NFEI KPIs and second one is the 5G KPIs. So the first one, we are trying to check the CPU utilization for those three specific scenarios. And next one is a memory utilization. The third one is a network throughput. And the fourth one is a network latency. And when it comes to 5G KPIs, we considered the initial user registration failure. So it mainly focused on the AMF component of the 5G core. And the next one is the service-request-failure ratio. So it focuses on the AMF and the SMF connectivity. So those kind of specific scenarios. And the third one, if you see the number of subscribers, that is mainly for the SMF. So for the phase one, we tried to focus on the NFEI KPIs and this performance, how this performance can be improved. So if you can see here, these are the results of the performance after simulating the user traffic. If you notice here, the CPU utilization, the average CPU utilization, when we executed those specific scenarios, the average utilization when the AVPF is enabled is 0.24%. And the average utilization, when we use the traditional IP tables, you can see it's 0.47%. So one more thing to point out and note down is that for the dimensioning part, we just use one VCP and two gigs of RAM for the 5G core part and the Ubuntu VM as well. So these kind of percentage calculations has been done based on those dimensioning. So here you can notice that if you see here, the average utilization of 0.24% and 0.47%. So there's around 48% improvement when we use ABPF part. So it reduces the potential bottlenecks and reduces the memory of a CPU overhead. And you can see the next one as well. In the memory utilization, there's 18.9% and 29%. And here as well, we can notice that a significant reduction of memory overhead which is going on. And if you check the network latency part, so if you see here, the 2.2 milliseconds and the next one is 2.8 milliseconds. So whenever the ABPF is enabled, so we notice that 2.2 milliseconds and it's 2.8. So if you see, the improvement is around 20%. So that is not a small thing to note down. And this can cause significant improvements in the future, things which you are going to do in the 5G core when implemented with the ABPF. So through these results and from these verification results, you can see that there's significant improvements. With this, we go back to our main problem statement. So OT Marko. Thank you, Prakash. OK, guys. At the beginning of the presentation, we asked a question. Can ABPF coexist with 5G core? And not only that, but improve latency and CPU and security? The answer, guys, is yes. And we showed these great numbers. We just did a demo with over 100 UE connecting. We can escalate to more. Of course, it requires hardware. It requires research for more colleagues. A few takeaways. Guys, in this presentation, we talk about three core use cases. As Prakash mentioned, there are many use cases for 5G, guys. It's not only one or just 10. The purpose of this presentation is to show that ABPF can support, can be an ally to 5G, can improve many features, not only performance, security, observability, monitoring, and even dashboard visibility was improved using ABPF extended solution, open source solutions. And only that, we proved that we can implement it along with open source 5G solutions. So we help the open source community. Our goal today is to encourage any of you who is into 5G or just want to try ABPF and 5G to please use it as a reference and keep researching and investigating. Guys, I hope you enjoyed today's Q-Day, as well as all for all for our site. Thank you so much.


Do we down? Yeah. What have you found? What have we found? Well, I mean if you're a Jurassic fan and you like gatches or your foes, I think they're called, look, there's a friggin' Jurassic World Dominion T-Rex, but it's one of these ones where you have to, like, you have to grab it and then fit it through the hole, which is almost impossible because the way they're done is like they're gripped. So it looks like it's really close to the edge, but it's gonna take a lot in order to move that. Also, if you look over here, come with me, you've got these three, so you can win a Giga, you can win a Blue, you could win a T-Rex, but again, this is sort of similar. You've also got over here, you've got a Stegosaurus, and you've got a Blue. So why are you probably more likely to get the Stegosaurus? So we're gonna give that a shot, and put it over here. All right, all right, we're ready. How long has it been since we did the last Queen Game video, Jurassic? 2015, so it's been, like, seven years. Okay, we're timed. Not 2015. We've got 2015 when we did the last one. Right, I think that's it. I think we've got it. I think we've got it. Dude, we've got it. What do you think we've got it? If I got it first time, I'd be pretty amazed. Like I said, I'd be pretty amazed. It didn't even crush it. No, it didn't, it really didn't. 30 seconds on the clock. Down. Feel it. Feel it. We can get the Stegosaurus.  Maybe it's heavy. Maybe that's the thing. Or maybe we should try for Blue. Right, this is better. Now he's on his back. Also what's kind of interesting is you can hold it, like if you want to go away and get more coins, so no one else can have it. Maybe the back is in the right way. We've got it this time. Come on. Yes. Squish it. Although I'd rather you gripped it than squished it. Although, this is what they do. It hits that bit. Oh no, that was so close. So you can click here and it holds it, so it shuts it down. Then you'd be like, I'm back and there you go. Although I don't know, it's not ID to anybody, so anybody could just do that. But everyone's so polite here that if they see that, they go, okay, I'm not going to, I'm not going to go on this one. Oh no, it's gripped the label. Maybe okay. That's, it didn't get, it didn't get the, oh come on, chuck it, chuck it. The woman who won all the pushies in the video that was like seven years ago. I think it was. You're like, I did it, I won. Are you summoning it? Summon it. Summon it, Whitney. I want this. You want it. You can get it. You didn't get it. You didn't get it. Can I have another one? Take one of Dottie's coins. God, you got this, you got this. Here's the person I mourned me about when I was a kid. I'm the person.  You go grips, grips. That's it. That's the blue grip. That's it. That's not the grip. When you've only got 27 seconds left, you better line this up correctly, darling. Okay? Okay, come on, look at him. He wants to be picked up. He wants a loving home.  He is too round. We've got a better chance of getting blue. We don't need to eat if we have Jurassic World plushies. Can I argue with that logic? Is that as far back as it goes? Oh, you've stabbed him. No. We're going to try all the Jurassic World crane games because we've got a couple that are over there. It's like even a mini one. Oh, oh yes. Oh no. I thought you were hungry. I am hungry. We can't pay for food with plushies, James. We can always pay for food with plushies. Go on, this time you got it. This time we got it, yes. Kind of? Kind of if you don't let go. But I want the Stekas sword though. You're not going to get it. We already established it's too heavy. Okay Whitney, here we go, here we go. What's just happening right now? All right, all right, all right. I think that's the best. We're ready? Let's go. One of you is going to do it. One of you is going to go. Imagine if we get both of them. That's like it happens. Imagine if we get both of them. It looked so promising. And she sounds very excited. She's wanting me to put more coins in it. Okay, so this one, like we described before, you've got to pick it up. Now what's the tactic you think here? You need to get it in the middle, but how would you do that? There's the question. Well, this is how you do it. Are you ready? Are you ready? What you want to do is you want to go to the back. This is pro tips by the way.  Not like that. That's not what you want to do. Come on, give it to us. The thing is, you don't want this to happen because as soon as it goes like diagonal, that's when it won't shift at all and it's like super hard. Oh, I don't know about that one. I know about that one, Chief. Hey, hey, hey, hey, hey. Now we've definitely got, I think each corner or maybe we've no, we don't. Okay. If I get it sideways, it'll fall straight down. I just need to keep shifting it along. The reason why I want it is not because of the paint. If you look at it, the paint scheme on it is pretty bad, but look at the detail. If you can, you can repaint that and it would look so freaking good. So that's what I'm doing this for. We got this. We got this. Come on, turn it around. Keep turning. Oh, it barely did anything there. Oh, that was fantastic. Let's keep going. Are we trying something drastic? We're trying something drastic. We're trying something drastic. We're going for the middle and let's see if it makes any difference.  Right. So what I've deliberately done here is angle the center of the UFO to the right. So that when it picks it up, it's going to shift it more to the right. It did shift it more to the right. Actually, if you get in the back, it might fall now. You're just going to lift it up and put it back on top now. What are you doing? I'll do it. I'll do it. I'll do it.  Whitney will show me. Whitney will show me how to do it. Go on, Whitney. Look at this. This is the Whitney strats. Here it comes. She's gone for the back. She's going to hold it and I don't even know what that's doing. You want more money? She thinks she's got it. All right, all right. Look at the T-rex. Now we've got to go for the middle itch. Oh, now you're going to go for the middle. Yeah, yeah, yeah. It's going to go wrong now, though. I want a fresh start. I want to go on one adult. Oh, I didn't even question it. See what I mean? Exactly. Right. Next, we're going to try what it is. Right, so we kind of left that in a terrible state and we're going to try a new one. This one should be a lot easier because look how wide. It's the same distance in the gap, right? I think this is the one that's going to make it. Getting used to it, you know. Getting used to it. Oh, God. Nothing. Oh, that's as far back as it went, though.  It doesn't look like you can get it then. Go for the middle. Go for the middle. All right. Middle it is. Middle it is. I'll trust in Whitney. Let's give this a shot. Oh, why did I hit the side of that one? There's no reason for it to hit the side. It was like at an angle. It's fine. It's fine. We're not wasting like each goes like a quid or something. So, I don't want to be twisted. I just want to see what happens when we go for the middle. I don't think this one's going to work either. But saying that, the stagger is in a really awkward position. So, are you ready? Yeah. Three, two, let's go. Yeah. That's as far as I can get over for the stagger. Just completely avoided it. Like completely avoided it. Don't look at my panties. All right. Here's my tactic for blue. Okay. See the way blue is. I think if I do this, there's a chance it'll grip and then it'll pull it to the right. So, when it drops it, it's going to drop it more into this. That's my plan. That's my plan. Watch it. It'll do it. It'll do it. Stegos completely out. We can't get Stegos anymore. This is how they get you. This is how they get you. Oh, no, that's not good. It's only gone for his head. It's only going to lift him. Oh, but we made it better for the next one. Okay. Apparently, okay. Oh, God, I'm going to try for blue. You want to try for blue? Right. I'm going. I'm going. I'm going. How's this going to go? Stegos avoided me again and did blue avoid you? Sod this. Sod this. Sod this. I'm going on the tiny one, please.  It's all I ask. Go on. You know you want to. Go on. Go on. Please. Yes. Come on. I can't win the big ones. I can't win the action figures.  No. All right. Go on, Whitney. You give it a shot. You win it. Go on. You know you want to. For me. For Dutty. What? What just happened? That was brilliant. That was amazing. There we go. That's good. That's good. With his little face. If you can get like his little ropey bit through there, you'll be good. Go on then. Pick him up and he's gone and he's back. We haven't spent. Come on. You're only a tiny thing. Although you are in awkward shape. Try for blue. Try for blue. Sod it. It doesn't want me. It doesn't want me to go for the therizinosaurus. So we're going to go for blue. Come on blue. Come on blue. At least get blue. At least. You okay? I'm going to do, I'm going to put two in. I'm putting two in. This is it. That's it. That's it. It's done. Done. I'm going to end up having one like free go. That's it. Come on blue. You can't. You can't. You can't. You can't. You can't. You can't. Yes. No. Maybe I can actually hit a T-rex out. Do you think I can do that and then get two for one? They're probably like tied in there or may have something. Now they're stuck into the grips aren't they? Are they? Okay. It's perfect. His foot's locked and everything. Come on. Come on. One of them. One of them. One of them. Double whammy. Okay. Single whammy. Why do you let go when you move every time? That's all I want. Just one. Just one. Look at him smirking. He's lapping at me. He's lapping at me. All right. Okay. I'm going to go for red or tiger or whatever this one is and we're going to win it and that'll be me. I'll be happy with that. I'll just give you a little one. Just one. You know, we're going this way. We're going to get this one. No, you're not. Imagine if it did. I can't get better than that with this. Can't do it. Okay. We're doing things with a saurus now. We're going to go this way. There we go. That's it. I can't believe it was that easy. Winnie. Oh no. Oh, you bugger. I'm going to do it. I'm going to do it. Go on then, Whitney. The crane view. What are you doing? Getting into position. Oh, okay. Okay. This needs to be proper professional. Oh, sing my boob. I just want to go eat food. Can we just give me a coin? Yes. No. Oh, you put two in. Oh, okay. I assumed I wouldn't get it the first try. What made you think that, Whitney? Oh, you know, I'm very positive. Look at that. Look on what? Look at how much have we spent on this? This is tiny. This one should have like an easy success route. Why doesn't it have an easy success route? Come on, please. Yes. No, what? You gripped it wrong. Why did you grip it wrong? We're going.


The way I have structured this talk is I have about half the time I'm going to be talking and remaining half the time I have a demo now. I'm going to be only showing a part of the demo because I only have so much of time, but the demo and everything related to it is on GitHub, so I'll share the link and then feel free to play around with it. So let's get started. So I'll start with the serverless model, what do we mean by serverless model? Now, when we look at serverless model, there are actually two dimensions to serverless model. One is the operational model and one is the programming model. Operational model is basically from an infrastructure point of view. The person who maintains the infrastructure, what serverless is really offering you is no infrastructure management, so you don't really have to manage it yourself. It obviously has to be managed, but it's handled by the system, which is a good thing that you don't have to do, but it is a bad thing in the sense that if you want to optimize and so on, you have limitations because the system is kind of taking care of it. Because the entire infrastructure is handled by the system, you really don't have to worry too much about managed security. And the third and the biggest benefit of serverless is you pay for usage. Typically in a standard VM or container-based systems, you're actually paying for the capacity in the sense that once you deploy your virtual machine to the cloud, the machine is running, whether there's load or whether there's no load, it's always running. So you're paying for it, even when you're not using. When we talk about serverless, we're talking about auto-scaling. So in the sense that if you don't really use your service, it scales down to zero. And if you're using it, it scales up to a limit that you define or basically to a limit that is required. So theoretically, you have zero to infinite scaling. Obviously, there are practical limits on how much you can scale. And also, there are certain requirements in the sense that sometimes you may want to have auto-scaler configured to a certain limit only because if you scale too much, you're paying too much to the vendor. So that's from the operational model. Going to the programming model, the way serverless works is you have a set of services. Some people like to call it function. Some people like to call it service. It's basically the same thing. If you're coming from an AWS Lambda, they they call it function. Even Azure has multiple offerings. The Azure Container Instances and Azure Functions. The Azure Functions would call the service as a function. Whereas containers, it's probably called just as container. But essentially, a service is a computational unit. And services communicate with each other via events. So you have an event of an architecture. So the events, they basically go and talk to the service service response to those events. And as an event comes, if the service basically is not operational, it will wake up. So if it's scaled down to zero and an event come, it basically will wake up. It will process the event and return the result if it has to. And then scale down back to zero. When it's zero, you don't pay for anything because it's zero. There are no instances running. And if there are a lot of events coming up and a single service cannot handle, it automatically scales up. So that's how the auto-scaling works. It's an event given platform. And the third, which is pretty characteristic of serverless containers, which is the domain I'm actually talking about, is that it's open. You're not having any kind of vendor lock-in. Now, typically in the serverless model, this is actually a common criticism that you have a vendor lock-in. And the reason is that when your infrastructure is handled by the vendor, you're dependent on vendor for everything. And not when vendors don't have identical offerings. They are similar, but they don't have identical. The way AWS Lambda would work is somewhat different from, say, Azure Functions would work. It's somewhat different from Google Cloud Functions. So there is an inherent vendor lock-in that you have when you use a typical serverless. But here, we are talking about more of an open. And I'll explain why this is open and why there is no vendor lock-in. Now, before I go into the explanation, let me just take a step back and talk about containers.  That's not really a virtual machine. It's a stripped-down virtual machine. And the beauty of containers is that you could, there's a container for like, there's an extensive base images. So there's a container for just about programming language, any binary, any library. In my demo, I'll actually show a little bit. But you can really pack your computational unit into this container and deploy it anywhere. And containers are, the Docker containers are basically an industry standard. So no matter which cloud vendor you go to, or in your own local on-premise system, containers are supported. And that is the reason why this particular model that I'm talking about is open in the sense that it's based on containers. So your services, it's serverless container. So your services are packed up in containers. And these containers are open in the sense they are vendor agnostic. And you can deploy in any cloud or any, you know, on-premise infrastructure. Now, there's another reason why containers are very popular. And the reason is that it packs the whole, your functional business logic, as well as the runtime environment into a single unit. Now, your code is running on some environment, right? And there are often differences in environment and the code might behave differently. And that's a problem in the sense that you develop your code, you test it locally, everything works fine, great, yes. And then I deploy it to the cloud and suddenly things start falling apart. And I have no idea what happened. Well, what happened was the environment where I was testing was different from the environment where I'm running. So due to the difference in environments, the code behaves differently. These are very problematic situations. The good thing about containers is that environment is packed with your code. So the way system behaves on my local machine is the way it's going to behave anywhere I run. Because the entire runtime, all the base libraries and all the dependencies, everything is packed in one unit. Containers are kind of like I mentioned before, industry standard. You could see the Google trend, the way it's going and yeah, it's practically used everywhere. When we have talked about containers, we have talked about deployment. The question is how do we deploy containers, right? So we have these units of computation containers that we can pack our service, right? How are these services orchestrated? And that's a whole separate problem. Now, there are several solutions, open source, commercial, whatever that deal with this. So the one which is by far the most popular is Kubernetes. So Kubernetes is an open source project, which has like, you could see the stats, how many contributions, how many users. If this slide is a little bit old, so I would expect these numbers to go up. It's just about pervasive everybody, not everybody, but most of the people who use Kubernetes is by far the most open container orchestration system. There are other orchestration also. There's Docker, Swarm, there's Mesosphere, which is like competing. I think Mesosphere came from Twitter. So they had their internal system and then I don't know if they open sourced it or they reinvented it. So Mesosphere is something that came from Twitter. And I think the guy who built Mesosphere then started his own company. Then there is Docker, Swarm, and Kubernetes comes from Google. In fact, Google has its own internal container orchestration system called Borg. And Kubernetes is an open source version, although it does not share the same code base as Borg. Borg is written in C++ Kubernetes, is written ground up in Golang. All the Google proprietary information was basically removed. So Kubernetes is completely open source and I think now it's handled by CFCF. So what Kubernetes basically does is it's a descriptive system. It lets you describe the state of your infrastructure. And when you're running services at scale, things happen that are beyond your control. I mean, machines crash, outages happen and so on. So essentially what Kubernetes does is you describe your ideal state of the system and Kubernetes will try to maintain that state. So every time there's a deviation for any reason whatsoever, maybe an outage happened or some container crash, it basically will shut it down and it will restart another container. So it's managing all those containers that is kind of orchestrating. Think of it as an operating system for data center. That's the right way.   But basically what Kubernetes is is kind of a platform for orchestration. Now Kubernetes is a platform. So it's a great point to start and build other platforms but it's a very open system. It's probably never, people don't use Kubernetes as it is. They usually have a layer on top of Kubernetes. So it's people describe Kubernetes as a platform to build platform. So it's never an end code, but it's a great starting point to start. And then you can extend it. It has an open source API. So you can just extend it anywhere you want. And one such extension is Knative. Now Knative is basically what Knative is, is an open source. It's a completely open source project that lets you provide all the buildings for serverless. So it's a Kubernetes based serverless programming model. And I'll go into the stack and details what are different components of Knative, but that's what it is. Primarily Knative has two components. The early versions of Knative prior to 0.08 versions, they actually had three components, serving, eventing and build. Build has since then been deprecated and has moved to its own project called Tecton. I'll briefly talk about Tecton and Build. I won't cover too much because they're not really part of Knative. But these are the primary components. And what Knative is giving you is all the ingredients you need for serverless computing. Knative itself was developed by a consortium of leading companies, Google, Pivotal, Red Hat, Uber, SAP. You can see the names. And that's the website, knative.dev. I'll probably go to the website at some point later on. But Knative is a completely open source system. So it implements all the learnings from all these industry giants. Very briefly, what serving is, serving is how you basically run your container. So all the aspects of auto scaling, routing, everything is handled by serving. It's serving a request. That's where the serving name is coming. Eventing is the event framework. So remember I said, in serverless computing, these services or containers stop with each other through events. So the framework for how you would capture the channels, the broker, all that framework is done with eventing. So we'll look at eventing a little bit also. And Build was essentially, prior to Point 8, Build was how you deploy your source code into these containers and deploy it on a cluster. That has now been taken over by Tecton. So we'll talk about Tecton. But let's actually look at Knative from an operator point of view. So Knative essentially, like I mentioned, is a platform that runs on top of Kubernetes. So Knative abstracts out all the operational complexity and it's just smooth infrastructure. Kubernetes is basically universally supported by all cloud major vendors. So Google has Google Kubernetes Engine. Azure has AKS, Azure's Kubernetes service. And I think AWS calls it EPS, elastic Kubernetes service. And then you have Kubernetes, which is open source. So you can deploy it on your own cluster, right? And like I said, it's a platform for building platforms. It's very extensible. It has an open source API. You can actually go and look at on GitHub page, the entire Kubernetes source code is available. So that's the operator point of view for Knative, which isn't really that interesting because the part that is interesting is the developer point of view. So let's look at the developer point here. So as developers, what we want is we want to write code. We want to build our systems. We don't want to handle infrastructure. I don't want to do any kind of deployment, monitoring, logging. I don't want, I just want to write the code and I want something that automatically orchestrates and it works. That's the developer point of view. That's what Knative brings on table. It's basically all the ingredients, all the boring parts that you need to do, they're all done for you. All you have to worry about is write your own code and everything else is taken care of. There's some part of demo depending on how much time I have. I can show some parts of Knative. Otherwise, I have the demo on GitHub, so I'll share the link regardless. So you can definitely play around in your spare time. So this is the Knative stack. Now, where Knative stack is, is it consists of the underlying platform, which is the Kubernetes, right? On top of Kubernetes is the service mesh. Istio is the default service mesh, although you can swap Istio with Blue or Ambassador. And then you have these primitives, serving and eventing and you probably have Tecdon separately. So that's the base. And on top of it, you have several commercial products or some open source products. So Red Hat provides OpenShift, IBM has Cloud Kubernetes, Cloud Run and Cloud Run for Anthos. So today, I'll basically be talking mostly about this, this and this. So this is the part that I'm actually going to cover today. Predominantly, my talk will be more on this side and a little bit on here. But of course, feel free to explore competing products also. They're also all great. So, yeah. So what are the benefits of Knative service? So let's talk about serving now. What are the benefits? Well, serverless provides you automatic scaling. So one great thing about Knative is it seamlessly scales up and down. The second thing, and again, depending on the time I could show some parts and demo, it has a bit in traffic splitting. So every time you deploy a new service, you create what is called as a revision, which is a point in time snapshot of your code. And then you have multiple revisions, kind of follows the immutable infrastructure paradigm. So you have multiple revisions. And you could also traffic split. You can say, okay, 10% of my request should go to the first division, 90% should go to second. Why is this important? This is important because of you want like a gradual deployment, right? If there's a bug or some problem with your traffic, you don't want 100% traffic to be deployed to the new code. So you could say, okay, let me start with 10, 90, make it 20, 18, and gradually, gradually, gradually, it became the whole code. So that's why building traffic splitting is very important. It integrates with network and service mesh. We already saw service mesh obviously is the underlying layer. It's transparent to you. So you don't really have to deal with service mesh, right? It's automatically done for you, just know that it exists. And it's easy to reason about an object model, right? So you can see services as different objects. And the whole Knative, when I look back at this slide, when you think about it, it's basically not one system, but a set of loosely coupled components. And you can mix and match these components in any way you want. So I can say, I want the serving, but I don't want the event. I want to use my own event framework. Or I want the serving and eventing, but I don't want to use this too. I can have something else in its place. So you have all the flexibility to pick the components you want. That's the way system is architected, right? It's loosely set, coupled components. You don't even have to have, you can have a serving version one and eventing version two. They don't really have to be of the same version. So it's a pluggable system. Autoscaler can be tuned in and out. I will show on the demo where this happens. And again, the subject to time available, I can give a demo on how Autoscaler can be tuned in. Now let's get back to events. So we've talked about the basic computation, units of computation serving. Now we are talking about eventing, right? So events, you basically have events, event-driven services, event-driven architecture. The system responds to an event. And what eventing framework does is it has a set of producers and it has a set of services. And if you go to Knative website, and hopefully I can probably try to do that. Knative, knative.tip, I would probably zoom this a little bit just to make sure. And you have this Knative website. So it talks about serving, eventing, and a whole bunch of things. You can go to the documentation. And it talks about installing, cluster, serving, eventing components. And you could see, I think somewhere here, you have whole sets of what kind of events and events registry and what kind of event producers are basically supporting event sources. Okay, that's what I was looking for. So you have different kinds of event sources like Apache Camel, Kafka, being a very popular open source. Okay, you can have like GitHub web book. So you can have GitHub workflows. Obviously you have commercial cloud offerings like AWS, Google. So you don't really have to use Google to use Knative. FII, it's a completely open source project, right? So there are different event bindings that you have. You can even go multi-cloud FII. And you can have custom event pipelines. So build, prior to point eight, we had a build component. Now we have moved to tecton. Build stuff is basically deprecated. So in the interest of time, I would not be talking about it, but essentially what it was was how to go from source code to container images on the repository. That's what essentially build was. And what it is replaced by is tecton, right? Which is an open API spec for CI CD pipelines. This itself is open source. So you can actually look at the source code and documentation and everything very briefly. The concept of tecton and tecton itself is based on Kubernetes FII. Tecton basically says that imagine if you have a traditional CI CD system like say Jenkins, so you have a master and you have some n number of slaves. The problem here is that your n is kind of fixed. Of course, you can scale up and scale down, but you have to do it manually. It's not that automatically. In the old system, I think now this kind of support some kind of automated scaling. And you are always paying for n agents, even if you're not using. So since Kubernetes and serverless, we are moving to pay as you go model, tecton kind of takes that philosophy and say, I have a master, but I don't want fixed n number of slaves. What I want is every time I need to process, I just create a slave, do the processing, and I'm done. So it handles all the up and down scaling for you. Of course, it's open source. It's configurable. You can have at least I want one slave. I want n number of slaves, all the settings you can do. But that's what it's doing. It's taking that pay as you go philosophy of serverless and bringing it to the traditional CI CD tools like Jenkins or TeamCity or whatever. So what is Knative's value here? Knative is this one step deploy, it auto scales, it manages all your workloads, all that aspect. So that's what Knative really is offering. So now we talk about Cloud Run. If you look at the stack that I was talking about, so this is Cloud Run and Cloud Run for Anthos. It used to be called Cloud Run for GKE. Now they renamed it to Cloud Run for Anthos. So this is the part that is built on top now. The slide is slightly incorrect and I'll explain why it's slightly incorrect. It gives you the impression that this actually uses this component, which is technically not true because internally it's implemented in a different way. But yeah, let's get back to Cloud Run. Cloud Run is in a nutshell, it is a managed Knative offering. So in Knative, everything is done for you but you still have a cluster that you have to manage. That cluster is not automatically managed. It assumes you have a Kubernetes cluster that you have full control over. So your responsibility for containers is that I'm going to do the serverless workload on top of this cluster. Problem A, we talk about serverless. I don't want to handle the infrastructure but now you're giving me the headache of maintaining a cluster. That's problem number one. Problem number two, I still have a cluster that I'm paying for even if I'm not using. What I would want to have is a completely serverless offering where I just don't want to do anything. I don't want to handle the cluster. I don't want to pay for the cluster if I'm not using and that is what Cloud Run basically brings. It is a managed Knative offer. And there are actually two set of products on Cloud Run. So there is Cloud Run and then there is Cloud Run for Anthos. It used to be called Cloud Run for GP. Cloud Run, so I mentioned about work, right? Google's internal container orchestration system. Cloud Run runs on work. So it's the internal one. You don't really have access to the clusters. You don't have to manage the cluster. You only pay for what you use. Of course, you don't have to manage it. You don't get to manage it. So even if you want to find you nor optimize, you can't do that. That's the downside of everything being automated. Cloud Run for Anthos on the other hand assumes that you have a GKE cluster and I'm going to run on top of it. Now, why would you want to have two separate products? Why can't I just have everything fully managed or everything in cluster? Turns out that GKE or in general Kubernetes, as I said, is a platform to do many things. So a lot of people would be using Kubernetes not just for serverless, but for n number of things. So they don't want that we have everything based on Kubernetes. And on top of it, you're giving me another system which is completely different. Let's say a fully managed one. So now I have to deal with two systems. What I want is I have this GKE cluster available to me and everything is done on top of it. So I want my serverless workloads to run on top of it. I don't want to deal with two separate systems. So for people who already are running their workloads in some capacity on GKE, you would probably want to go for Cloud Run for Anthos. So I'm going to run on top of GKE. And people who don't have GKE or who don't want to maintain any cluster would go on the other side and go for a fully managed Cloud Run offer. So that's why there are actually two servers. In fact, now when we count, there are actually three. So there's Cloud Run, there's Cloud Run for Anthos and there's Cloud Run fully managed. And the interesting aspect of it is that the API, so when you look at K&A, K&A is a product, but K&A is also an API. And I'll show in my demo that it's a reference API for all of these products. So I can have my workload running on-prem on Knative. I can move that workload to Cloud Run seamlessly. I can just have a hybrid Cloud where part of it is running on-prem and part of it is running on Cloud. And that is the ability that this gives you. This gives you a platform, a basically a way to do hybrid Cloud or multi-vendor Cloud. I can have part of my services running on Azure, part of my service running on Google, Carder, Riser, AWS and on-prem. And not only do I have all of these systems coherently behaving with each other, I can move my workload between any vendor or any platform without changing a single line of code. That's the beauty of it. So it's portability based on Knative, right? So Knative provides you with the API and runtime environments that you can run serverless on-prem, on Cloud, on Google Cloud, on Microsoft Cloud, on Amazon Cloud, on IBM Cloud, whatever Cloud you're running doesn't matter. So what Cloud Run basically gives you is it gives you an ability for container to production in seconds, one experience wherever you want. We talked about hybrid Cloud and natively serverless. Now, here I'm actually going to go into a demo. And yeah, okay. So it's mostly demo. Now I have about 28 minutes. So I can show you the part. So let's actually switch to a demo. So here what I have is I have already set up. This was that this you could ignore because I was basically laying around with the demo and testing the demo, but let's actually go to Cloud Run. So this is the Cloud Run. I have my GCP project. And what I'm going to do is I'm actually going to deploy a service. So this was the earlier service that I would just simply delete because I deployed it earlier. So that's all worry about that. And in my demo, I have an example. And there was a reason why I picked up this example. I have an example of an online service that takes a Microsoft Word doc and converts it into PDF. This is actually a real use case. Some customer wanted an invoice billing. And the reason why I picked up this example is because you cannot do this on any kind of cloud where you just have to upload. You can't do it on AWS. Upload your code. You can't do it on AWS. Lambda, you can't do it on GCF. You can't do it on Azure Functions. Because containers give you the ability to deploy a binary. Lambda or GCF or Azure Functions would not do that. You can deploy your code, but you can't deploy your binary. So let's actually look at the Docker container. So that's the container definition. Docker container. I take a Python Alpine. I have an app that is running and using this Python Flask framework. You don't have to go into details of the framework, but it's a very simple one. But the part I want you to focus on is this. And here, what I'm doing is I'm building this Docker and I'm adding LibreOffice, which is like open office with Microsoft Forms. So I have this binary installed here. And this binary is installed on this container. And then I'm going to deploy this container. Now, let me look at the code. So this is standard Python code. Much of it is standard. I am starting a server. So this is where I'm starting a server. I am going to, essentially, I'm going to give it an input. That is my doc file that is going to be uploaded and some housekeeping stuff, depending on what kind of request. This is the part that I want to focus. So, essentially, it will call the binary, the open office binary, and it will convert to PDF and then give it back, okay? So this is a simple demo. Now let's actually go and do that. And do that.  I will remember what I mentioned. I can build the container. I can, I'm going to use a cloud service, Google cloud service for that, but it doesn't happen. You could build it local. So I'm going to say gcloud, sorry, gcloud. This is just a remote building service. I could have built it local. That's not a problem. So I'm going to tag my Docker to my registry, gcr, Google container registry. My project name, which is basically here, cloud run demo, cloud run demo, and that's all it's a long name. Just want to make sure everything is correct. Google gcloud will submit, I'm putting a tag gcr, my project name, cloud run demo, and my image name, okay? So I'm starting this, why are you, okay. I dispel the tag. I actually said, tar, it should be tagged and it did tell me that you're doing something wrong. So, okay. Now I'm building the container. And this is the container that I'm actually building using the remote service. I could have built it locally. And once this container is going to be built, it's actually going to go to my container registry. And then I can take this container and deploy it anywhere I want, in any cloud or any local premise, because like I mentioned, container is an industry standard. Now, it's building this as layers and it actually takes a rather long time to build. And the reason why it takes a rather long time to build, usually it doesn't, but in this particular case, the problem is that I have this entire think of it as Microsoft Office for Linux that I'm actually installing on the Docker. So it's doing all of that. That is what would take time. So I think I'll just wait for 60 seconds. If it does in 60 seconds, I don't know, otherwise I'll just move on. And okay, it did. Okay, it did pretty fast, which is good because I had some stuff cached out. So that's why I was able to do it. And then once it's built it, it would tag it and tag means it will upload it to a registry. And this is my container registry here. Okay, so I go to my registry. Where is it? Yeah, container registry. So these are all my container registry events and you would see down here. Now I did build this before, about 15, 20 minutes before, one hour before. I mean, I was just testing my demo to just make sure everything works. So this is actually an image that is right now one hour ago uploaded to the container. And as we are building this in couple of minutes, this, there will be a new image that will be deployed here. Now, I would, in the interest of time, I'll just let it build, but I'm not actually going to wait for it to build. I'll show if I can deploy this. So I'm going to go to cloud run. And I'm going to say, I want to create a service. So I'm going to create a service. I just pick a region. I can just pick the USI. That's fine, doesn't matter. So this is the fully managed and this is my GKE cluster. If I pick a GKE cluster, I have to either create a cluster or something. I don't have a cluster right now. So I'll just use a fully managed one. I just call the service. I'm just going to call it Agile India. Okay. Allow in unauthenticated invocation. Do you want anyone to cloud? Do you want some kind of security built in? It uses a cloud IAM, which is identity and authentication management, but let's just say I'm allowing anybody to connect. So I'm not worried about that security right now. So it says now deploy from one revision of the existing container or continuously deploy from source repository. So if you have a repository, just every time you push a new image, we deploy it. I am just going to do it one time. So it says demo containers. And this is the container that I built one hour ago because the one I'm building right now, it's still building. It takes time. We are just installing an entire office there. So I've selected this and I'm going to say create. So now it's deploying my service. So here it is. Let me go down a little bit. Let me move here. It talks about a service account that is created. So it's handling all the security automatically, container, the street variables. And this is the part that I wanted to show. And what is this YAML? Remember, I said the API for all the products is same. All right. So it's still using the Knative API. This is the YAML that is the actual Knative YAML. Okay. Which means I can cut this. I won't have time to do this, but I can actually cut and create a new file and paste here. And then I can call a kubectl command on an existing Knative cluster. And it would deploy this service that I'm right now deployed. It's already deployed on the cloud on your home premise. And this is the part that is a killing feature in today's cloud computing that people want hybrid computing. I want, I have a service. I want to run it locally. I want to run it on cloud. I want to run it on my on premise and I can move it anywhere I want. So right now the service is done. Okay. And that's the endpoint. Okay. So this is the endpoint. This is a service I've built. And it says it's a convert doc to PDF. So I'm going to open up my Microsoft Word file. I'm just going to create a, yeah, something wrong with my MS Word in this one, but I'm doing there. Hello, India. How are you doing? Put some random text, you know, the matter to mount a little bit. 36. I'll do this to 36. Okay. So something like this. And I'm going to save this file. And let me just call this on my desktop. I'm going to save. I'm going to save some, okay. I take this test file and I save this test file. I shut it down. I go here. I say, I want to convert this file. And it takes it uploads. So it now takes it to that MS Word, the open office binary. It is feeding that file and saying convert it to PDF. And you would have a PDF file very soon. And there it is. So now let me download this PDF file. I'm going to download it to, let me just download it to desktop only. And you would see that this download PDF file has appeared. That's the file. It just converted from MS Word. So this is a cloud service that literally right now, anybody in the world can go to calling this URL. Of course, you can buy your own custom URL domain and map the IP and you can do also function service. But what you have is like a service that was deployed in minutes, right? So that's the service and that's the API that you can use if you want to deploy it on another cloud, wherever you have a Kubernetes cluster. And there are logs, there are revisions. So right now we only have one revision every, like I mentioned, every time you deploy, you create another revision. So when I deploy the second time, it will create a new revision. These are logs that you can get. And there are some statistics that you can show. So right now, right now, because we just called the service, the service is running, but if I don't use the service, it'll actually shut down because that's what the serverless is. So from logs, right now it's running, so you won't see anything. But if you check back this link later on, you will see that this all will be shut down because, you know, metrics, okay. Yeah, because it's a serverless computing. If I don't have a request, I don't. I can actually look at, the stats takes a little bit of time, it takes a couple of hours, one hour at least to show. So right now I'm not showing you because I just deployed it here, but if you look at it over the policy, you can create, see how many requests you're getting, and you can get all sorts of logs. Now, meanwhile, this is deployed. So let's go back to our container registry, okay. I don't have a lot of time left. How much time do I have left? Okay, I have about five more minutes. So let me just go back. To my container registry. And okay, let's go in and see, I just deployed a new image. Let me zoom in a little bit. I just deployed a new image two minutes ago. This was the one I just deployed that was old. But this one is the one that I just built. This is the new image. And what I can do now is I can, so I deployed it using a UI, I can actually deploy using gcloud, beta, run, cloud, then you deploy image. I know what my image is, the image is this one. This is my image. Okay, I'll just copy. It's time, image. Deploy, beta, then deploy. So it's asking me the same set of push-ins, where do we want to deploy, fully managed. My project is already set up, because it's going to create with area. So that one I deployed in US, this one, let me deploy nations. It's going somewhere near India. I don't know where Asia or East Asia is, but somewhere there. Do I want another? Absolutely, I want that. And it's deploying it. So now it gets deployed. Just FII while it's going deployed, it's going to take a couple of times. I encourage you to look at Knative website. This demo, I've actually open sourced it. So let me show you the link. This particular demo is present here. So if you go to Cloud Run demo, I don't know if you could see the link, but I'll have this copied here. It would be on my slides anyway, but yeah. So this is the link. If you want to play with your demo on your spare time, please, you're welcome to. And I'll show you another one. I will not have time to show Knative, because what I wanted to show was how I can take this workload that I deployed on cloud, and I moved it on prem. But I would not have time, but I can definitely walk through a few things. So this is the Knative demo. So again, it's open source, so it's free to play around with it. That's the link. I'll include the link in the slides. And I have few minutes remaining, so I'll just walk through the demo very quickly, and then I'll take the question. So it's like a cell setting. You can set up your own cluster. It gives you all the instructions on how there are scripts that install the serving component, eventing component. These are all scripts, so you can actually look at this and see the code, and it's actually cube cut will apply, eventing latest release, with a release at 18.01 version. It's probably what the latest is. Yeah, so you build this, and then you can have all sorts of... Let's look at traffic splitting. So we talked about traffic splitting, right? So I can actually create something like multiple versions. So I can have multiple versions, so you have multiple revisions. Hello, World V4. I know World V1. And I can say I want to have route to 50% traffic on the first one, 50% traffic on the second one. And then if I run it multiple times, you will see statistically, if you run it long enough time, you should see 50% of the time V1 has been called, and 50% of the time V4 has been called. This is a demo called Cloud, and I kind of almost showed it. So I won't go into it. Meanwhile, this is now deployed, and this is deployed. So let me go back to my cloud, and let me... So I've seen the container registry. I am now going to go back to Cloud Run. I'm going to look at... It actually created another service. So that one I named at Agile India, this one I created, and this one, and see it's Asia East and this one. I could have actually created another revision for it, but you could have seen... Had I done that, you would have seen another revision here. Right now, there is only one revision. Anyway, let me just go past. I have about five-ish minutes. So I'll just talk for two more minutes and then I'll take questions. Yeah, so demo. So we can see the same thing for eventing. So you have a service. You have a broker. Think of it as something like Kafka, and you have a trigger. You can subscribe and vote. So if you go through this demo, you would see that you can run the pods and you can install the brokers, and then you can have some kind of trigger mechanism, and then you have another service called... Which all it does is it says hello from Canadian. So it puts this message hello from Canadian somewhere here. Yeah, this is it. This is the message hello from Canadian. And you would see this event triggering. So this would go to this broker, this and this service, which we deployed as part of this. The trigger will actually invocate this because this subscribe and send the message to the service. Service gets invocated, and it will respond. So complex delivery with reply, you can have different kind of channels. So those familiar with Kafka already would know a concept of topics. Sometimes you want to multiply first. I want this event to not just put one service, but a number of service, all the services that are interested in a certain topics. So what you have is you have multiple channels. I'm going to send an event to a channel, and multiple services have taken a subscription. And anybody who has a subscription can just listen to that event.  You would see in the logs how creative and you say hello from Korn. This is your producer, and this is your consumer. You have reply. Like I said, it's a big demo. I definitely don't have time to show. But feel free to explore on the link is there. It's all open source, and you have all sorts of funky things with how you can integrate it with Vision API, how you can integrate it with your voice. So basically in this demo, I think you put an image of a cat and dog, and it identifies what it is. So translation, you can build translation, hello world, English to Spanish. You could do all sorts of things. And there are good examples that this and last, but not the least, I would encourage you to go back to Knative. It's completely open source. This is the GitHub repository. Eventing and serving are the two main repositories, but it has a whole bunch of them. So you could explore. Yeah, we have reached the end of allocated time, but you can take another few minutes, probably. Yeah, I'll move the questions brief, but if somebody has want to talk more, feel free to contact them. What is my view on open source serverless tools? It's hard to answer because there is no one tool.  So your question is more specific. What is my view on a particular serverless tool open fast? I think open fast in general is a pretty interesting, pretty interesting paradigm. To my understanding, open fast comes from IBM, but I could be wrong.  I'm personally a big fan of Kubernetes. You know, I want everything Kubernetes-based, and I'm not sure if open fast is so much of Kubernetes space. I've never used open fast. So I don't actually know really what it is. To my understanding, it was basically IBM kind of open source. Yeah, so I don't know much about open fast. Thanks, Nikhil. That was a wonderful session. Thank you so much. Thank you.


Okay, so let's work through some examples. Firstly, we'll practice writing equilibrium expressions for reactions. So let's take the first one here, the reaction between hydrogen and carbon monoxide to give methanol. Remember that the expression involves products overreactions, reactants, sorry, and that the concentrations must be raised to the power of the stoichiometric coefficient. So this is going to look like KEQ equals... Our only product is methanol, so the concentration of methanol over the concentration of hydrogen times the concentration of carbon monoxide. And then you can see that hydrogen has a stoichiometric coefficient of 2, so we raise its concentration to the power of 2, it's squared, and the others have stoichiometric coefficients of 1, so they stay the same. So that is the equilibrium expression for that particular reaction. Note that because all the species in this particular reaction are gases, we could also write an expression for Kp, in which case we would use the pressures of each gas. Alright, now let's take the next one, sodium chloride dissolving. Now, equilibria can be physical as well as chemical, so in this case we've got something dissolving rather than an actual chemical reaction taking place. We're going to be looking more closely at dissolution equilibria in lessons to come. For now though, there's something important that you need to know. Because in equilibria what we're interested in is changes in concentration or pressure, we can ignore reactants or products that are in the solid phase or the pure liquid phase. So they do not appear in the equilibrium expression. The reason is that while the amount of a solid might change, its concentration, the number of molecules in a given volume remains constant. It's only when a substance is dissolved in a solvent, or when its particles are far apart like in a gas, that it's possible to change its concentration. When it's in a solid or a liquid form, the particles are essentially as close together as they can get. So as long as that reactant or product stays pure, its concentration doesn't change. So when sodium chloride dissolves, we ignore the solid reactant here, and we write the expression like this. It's going to be products over reactants. So our products are sodium ions, so we want the concentration of the sodium ion and the concentration of the chloride ion. Both of those are aqueous remember, that means they're dissolved in water, so they do have concentrations. And normally we would then put this over the concentration of the reactant, but in this case our reactant is solid, so we just ignore it. Actually what happens is that the unchanging concentration of that solid reactant is sort of subsumed into the value of keq, and it's taken into account in that way. Similarly in this reaction here where we have calcium carbonate solid decomposing into calcium oxide and carbon dioxide gas, two of our species here are solids. So our equilibrium expression is going to be quite simple. We ignore the calcium carbonate, we ignore the calcium oxide. The carbon dioxide is our only product, so that's our equilibrium expression for this particular reaction. And it even has a stoichiometric coefficient of 1, so we don't even have to raise it to any power. So for this particular reaction we have the unusual situation where the equilibrium constant is exactly equal to the concentration of one of the products.


Namaste. I, Dr. Mrs. Preeti Sunil Joshi, Assistant Professor from Department of Humanities and Sciences, Balchan Institute of Technology, Solapur. I welcome you in the session in which we are going to study the different characteristic properties of laser. The learning outcomes of this session are, by the end of this session the students will be able to know the differences between ordinary light and laser light and also understand the characteristic properties of laser. The contents include characteristic properties of laser. Laser and light are the two terms that are frequently used in physics. Generally light and lasers are considered as travelling photons. Laser is acronym for light amplification through stimulated emission of radiation. Students in the previous videos we have seen the three different processes that are required for the operation of laser. So we know what is stimulated emission. Let us revise some points. Stimulated emission is called stimulated as it occurs due to the stimulated photon. Due to the external photon, this type of emission takes place. Then the meaning of radiation is the transfer of energy that is from higher level to lower level or it can be from lower level to higher level. But here as the emission takes place, the energy transfer is from higher level to lower level. So in stimulated emission due to the incident photon, emission takes place and that results in the amplification of light. For one incident photon, we are getting two photons which are exactly identical with the incident photon in phase, direction, intensity in all its aspects. It is identical with the incident photon. However, laser is not a simple amplifier of light but it is a generator of light. Laser is an artificial source that differs vastly from the traditional light sources. Students, you might have seen the laser light in different places. So please pause the video and try to write down the differences that you have observed between ordinary light and laser light. So laser light is differentiated from ordinary light by four characteristics. High directionality, high monochromaticity, high coherence and high intensity. These different properties are used for different applications. So let us first know these properties one by one in detail. The first important property of laser is directionality. When you switch on a torch, the light is emitted in all directions. Similarly, the light from all conventional sources like the electric bulb, lamp dispenses in all possible directions. So this property of light to spread in all directions is called divergence. However, contrary to conventional sources of light, lasers emit light only in one direction. This property of laser to give off light in only one direction is called directionality. The photons are emitted when an excited electron comes back to the ground state. All minions of photon are emitted in the same direction and appear in the form of a beam of laser. Consider a powerful search light in a lighthouse that is used in a dark night. The beam of this light can reach out to as far as 1 kilometer from the place of its source and spread to a diameter of about 1 kilometer in front of it. The laser on the other hand has the ability to focus the same amount of light into a diameter of just 1 centimeter as shown in the figure. This is the power of directionality of laser beams. It is highly concentrated light and this property of laser that is directionality is very useful for focusing light in the required direction during many applications. Now let us know what is monochromaticity. This is another important property of laser light. Monochromaticity is the term that refers to one color which has same wavelength and with high intensity of light. Light light is a combination of all colors. It consists of many frequencies and thus corresponding spreadings and scatterings. Now consider a sodium lamp that emits light in a single color. The sodium lamp is most common example of monochromatic light as it emits light of only one wavelength that is measured in lambda. The wavelength is 5893 angstrom in it and its intensity is also very high. Laser in general generates the light in a very narrow band around a single central wavelength. The generation of laser is such that the laser cavity forms a resonant system and laser oscillation is sustained only at the resonant frequencies of the cavity. This leads to the further narrowing of the laser line width. So the laser light is usually very pure in wavelength and hence we say that the laser has the property of monochromaticity. Actually the degree of monochromaticity can be quantitatively described in terms of wavelength bandwidth or frequency bandwidth. The range of frequency of wavelength of the maximum intensity is called as bandwidth. The narrower in the line width, higher degree of monochromaticity of the laser has and large amount of energy can be concentrated even in small bandwidth due to high monochromaticity of light. Now let us see the third important property of laser that is coherence. We all know that how the light is emitted from the ordinary light source. In an atom when the electrons are in excited state they jump from higher state to ground state that is known as transition. In ordinary light sources the electronic transition takes place randomly but when the light waves are received from ordinary light source their wavelength has no definite shape in space and as well as in time and hence these light sources are said to be as incoherent. On the other hand in case of laser light the electronic transition takes place in an orderly way and their wavelength has consistent phase with time which is called as coherence. In case of laser a large number of identical photons are emitted through stimulated emissions and therefore they will be in phase with each other and hence the resultant light exhibits a high degree of coherence. Now the another property of laser is high intensity. Intensity of a wave is defined as energy per unit time flowing through a unit normal area. The ordinary light spreads uniformly in all directions and forms a spherical wave front around it whereas in laser light energy is concentrated in small regions of space with small wavelength but with greater intensity. Let us consider an example when we see at 100 watts lamp filament from a distance of about 30 centimeter then less than 1000th of a watt of the power enters into our eyes. In case of laser when we see along beam of laser all the power of light enters into our eyes and in this case even 1 watt laser would appear 1000 times more than 100 watts of ordinary lamp. So let us come to the conclusion of this session. So in this session we have seen that laser is an extraordinary light that is emitted under stimulated and amplified conditions so that the beam is characterized by high intensity, specific directionality, high monochromaticity and with high degree of coherence. Now please pause the video and try to solve these multiple choice questions. Check for the correct answers. Thank you.


Some of you are at the beginning of recovery from something. You're recovering from a life-controlling habit, you're recovering from an addiction, you're recovering from something in your life that has been damaging and harmful and you now decided I'm going to set a path to get away from this and it's the early stages of your recovery from something and it's difficult and fragile and unstable. You need to be careful that you do not despise the beginnings that you are in of any kind because if you despise beginnings you lose the value of what is hidden in a beginning.