 All right guys, we're live Let's get started Okay, well good morning everyone and thank you so much for coming to cloud native apps with server-side web assembly My name is Liam Randall and I have been in technology for a long time. I'm a serial entrepreneur and investor I've focused primarily in the open-source space. I did a brozeek and then OS query I did an early Kubernetes company called critical stack that I sold to capital one and for the last few years I've been obsessed with web assembly and its implications for the cloud I'm a hectic man on Twitter. I'm on all the slacks and try to be very accessible So if you want to follow up with me afterwards, don't hesitate for a moment to ping me directly So we're gonna start with just a quick little summary of what web assembly is This talk is not designed to teach you all about the details of web assembly instead We're gonna talk about how you can use web assembly on server-side applications But we do want to summarize to make sure we bring along as many people as possible with us along for the journey So web assembly is a little bit like some things that people have tried before Strike stop me if this sounds familiar. You can write your apps once and run them anywhere Of course, you've heard that Java silver light flash. This promise has been made many times But this time it's different with web assembly. We have an open WC3 standard That's already supported on the devices you already use in love all of your major browser vendors It's incredibly efficient and fast and it's poly got like it's not like Java It doesn't come with its own programming language It allows you to take code that you have and then recompile it down to this intermediate format It runs everywhere and what's powerful about web assembly is is that these little engines? These wasm runtimes can be tuned for different circumstances So for example, you might want to have your code running on big silicon in the cloud And you can have a web assembly runtime like wasm time that's tuned for that or perhaps you want to do some Just in time compiling or ahead of time compiling out on the edge And you want to use it a runtime that's tuned for low power or low memory You can still use the same code and port them to both So this is a very portable technology and one of the most powerful things that we will talk about is that it's a very safe Technology, but I'm going to hold that value prop for a moment Let's talk about what we mean when we say cloud native. You know when we talk about cloud native We're really talking about this third epic in the last 25 or so and years of computing where 20 years ago even longer than that at this point 25 years ago people started to realize when they were building data centers that there was an opportunity to be more efficient and virtualization came out and that really was accelerated with the public cloud and The key move that happened there is that the security boundary moved from the box itself You know the the Dell server or the IBM server up to the CPU and there were a lot of crazy Implications in that and then a few years later We sort of entered the epic that we're in now with containers and people said God, you know I used to build these images and it would have you know raid controller Firmware in it and that was crazy and why am I doing this with my a software applications shipping entire operating systems So a virtualization layer of you know containers was put together and coupled with Kubernetes It's really come to dominate the landscape But we're gonna talk a little bit about how the technology technology we have today Does not meet the challenges that we have today and we're gonna do that by looking at the modern computing environment this picture of the world is really what is going to drive the next 20 years of change and we say that and I think that because Containers will work on much of this infrastructure when you think on the far left side of this image We have the central public cloud on on the far right We have the tiniest devices in your lives tiny watches refrigerators things like that There is a continuum where Kubernetes will work great It will continue to go out to the edge and containers can be brought there But there are an increasing number of cases that do not depend on Linux Nor will run Kubernetes and an easy one I'd point out is your web browser Which is probably one of the most common ways that you interact with software today Never mind all of these tiny devices lower power and memory constrained devices These are not these will not work and there is some lower bound where we can take today's technology So what are the problems? What are the additional problems that we have with today's technology? Yesterday we hosted the second cloud native web assembly day and my good friend Ralph Squatchy and I spelled his name wrong there. Sorry Ralph Actually quipped that in the new there is no edge in the new cloud and I think he's absolutely right I just had this article posted in the new stack last Monday But there are all these compelling reasons when if you want to sit and have the discussion on where will Compute live in the future, you know Will it all just live centrally on the far left side of that diagram in the public cloud and everything on the far right is Dumb and just makes API calls and I would argue absolutely not for at least these five reasons There are latency and determinant Deterministic reasons why you need to make decisions locally think like your Tesla you want real time There are privacy and security reasons why you would not want to ship personal data out of a particular environment There are times when you want liberate you're limited or deliberate autonomy think like drones or things that go offline Think of my refrigerator if it's disconnected from the public cloud it better still keep things cool Oftentimes on the edge is where the data is they give your nest doorbell. It doesn't ship all of that Data back to the central cloud It does pre-processing first to select key images that have faces and other things and then ships them back And regulatory reasons, you know GDPR CCPA Regulate regulation is an invest move right now We're gonna have far more regulation in the near future than we've ever had in our industry in the past And if we accept that the future of applications is distributed Then we also accept that there are some significant problems that we're going to have to deal with and we're gonna talk about these a Little bit, but the first one is a diverse set of system architectures The second one is is that the application architectures themselves will be different How many times are you using peer-to-peer technologies for example device-to-device that don't even transit the public cloud? System security. How do we how do we reuse this code and deploy it everywhere and keep it safe? Offline use and machine learning. There's a link to the article in the new stack If you'd like to read a couple page paper about or article about The further reasons there But let's walk through the three key challenges in today's computing environment that are driving the rise of web assembly The first is portability this diverse Execution environments that we need to be able to run in places where we have different CPUs different operating systems or even neither of those like the browser where we just sort of have an execution environment The second big reason is security across that new continuum of technology. How are we going to secure this and lock this down? Containers are scoped to a Linux process How do we take a security model that's scoped to a Linux process to places where we don't even have Linux or processes for that matter and The third big reason is the one we're going to spend the most time on because I think that this is the opportunity for the biggest innovation in technology period especially when coupled with web assembly and it's the tight coupling that we currently make between Applications and their libraries or capabilities that they use we'll tease that apart in a moment. Let's go through these one at a time So this first challenge is portability. We are on the way to 50 billion internet connected devices by 2030 That is a phenomenal number and Collectively this represents as much if not more computational power than we have in the cloud itself If this is the new cloud then we have a whole new set of challenges here But what I would emphasize is is that yes There's a story around arm and power PC and MIPS and all of the long tail of risk chips that you find out in today's ecosystem But this is also a problem in data centers. Think of the AMD Graviton 64 bit arm processors that they've launched When we build containers today, we make an implicit assumption and we target a specific CPU architecture So another case where containers don't fail and if you suddenly have to support Dozens or hundreds of different architectures having an intermediate format like web assembly is a huge win So for this first big challenge, I think it's clear web assembly brings a lot to the table and it's something that can be considered Let's go to the second big challenge. What about the security of these things? Now this idea of capability driven security is not new any of the Linux networking You know geeks in the audience have probably used, you know pseudo set cap before to give privileges to snort or shirikata Or bro or something to monitor network interface But it's the idea that the children no longer inherit the permissions of the parents and web assembly really embraces this capability-driven permissions in that if you want to access a file or a folder then you have to be Specifically granted to it web assembly is denied by default and you're becoming increasingly familiar with this Think five or ten years ago when you installed an application on your phone. It just installed today It actually prompts you on a line by line basis for access to the video camera to the microphone and the other capabilities That same model is coming to our cloud software and then we're gonna extend that so for this second big problem I think web assembly is another great fit It brings us a more it brings us a more portable more granular security model that runs everywhere That's feels like a win-win. It runs it near native speed So let's carry this forward a little bit. What about this third problem? You know and in French there's this wonderful word Elan and it's to translate it directly I think that means something like momentum, but it's so much more than that It's that moment right when the bird has got its wings flapped And it's about to take flight or when the dancer is spinning its leg faster and faster and faster and picking Momentum right that's the Elan and what what really I think is a big opportunity to ride this web assembly excitement Is to consider this tight coupling here because this tight coupling that we have acts as an anchor that holds us in place If you're building for a specific cloud provider and you're using specific cloud provider services Who cares how portable your code is if you're stuck in that particular location? So we've seen this rise of actor models in technologies like wasm cloud and in technologies like dapper We're instead of binding to specific libraries You bind to a contract and on the other side of that contract just like a Lego block you can plug in different capabilities So these are the capabilities that you would use to satisfy all sorts of things in your app if you're building An application to calculate loan interest or you're building some social media scoring or you know any kind of Business logic that you want to put into it You have to typically couple that with a large amount of Non-functional requirements in the enterprise that's gets extreme and you have to start coupling it with security and logging and other sorts of Tools and the dirty secret of enterprise application development Especially on the server side is is that the vast majority of the application? Code base is someone else's code It is nearly criminal that in today modern cloud native app development You start each new application with twenty thousand lines of someone else's code and there are some devastating impacts to that The private studies that I've seen in some enterprises was even higher as many as as much as 99% of their Templates some Java spring boot application was non-functional requirements that they were managing and those non-functional requirements Act as a weight that holds you in place there Now across this microservice life cycle when you accept all of those non-functional requirements You end up with some pretty devastating impacts The first is is that you have an inability to move things from design quickly out of POC into production Because there's completely different assumptions that are made that are non-functional The second is is that building your app means that you have a lot of boilerplate code that you have to manage and run Deploying this having to build pipelines for each different CPU architecture or each different device Becomes a long tail of non-functional requirements that you would just select I need one set of security Primitives for Android another for iOS yet another for my edge devices and yet another for my core cloud functioning and the last is by far the most devastating and if you've worked at an enterprise you're constantly hounded by these High-medium low vulnerabilities and that 20,000 lines of code that you need to patch and maintain and All of that holds you back from your core purpose of building and deploying business logic So this tight coupling that we see at the top layer Really becomes one of the biggest challenges that we're facing in modern cloud native development And with web assembly today and its adoption to meet the first two challenges There it comes a huge opportunity as well to solve for the third So I'm one of the co-creators of an open-source CNC a framework that's called wasm cloud And it's both compatible with but not dependent upon the current cloud native stack And we're going to look at a couple demonstrations of running things all together While also running for the edge and as I mentioned before this is not the only approach There's Microsoft has put out a wonderful application layer a tool that is Directly aligned to cloud native. It's a sort of depends on container In the ecosystem so it would meet the first left half of the cloud native world, but doesn't solve for the far right half here So in both of these models you essentially start to adopt this contractor of an approach Instead of importing all of this non-functional code You simply import a small contract and the goal of wasm cloud is to sort of flip those numbers on their head and make your applications 95% business logic and only 5% non-functional code Because on the other side of these Lego blocks these Contracts you can hot swap at runtime into different us actual requirements there so Now this isn't even a new idea It's a little different to start thinking from the top down to start at the business logic and work your way down But to me this is the next obvious step in The continued epics of technology and when you think about the landscape today We already have layers that are doing this for us just in a different domain for example on top of Kubernetes we could layer Istio and Istio would just remove some of the network related concerns such as Traffic routing and role-based access control and on top of that we could even use dapper which will give us this Application layer concerns like the key value store But wasm cloud takes it even further and really turns your business logic into these composable actors It's more of a shift and we couple it with both elixir on the back end for extreme scale and for and with gnats So you get a networking layer on the front end. So let's slide into our first demo Now this is an incredible demo that completely surprised me it came out of nowhere And I'm only going to give you the summary of this one because the full talk is definitely worth your time This was showed at wasm cloud. I'm sorry to a wasm day cloud native wasm day yesterday And this was a group called red badger and they did this on behalf of a large financial service and to help set the stage a little bit This organization had a number of service interruptions with some of the public cloud outages over the last year And they have their regulators asking them when can they go multi-cloud? So what they do in the demo the source code is linked right here if you want to go ahead and grab a quick link You can spin this up yourself, but I'll set up the scene a little bit further In this demo what we're going to have is we're going to have the same compiled code deployed to two Different clouds in this case AWS and GCP and you can see that we have a set of steps here and this basic Microservice that implements the to-do spec your common reference application that people will implement in a language for fun an example and What we're going to do is we kind of walk into this is We're going to start failing over live from one cloud to another as we delete parts of the application We'll just go a little chaos monkey on it. Now logically what's happening here is this view of the world in which case you have GCP on the left and you have AWS on the right and the NATS the CNCF NATS project Gives us a sort of application layer view that seamlessly connects these two environments So it does the auto-discovery and it does partitioning we'll talk a little bit about NATS in a moment And we'll start by just running things in the happy path We'll send we'll curl send a curl request into into GCP and they'll be resolved and then we'll send curl request into AWS and they'll be resolved and then we're going to Start deleting components and we'll watch the application still function normally without any changes whatsoever to the code And it happens because of that crisp separation between those two layers there Then we'll restore the happy path and and things will work here. So Kind of watch for a time on this and Hilarious I Can't see your screen So let me just Okay. Oh, there we go. Perfect Perfect dish Let me skip ahead here a little bit. This is the talk that we'll see tomorrow here and this is the little bit of setup that we're doing and then we're going to get to on the left here we've got Logically a set of windows just terminal setup just like in the pictures. So on the left We've got a GCP that wasm cloud demo and on the right. We've got AWS And as we start sending our simple curl commands in here We'll see that the application functions normally and delivers our code on both happy paths here And as we move into this demo We're going to start to see Us delete the pods down here at the bottom, which is what we're doing right now And the GCP path is now unhappy It doesn't have all the components in the microservice to complete it But the sort of the technology here is going to auto fail right over to AWS and as we watch the request come in here This really is a very interesting demo So I kind of wanted to summarize this one for you and encourage you to watch this when it hits YouTube in two weeks 13 days from today We'll tweet this out off of our accounts But this is a great demo and all the code is linked right off the previous link there as well It's on the red badgers Site there and I really encourage you guys to check that one out So let's explain a little bit about what's happening under the under the covers here The CNCF gnats essentially gives us the ability to create these super super nodes and leaf clusters here so In when you can satisfy a request locally these requests are being routed locally and in that previous demo We were running on Kubernetes by the way, I forgot to mention that detail my apologies So we're running on two different Kubernetes distributions in the previous demo But at the application layer we now have the ability to do this auto discovery and resolution Outside of our local leaf nodes if we can't meet or make our constraints there What it means to you as a developer is is that you no longer have to think about clouds You no longer have to think about topology. In fact your business logic Is completely separated from your topology and your topology can change at runtime We're going to demonstrate that in a live demo. We do in just a second here So in this next demo what we're going to do is we're going to do something similar to that except We're going to deploy running code to some people in the audience. So Taylor. Are you connected to the Wi-Fi? So Taylor up here is is running Wasm cloud as well and what we're going to do is we're going to demonstrate that same ability to fail over here Okay So, all right, so this is my local computer here And I'll just explain the dashboard a little bit and there's all of course works via API and Through a command line CLEE called wash everything in the web assembly world is some sort of a wah joke, you know It's this is the washboard. There's wash. There's All sorts of wah jokes that are out there and we're essentially running the Java a pet store Is anybody ever written the Java pet store before? No one alright, this is like a when you get into Java programming This will be one of the sort of demos that the books always use it starts simple and basic and it gets increasingly and increasingly complex here And logically what we have here is an API that's fronting three other different actors that are here now These actors have capabilities. They have Lego blocks on the bottom And what's great is is that you can plug them into Lego blocks anywhere? So locally they're plugged into an HTTP web server and into a postgres database And that's what's happening here with these link definitions Now I can also see that there's some other hosts here that are sitting on the on the network and Taylor, what is your ID? You any six la or n b v you? You not you all right All right Steve one of our co-workers is also connected. So this is Taylor's laptop here now Taylor Do you have control of the CNCF network? Have you forwarded any ports or networking or anything like that? Okay, so he said that there's nothing but Wasam cloud running that's on his computer. You can see that Taylor isn't isn't run anything So let's go ahead and start a part of the application here on Taylor's computer And we'll go ahead and start a vets, which is a piece of this app And I'm just gonna go and kick that off and I'll give you a demo of what this app actually looks like If you're not familiar with it So this is a simple web scaffolding that we've thrown on top of it But there are a couple simple routes here. We've got a pets. So we've got a Charlie Brown who has a dog Snoopy and Snoopy is a completely paranoid And having hallucinations Especially around Halloween We'll put that on here and he's gonna see a Diana Edwards first is vat and I can click close here and You can see that the That the I'm sorry. I close instead of ad visit. How's my bad? I'll just both hallucinations are on first And Edwards and visit there we go. Alright, so we can see Snoopy's goat has been to the vet now What's really powerful here is is that? This is all part of this somewhat Morphous mesh now so you can see Taylor's running a part of the vets app and if I come back to My computer right here. You can see that I'm running it all as well and we can you know beyond using the UI we could also You know curl this you guys probably can't see that very well. You'd let me in the back know when the text is big enough Great. Thank you so much Great, so I can just curl And I can see that I could hit that API now what would happen if we You know delete this and this is the you know the The live demo right so let's see what happens When we delete it, so I'm no longer running that piece of this application here locally And let's see Here's crossed I Really want to scream goal, but I'm mic'd up. Sorry to me. That's really exciting Think about what we just demonstrated there simply We have two completely disconnected clouds. There's no VPN between our between our devices here, right? I could be running on Kubernetes or not I could be on the edge or not I couldn't even define the edge to be honest with you All right, there is no definition of that of that term anymore because there is no real definition of cloud anymore because all of the old Boundaries has simply fallen to the wayside. Oh and we could be running on different CPUs or On different operating systems and we both are running and compiling the same code in WebAssembly as A developer. I love this because what I don't have to worry about is everything else It's simply resolved in the tower of turtles that live below me and trust me in modern cloud development. Yurtles got nothing on these turtles Right all the way down. Whatever your organization's opinionated choices are you need to run Istio You need to run Envoy however quickly they change All of that simply gets pushed to the layer below us now and up here at the developing at the developer layer We're free to just build our applications and run them Now there's a team that will be below us that will run those platforms However, they now can stay in their own swim lane and stay out of ours. This is a huge Opportunity in in cloud native computing and what I would want to emphasize is is that There are multiple approaches to this, you know, I'm demonstrating in Wasm cloud today because that's the technology that I work on but Dappers also moving in this direction as well Now they haven't adopted a web assembly so that wouldn't make a great talk about cloud native applications with web assembly except not with web assembly, but This is I think a huge piece of what the excitement is around with web assembly So with our last couple minutes here, let's talk about some of the things that are working together to make this happen So wasm cloud is a CNCF project. We started it about two years ago And it is a stack of components that give you the ability to Develop very simply and down at the bottom layer. It starts with web assembly, which I like to think of as just a virtual CPU You know when you're when you compile your code to web assembly, there's no virtual operating system here Now there are some operating system like constructs on the way called wazi and when those come along You'll sort of have the ability to you know open sockets and do some of those other things but right now this is just simply like a box that you're locked into and What wasm cloud does is it comes along and it brings a framework for your applications an application framework that gives you a Box of Legos and takes care of a lot of the hard underlying tasks For example when you want to move data out of your box out of web assembly into the guest operating system and back It does all that translation for you even with complex data types So it's designed for extreme scalability both horizontally and vertically as you just saw right now I could spun up. I could have scaled my acres locally to you know a hundred actors or I could scale horizontally Out and out and across and we leverage this built-in networking layer called NATS Also open source in order to get that done. So this is extremely Scalable and composable and of course signed it also inherits the capability driven model that web assembly starts with Now on top of that we centrally maintain a library of hot swappable capabilities Those are those Lego blocks like web servers and database You know driver type things like sequel servers message queues But these capabilities are very easy to add and we have a new developer experience with wasm cloud A dot 50 which we just launched last week that give you wizards in order to scaffold these things out and get them a built-out on Top of that you start running your actors like the pet store And then you plug in whatever Lego blocks you want. These are stateless and reactive and they're incredibly tiny And on the back end wasm cloud uses elixir which is the same powerful technology that's that's been developed over the last 20 years Diploment things like what's app initially and discord. It's incredibly scalable and powerful And then we combine this with gnats Which is the magic layer that just enabled that seamless connection between these two leaf nodes here When the vets app could satisfy its request locally here just like we did in the AWS GCP demo It did so but when it couldn't it Bid the contract out over to Taylor's computer and then pulled it back and that's is incredibly amazing For cncf projects. It's self-healing. It's self-forming. There's no service discovery And we just adopted a new technology called jet stream that sort of gives you a local cache of what's on the network That that works there now when we even I just want to mention that when we think about what this topology and what this technology Enables it's going to enable some pretty crazy things Just as I was able to seamlessly offload part of my microservice and make topology detail with Taylor here You can do that across clouds as well There's no reason that you can't have part of your application running in one cloud and Part of your application running in another cloud or on the edge itself If you'd like more information about our most recent demo, we just launched Zero dot five zero last week. There's live videos training and for more information About what we're doing with the stack in our view of the world. You can come visit us at wasm cloud comm This is the sort of summary view though of where I think we're going for the next epoch of technology And when we look at this worldview, it really involves this crisp layer here in separation between Your applications and what sits underneath them your business logic and everything else and It really starts to meet the sort of needs that we have today around tiny composable Portable business logic that we can take with us anywhere in a way that the current epoch of technology just doesn't So when we think cloud native, I just want to remind you that You know web assembly is neither, you know web nor assembly But cloud native is really kind of getting undefinable as well as those boundaries kind of fall away in the edge Thank you so much for your time today. My name is Liam Randall Wet wasm cloud comm and then for more information about our company. It's cosmetic comm. Thank you