The presenter here is a truly gifted teacher. Absolutely amazing way to simplify an esoteric topic. It is hard to overstate how important this content is for people like me. Thank you!!
This presentation is one of the finest I've ever seen! Takes a very complex subject and walks the viewer through in a very understandable manner. Great stuff. GCB
Anybody whom haven't been up to date with virtual machines would hugely benefit from watching this. I think we will get to a point where their is an OS dedicated to just running docker + webassembly apps.
Performance Speed for containers 'Far away from native'? Yes IF you are running it on windows or mac but app is built for linux. If you run it on linux, it is native speed. OS calls go directly to kernel, no VM translation layer.
Not only that. Placing WASM before docker containers in terms of "Performance speed" is so wrong. "Almost native speed" for WASM ruthlessly ignores a level of redirection known as byte code interpretation.
Isn't WASM more analogous to JVM rather than Docker? You have a compiler that creates special bytecode (from a limited number of languages) for a VM. As opposed to Docker, where you can run code from any language as long as it has a compiler for your architecture.
WebAssembly is indeed compiled source code to byte code, which is JIT'ed to native code at runtime (and potentially cached). The big difference is that WASM is closer to a basic instruction set architecture (ISA) and does not bake in a particular hierarchy (e.g. Object is not the root of all classes) nor enforce any particular memory model (e.g. you don't have to use lazy garbage collection like the JVM or CLR).
Yes, WASM is similar in concept to the JVM-they're both a virtual machine that runs on a bytecode. The difference is that the JVM was designed for Java specifically, so anything that compiles to it has to play nice with JVM semantics, such as classes and garbage collection. WASM's bytecode is lower level, and more simple, so it's way easier to get any arbitrary programming language compiling to it, compared to JVM. The reason WASM is being compared with Docker, is because WASM by default is already fairly restricted, and sandboxed, with the only access to the system being whatever you explicitly give it. Java is technically capable of this as well, stripping out and controlling any syscalls, but its entire ecosystem isn't designed for this. Not to mention, WASM lets you do this with languages that aren't specifically designed for the JVM specifically. If your compiler is built on LLVM, you almost get WASM support for free.
The difference is underlying API, while both are in intermediate format, java bytecode has more OS apis available compared to WASM. Web Assembly is limited to sandbox it's running in. If it's browser, it's limited to APIs available similar to JS sandbox. If it's loaded in wider runtime i.e. v8 / node.js it will have wider set it APIs i.e. network / fs etc. Either way it's more comparable to foreign function interface that alot of languages provides. Runtimes are going to limit what it can do, you can label it as APIs or modules it doesn't matter, concept of sandbox and abstraction remains same. Actual pipeline is that you load intermediate binary, wasm runtime allocate memory and start JIT translation, Native code bootstraps and executes entry function i.e. main function. With inter process communication both world communicates. WASM would use stdlib and other posix complaint syscalls so that it remains OS independent, there's no magic there, runtime is just broker which manages resources and pass on syscalls. On docker entire thing is done using Linux namespaces which is entirely different concept to spawn process as lightweight VM and doesn't have runtime on it's own rather gets namespaced translations of all syscalls directly. That's why you need images compiled for specific arch in containers while WASM can execute on any complaint runtime.
Thanks Mumshad... your videos are always interesting and educative. I think the pace at which Software Development is changing in its entire approach along with tools, processes and expectations, its becoming humanly impossible for Software Developers to match the expectations. And mostly people are learning these tools, frameworks, etc only to the level of getting work done. Naturally , cause it would take time for any human software developer to work on a perticular tech/ tool for a considerable period of time to develop expertise of next level. But by then the ask changes, tool changes, processes change and every employer wants Developer to have solid experience in these new shiny tools, tech. Which a human cant have , not they are expert beyond a point in the Tool they have been using because many were trying to catch the bus of change. 😃 Change is good , pace of new tech i is good , provided it adds real value to the objective. I hope Software Developers too may be thinking in the same direction.
I don't see many use cases where one should use containers + WASM instead of just WASM and WASI. I think this technology has a great potential replacing containers because it provides a way to deploy and execute your application anywhere with little overhead and complexity compared to containers. This is something like Java on steroids with open standards and ability to use different programming languages and tools which makes it even more tempting, you just use your beloved language, compile it and deploy anywhere.
To reduce the docker image size and application startup time you can use images like alpine or distroless. And when you run docker inside a linux machine the docker container it should be running at native speeds. In contrast when you run docker on Windows and on MacOS it needs to create a linux vm to run the containers on.
Great video! I don't agree that docker is "far away from native speed". If you google any research, you will find out that docker has speed close to native (on linux). I totally agree about the other docker disadvantages.
Your explanation on the latest technologies is awesome, explanation in simple language and able to understand by everyone. thanks please bring more videos on the latest trends in DevOps and Orchestration.❤
Wow!! What an amazing video. I am fairly certain you put tremendous effort and research in creating these videos. Thank you so much and keep up the good work!!
14:09 - A Docker container does not contain an OS (but still mimics a file system) as far as I know, so doesn't it access the underlying OS just like WASM?
It uses the Linux kernel, so it is in Linux, but windows and Mac need to run a "VM" with Linux in order to spin up containers from what I've understood
@@pl4nty Yeah it's more on the play on word here. But WSL2 uses a VM under the hood with hyperv, but what you have access to is not a VM in the truest sense. It just behaves like it. It means you can have the advantages of WSL1 (fast start-up time, no need to manage your VM, not isolated from the host, less memory consumption and CPU usage...) and still have the advantages of a VM. That's what they mean in the documentation of WSL2 when they it 'behaves' like a VM.
@@_akuma06 kinda, but WSL2 is very much a (Windows-managed) VM - it runs a virtualised kernel and network switch. It also has similar isolation to a VM. It has some performance optimisations (eg custom kernel), and a bunch of tooling (eg WSLg, USDIPD), but the core architecture is hyperv. Windows has standardised on it to reduce attack surface and accelerate development - WDAG and Windows Sandbox have taken similar approaches
14:05, the Performance Speed comparison is wrong. I think it should be the other way aroud. Containerized apps run at native speed. That’s why you need to compile them for the specific architecture. WASM, on the other hand, is slower because it needs to be translated to that architecture
@@leonardmocanu-wi1oh Then again the example was about Mac and Windows users in the video. However I agree that if we limit it to Linux os only, you're right.
Thank you for the detailed overview. I agree with you as I highly doubt they will replace Docker or Kubernetes. I also think adoption won't be as fast as we saw with containers as I don't think many teams will be motivated to use it unless they need to solve some particular challenge on the front end. I see its use in the back end very unlikely. However, it wouldn't be the first time I realize the power of a technology only after it reaches a decent level of maturity.
I will comment that it's not always about deploying stuff on the web. Electrical engineers use docker is lots of different ways. You can use Docker containers to run tests with specific operating system parameters or make a deep learning environment with cuda set up in a specific way.
the future looks interesting in terms of security as well, you can encrypt such container and provide functionality that is completely encrypted, almost like in PS5, will become easy to manage licensing as you can build in anything inside those encrypted containers even self destruction mechanisms as soons as it gets connections to the internet.
Interesting, however you’re wrong about docker performance, it can be slower to load but once loaded it’s by definition more performant because there is no transpilation (conversion from intermediate code to native code) as the wasm would need. Don’t confuse process virtualization (docker) with hardware virtualization (hypervisors) which have a considerable amount of overhead.
one the best video i've ever seen for webassembly out of the browser thank you so much , can you make some tutorials on becnhmarking or profiling for wasm binaries.
As much as I loved this video, people shouldn't even be comparing these two technologies since they serve completely different purposes in very different manners even though the stack looks a bit similar. Also, Docker is made for server-side applications which a majority of the time, runs on Linux. When Docker containers execute on Linux, they do run at native performance because IT IS running natively since there's no emulation or virtualization going on. Simply think of it as a glorified "chroot". WASM is practically doing what Java with JVM did, but a bit better. Remember applets people? 😏
We are glad you found our video helpful. Like and share our video with your peers and also do not forget to subscribe to our channel for not missing video updates. We will be coming up with more such videos. Cheers!
Now I wonder, how does WASM compare against ActiveX (or similar, like Java)? The option of compiling a Windows desktop application into some kind of web module was there two decades ago. There were some security issues, yes, but at the core this seems to me like nothing new. So why are we so excited about it? What changed?
To counterargument Docker Tweet, when Docker was created, ANDF(TenDRA) already existed. And many other attempts. TenDRA is more functional, it supports exceptions and handling of integer overflow
If I were to build an application from scratch and are not bound to Docker/K8s work flows, is docker/K8s necessary? Also are they're orchestration tools like k8s for WASM or in the works? It seems like docker is only necessary since its something were familiar with and is already in our infrastructures.
"There are a lot of benefits of Docker and Kubernetes you can read more about them here: Docker: kodekloud.com/blog/role-of-docker-in-devops Kubernetes: kodekloud.com/blog/benefits-of-kubernetes/ For example, assume that you have to deploy a cluster with microservices, every day there are a lot of commits code of the developer team for moreover 20 services. Containerizing all of these applications and deploying them to Kubernetes is such a great idea. You can build CI/CD, set up Monitoring, and config security containers. This is effective."
Docker doesn't allow applications to run anywhere. Most people who use docker use Linux containers. When they run the Linux containers, they are running them on Linux. If the host OS is Mac or Windows, they run them in a virtual machine in Linux. Docker isn't giving any portability, as you are still running it in Linux. While a normal C program can be compiled to run under those different operating systems. It can also be statically linked so you end up with a single exe with no dependencies. And if you need dependencies, they can be put in a single folder. Call your folder a container if you like. What Docker provides that doesn't normally come with the OS, is the namespace isolation. Which, depending on the program may or may not be a good thing.
Good explanation. But I'm wondering how can we differentiate or choose between Java/JRE and WASM. Isn't JRE is about the same concept to write a code once, and run them at every platform ?
Running binaries in a browser? We were doing this in 1998 with OLE and CreateObject It was removed for security reasons from IE an never supported in Moz/Webkit/Chrime. How is WASM different?
At 14:39 WASM vs Container performance speed. So a C++ code will run faster in WA engine as compared to docker? Because I am pretty sure is WA is almost 50-60% slower than native C++ code. I don't know if docker is even slower in running C++?
Thanks Mumshad... Awesome work... Can you please create a video to compare the performance of a RUST web-API (just add two params and return sum) hosted on docker and another using wasm/wasi? This will be practical and really useful.
It's not practical to write any web back end in wasi yet. The spec for network socket and multi threading is not yet finalized so your question is easily answered and docker is faster for now(for rust web applications)
Hey Harshad, thank you for watching our video. We will definitely look into your suggestions. Do subscribe and stay tuned for updates on our channel. Cheers :)
Because there's no networking stack so your wasm applications are just limited to system scope and don't do much more than printing hello world or calculating a fibonacci sequence. But there have been projects like fermyon that expose networking in their own way. So you can try them or try Wasmer with custom host functions with gpu, networking and so on.
@@dynamite-bud they dont have networking stack so far, but since they started already implementing some of it so in the future they will have a complete functional networking stack, at that point they wouldnt need docker right !
15:14 WASM provides high security. How? Containers provide namespace, cgroup, seccomp/selinux security features. Does WASM runtime provide the same features. 15:52 We compare WASM "vs" Docker, but finally ingrate WASM with Docker? If I'm running 3rd party WASM codes in browser, how to provide security? Is browser itself safe?
What about executing other languages, like Python. I think WASM solves some specific problems better than docker. But, itself cannot replace docker for all the wide ranged problems that docker can solve.
I still think the two have nothing to do with each other. The whole point of Docker is to solve the dependency hell problem you face when using pretty much anything. WASM with WASI on the other hand is yet another bytecode format for code plus a way to interact with the OS - just like the JVM or .NET. Like what happens if one Programm you want to deploy needs WASI 1.1 and another one 1.2. Then you still have the same problem that docker solved.
Most programs running in the cloud are not native, Java, Python, PHP, Node... And in theory they do not suffer from portability problems. K8s I believe is Linux only...(Or 90%+ of cases). I don't believe wasm would have advantages for a cloud scenario. Maybe to distribute applications to users... Desktop and mobile. Maybe on embedded Linux (ARM, riscV, etc). Another use case my be create plugins in any language, some API Gateways like Kong allow that .
What about debugging? Do you do it before compiling to WASM? What kind of debugger does it support? Container is good for large scale deployment of specific app or services, like a fleet of containers running a video encoder. Maintaining and updating docker containers is not easy either. And browser based apps drive me crazy. I have 10+ browser windows open with 20-50+ tabs open. Where is that specific tab I'm looking for? And with ALL the constant browser security issues...I don't want to run my trading app or otherwise in a browser. Do you really want to play a game and accident activate BACK BUTTON? oops....
WASM is like Java Bytecode and Wasm Runtime is like the JVM. It's just that any language can be compiled down to WASM unlike Java Bytecode. Is this statement wrong?
"WebAssembly allows you to send parts of the backend to the front end, running code written in languages like C, C++, Rust, and others directly in the browser. This improves performance and responsiveness by reducing the need for frequent server-side round trips. To achieve this: 1. Compile your backend code to WebAssembly, creating a .wasm binary file. 2. Load the WebAssembly code into your front-end application using JavaScript. 3. Interact with the backend logic directly on the front end, calling functions and passing data back and forth. WebAssembly is particularly useful for computationally intensive tasks, such as image or video processing, simulations, or data analytics. However, sensitive operations and certain security-related tasks are generally better suited for server-side processing. It complements JavaScript and opens up new possibilities for creating richer and more interactive web applications."
It higly looks like old times' activex and java applets. Docker and linux containers solved the problems coming from the serverside code portability. But wasm runs at clientside. The video does not explain the difference.
@@softwareengineersdiaryniji how can I write a code that connects to a a db and a message queue and another webservice too and get request from another service in wasm?
this is a high level picture of what is wasm and how it works. (and different from docker) maybe the next video should be more deeper and practical scenario as you mentioned
I don’t see any reason WASM can replace docker. The purpose of docker is also to create a CICD pipeline. I don’t see any tool supporting this pipeline yet.
While it may be true that Docker may not have been created if WASM had existed, they are still 2 very fundamentally different tools, with different purposes. I for one would not change a thing.
Oh boy, that's a realy hot take! It feels so wrong... The major difference: an app in Docker is run server side, while a WASM app is executed client side. At least in the default use cases except a few promille. And then a docker image doesn't need a fully fledged filesystem. That's just because the major part of lazy developers only utilizing framework over framework have missed the point.
Did java try this years ago with Applet? (Don't get me wrong, ilike the content :) one of the challenges I can see for this is test automation, is there any framework to test it with same efficiency as the DOM based websites?
Each WebAssembly module executes within a sandboxed environment separated from the host runtime using fault isolation techniques. Referent: webassembly.org/docs/security
disagree here. the container startup time is irrelevant, unless you programmed complete shit you will have services that run either forever or until the instance gets destroyed or updated, whatever comes first. "near native performance" of wasm? well. no. not even remotely. a native executable within a docker container will run circles around the wasm version. and even multi-platform compatibility is not an issue, docker allows you to package multiple versions (lets say arm + x86) into a single image.
🚀Explore Our Top Courses & Special Offers: kode.wiki/40SkWyU
The presenter here is a truly gifted teacher. Absolutely amazing way to simplify an esoteric topic. It is hard to overstate how important this content is for people like me. Thank you!!
Hello thank you for watching our video .We are glad that we could help you in your learning !
This presentation is one of the finest I've ever seen! Takes a very complex subject and walks the viewer through in a very understandable manner. Great stuff. GCB
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
A clean and straightforward explanation of WASM vs Docker. You're good at explaining a topic that everyone doesn't know how to show with details
Hello, thank you for watching our video. We are glad that you liked our video. Do subscribe and stay connected with us. Cheers :)
Anybody whom haven't been up to date with virtual machines would hugely benefit from watching this.
I think we will get to a point where their is an OS dedicated to just running docker + webassembly apps.
Mumshad, you are an amazing tutor... recently i got CKA certified ... your tutorial was really helpful!!!!!!
Thank you for the appreciation. You can check our videos related to DevOps and subscribe to our channel to stay updated with all the latest tools.
Performance Speed for containers 'Far away from native'? Yes IF you are running it on windows or mac but app is built for linux. If you run it on linux, it is native speed. OS calls go directly to kernel, no VM translation layer.
Exactly
Not only that. Placing WASM before docker containers in terms of "Performance speed" is so wrong. "Almost native speed" for WASM ruthlessly ignores a level of redirection known as byte code interpretation.
Ok but you have to think about who software is built for. Typically, a regular user will have windows or apple.
@@HelloThere-xs8ss And containers usually only run on servers. And those run almost all on linux.
@@lemetwe3401 ok, not true at all.
The explanation is very clear and easy to understand. (No accent at all!) Love to learn from you, more!
Awesome, thank you!
this video is criminally underrated!
Thanks a ton! Your support makes all the difference 💙
Isn't WASM more analogous to JVM rather than Docker? You have a compiler that creates special bytecode (from a limited number of languages) for a VM. As opposed to Docker, where you can run code from any language as long as it has a compiler for your architecture.
Just add Java to web and it's somewhat... Oh wait we did that with applets lol
WebAssembly is indeed compiled source code to byte code, which is JIT'ed to native code at runtime (and potentially cached). The big difference is that WASM is closer to a basic instruction set architecture (ISA) and does not bake in a particular hierarchy (e.g. Object is not the root of all classes) nor enforce any particular memory model (e.g. you don't have to use lazy garbage collection like the JVM or CLR).
Yes, WASM is similar in concept to the JVM-they're both a virtual machine that runs on a bytecode. The difference is that the JVM was designed for Java specifically, so anything that compiles to it has to play nice with JVM semantics, such as classes and garbage collection. WASM's bytecode is lower level, and more simple, so it's way easier to get any arbitrary programming language compiling to it, compared to JVM.
The reason WASM is being compared with Docker, is because WASM by default is already fairly restricted, and sandboxed, with the only access to the system being whatever you explicitly give it. Java is technically capable of this as well, stripping out and controlling any syscalls, but its entire ecosystem isn't designed for this. Not to mention, WASM lets you do this with languages that aren't specifically designed for the JVM specifically. If your compiler is built on LLVM, you almost get WASM support for free.
The difference is underlying API, while both are in intermediate format, java bytecode has more OS apis available compared to WASM.
Web Assembly is limited to sandbox it's running in. If it's browser, it's limited to APIs available similar to JS sandbox. If it's loaded in wider runtime i.e. v8 / node.js it will have wider set it APIs i.e. network / fs etc.
Either way it's more comparable to foreign function interface that alot of languages provides. Runtimes are going to limit what it can do, you can label it as APIs or modules it doesn't matter, concept of sandbox and abstraction remains same.
Actual pipeline is that you load intermediate binary, wasm runtime allocate memory and start JIT translation, Native code bootstraps and executes entry function i.e. main function. With inter process communication both world communicates.
WASM would use stdlib and other posix complaint syscalls so that it remains OS independent, there's no magic there, runtime is just broker which manages resources and pass on syscalls.
On docker entire thing is done using Linux namespaces which is entirely different concept to spawn process as lightweight VM and doesn't have runtime on it's own rather gets namespaced translations of all syscalls directly. That's why you need images compiled for specific arch in containers while WASM can execute on any complaint runtime.
Yes it's the JVM vision.
Amazing content. Very clear, to the point and love the way you explains WASM from beginning by comparing to the DOCKER. 👌
Much appreciated!
Thanks Mumshad... your videos are always interesting and educative. I think the pace at which Software Development is changing in its entire approach along with tools, processes and expectations, its becoming humanly impossible for Software Developers to match the expectations. And mostly people are learning these tools, frameworks, etc only to the level of getting work done. Naturally , cause it would take time for any human software developer to work on a perticular tech/ tool for a considerable period of time to develop expertise of next level. But by then the ask changes, tool changes, processes change and every employer wants Developer to have solid experience in these new shiny tools, tech. Which a human cant have , not they are expert beyond a point in the Tool they have been using because many were trying to catch the bus of change. 😃
Change is good , pace of new tech i is good , provided it adds real value to the objective. I hope Software Developers too may be thinking in the same direction.
Hello, thanks for checking out our video and for sharing your input. Do subscribe to our channel to stay posted on upcoming tutorials. Cheers!
Hi Sir Ty for taking the time in demystifying a complex topic. 🙏
Welcome!
I don't see many use cases where one should use containers + WASM instead of just WASM and WASI. I think this technology has a great potential replacing containers because it provides a way to deploy and execute your application anywhere with little overhead and complexity compared to containers. This is something like Java on steroids with open standards and ability to use different programming languages and tools which makes it even more tempting, you just use your beloved language, compile it and deploy anywhere.
To reduce the docker image size and application startup time you can use images like alpine or distroless.
And when you run docker inside a linux machine the docker container it should be running at native speeds. In contrast when you run docker on Windows and on MacOS it needs to create a linux vm to run the containers on.
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
Great video!
I don't agree that docker is "far away from native speed". If you google any research, you will find out that docker has speed close to native (on linux). I totally agree about the other docker disadvantages.
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
Your explanation on the latest technologies is awesome, explanation in simple language and able to understand by everyone. thanks please bring more videos on the latest trends in DevOps and Orchestration.❤
Thanks and welcome
Wow!! What an amazing video. I am fairly certain you put tremendous effort and research in creating these videos. Thank you so much and keep up the good work!!
Wow, thank you!
14:09 - A Docker container does not contain an OS (but still mimics a file system) as far as I know, so doesn't it access the underlying OS just like WASM?
It uses the Linux kernel, so it is in Linux, but windows and Mac need to run a "VM" with Linux in order to spin up containers from what I've understood
@@brunobellomunhoz You're right. On windows, docker uses WSL 2 for the containerized apps and WSL 2 behaves like a "VM" but is not actually one.
@@_akuma06 WSL2 actually is a VM, running on Hyper-V
@@pl4nty Yeah it's more on the play on word here. But WSL2 uses a VM under the hood with hyperv, but what you have access to is not a VM in the truest sense. It just behaves like it. It means you can have the advantages of WSL1 (fast start-up time, no need to manage your VM, not isolated from the host, less memory consumption and CPU usage...) and still have the advantages of a VM. That's what they mean in the documentation of WSL2 when they it 'behaves' like a VM.
@@_akuma06 kinda, but WSL2 is very much a (Windows-managed) VM - it runs a virtualised kernel and network switch. It also has similar isolation to a VM. It has some performance optimisations (eg custom kernel), and a bunch of tooling (eg WSLg, USDIPD), but the core architecture is hyperv. Windows has standardised on it to reduce attack surface and accelerate development - WDAG and Windows Sandbox have taken similar approaches
platform independent thing can be said for JVM too. what's thats not the replacement for docker?
14:05, the Performance Speed comparison is wrong. I think it should be the other way aroud. Containerized apps run at native speed. That’s why you need to compile them for the specific architecture.
WASM, on the other hand, is slower because it needs to be translated to that architecture
I can assure you that a docker container on windows doesn't run at native speed.
@@_akuma06, you are right but I think this is about production environments
@@leonardmocanu-wi1oh Then again the example was about Mac and Windows users in the video. However I agree that if we limit it to Linux os only, you're right.
The best instructor ever born on earth!
We are so grateful for your kind words. Also, subscribe to our channel and stay tuned for more videos. Cheers!
Very brilliantly explained. Thanks
I am not sure if combination will only get the benefit from both...? But it is good to know there is something new now. Thanks!
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
This was so good, pitched perfectly, fantastic animations and references.
Greetings! Thank you for your kind words. Spread the word by liking, sharing and subscribing to our channel! Cheers :).
Thank you for the detailed overview. I agree with you as I highly doubt they will replace Docker or Kubernetes. I also think adoption won't be as fast as we saw with containers as I don't think many teams will be motivated to use it unless they need to solve some particular challenge on the front end. I see its use in the back end very unlikely. However, it wouldn't be the first time I realize the power of a technology only after it reaches a decent level of maturity.
Hello, thank you for watching our video. We are glad that you liked our video. Do subscribe and stay connected with us. Cheers :)
Amazing explanations! One thing i would add is for the web, WebGL and WebGPU are partially what unlocks games on the browsers as well. not just WASM.
Hi, thanks for checking out our video and for sharing the information. Do subscribe to our channel to stay posted on upcoming tutorials. Cheers!
I will comment that it's not always about deploying stuff on the web. Electrical engineers use docker is lots of different ways. You can use Docker containers to run tests with specific operating system parameters or make a deep learning environment with cuda set up in a specific way.
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
You are the best. I think you are really talented
the future looks interesting in terms of security as well, you can encrypt such container and provide functionality that is completely encrypted, almost like in PS5, will become easy to manage licensing as you can build in anything inside those encrypted containers even self destruction mechanisms as soons as it gets connections to the internet.
Hi, thanks for checking out our tutorial and for sharing the information. Do subscribe to our channel to stay posted on upcoming tutorials. Cheers!
Thanks Mumshad for a very informative video in WASM and WASI.
Hi Nilesh, we are glad you found our video informative. Do subscribe to our channel and stay tuned for more.
Very thorough, beautiful presentation and easy to understand. Thank you so much.
Thanks a ton! Your support makes all the difference 💙
WASM with Docker. That's amazing. Thanks for the presentation!
Keep learning with us .Stay connected with our channel and team :) . Do subscribe the channel for more updates : )
Interesting, however you’re wrong about docker performance, it can be slower to load but once loaded it’s by definition more performant because there is no transpilation (conversion from intermediate code to native code) as the wasm would need. Don’t confuse process virtualization (docker) with hardware virtualization (hypervisors) which have a considerable amount of overhead.
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
This video is very informative, Thank you Mumshad.
We are glad you found our video informative. Do support us by subscribing to our channel. Cheers!
@@KodeKloud I subscribed your channel long time ago.
very concise explanation and example, Sir!
Glad it was helpful!
Great video and content. I have been using Microsoft Blazor for a while now. I am excited to see the direction that WASM is going.
We are glad that you have enjoyed your learning experience with us : )
Thanks Mumshad for sharing insights
Thanks a ton! Your support makes all the difference 💙
one the best video i've ever seen for webassembly out of the browser thank you so much , can you make some tutorials on becnhmarking or profiling for wasm binaries.
Thank you for the appreciation. You can check our videos related to DevOps and subscribe to our channel to stay updated with all the latest tools.
Thanks for the explanation man! Really enjoyed and grasped this content. 🙏
We are so grateful for your kind words. Also, subscribe to our channel and stay tuned for more videos. Cheers!
So glad I found this channel
Greetings! Thank you for your kind words. Spread the word by liking, sharing and subscribing to our channel! Cheers :).
As much as I loved this video, people shouldn't even be comparing these two technologies since they serve completely different purposes in very different manners even though the stack looks a bit similar. Also, Docker is made for server-side applications which a majority of the time, runs on Linux. When Docker containers execute on Linux, they do run at native performance because IT IS running natively since there's no emulation or virtualization going on. Simply think of it as a glorified "chroot". WASM is practically doing what Java with JVM did, but a bit better. Remember applets people? 😏
Thank you again sir for the wealth of info and keeping us updated with all the integrations. Appreciate it sincerely…
We are glad you found our video helpful. Like and share our video with your peers and also do not forget to subscribe to our channel for not missing video updates. We will be coming up with more such videos. Cheers!
Great video! Thank you for the clear explanation.
Glad it was helpful!
Great session!!
Thank you! Cheers!
Great detailed explanation, thanks!
Glad it was helpful!
Wow. This is awesome!!
Thank you! Cheers!
Thank you
U really put in the effort and it shows in your work
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
Thank you Mumshad Sir
Most welcome
This is GREAT content.
Thanks for watching our video. Cheers!
Thank you very much for the details, valuable indeed, appreciate it!
Glad it was helpful!
Now I wonder, how does WASM compare against ActiveX (or similar, like Java)? The option of compiling a Windows desktop application into some kind of web module was there two decades ago. There were some security issues, yes, but at the core this seems to me like nothing new. So why are we so excited about it? What changed?
Java and active x are slow and buggy!
To counterargument Docker Tweet, when Docker was created, ANDF(TenDRA) already existed. And many other attempts. TenDRA is more functional, it supports exceptions and handling of integer overflow
If I were to build an application from scratch and are not bound to Docker/K8s work flows, is docker/K8s necessary? Also are they're orchestration tools like k8s for WASM or in the works? It seems like docker is only necessary since its something were familiar with and is already in our infrastructures.
"There are a lot of benefits of Docker and Kubernetes you can read more about them here:
Docker: kodekloud.com/blog/role-of-docker-in-devops
Kubernetes: kodekloud.com/blog/benefits-of-kubernetes/
For example, assume that you have to deploy a cluster with microservices, every day there are a lot of commits code of the developer team for moreover 20 services. Containerizing all of these applications and deploying them to Kubernetes is such a great idea. You can build CI/CD, set up Monitoring, and config security containers. This is effective."
K8s is code as infra ... There are many benefits to using this approach. And all about monitoring, and version management
Docker doesn't allow applications to run anywhere. Most people who use docker use Linux containers. When they run the Linux containers, they are running them on Linux. If the host OS is Mac or Windows, they run them in a virtual machine in Linux. Docker isn't giving any portability, as you are still running it in Linux. While a normal C program can be compiled to run under those different operating systems. It can also be statically linked so you end up with a single exe with no dependencies. And if you need dependencies, they can be put in a single folder. Call your folder a container if you like. What Docker provides that doesn't normally come with the OS, is the namespace isolation. Which, depending on the program may or may not be a good thing.
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
This was basically the JVM dream.
Thanks for watching our video. Cheers!
Good explanation. But I'm wondering how can we differentiate or choose between Java/JRE and WASM. Isn't JRE is about the same concept to write a code once, and run them at every platform ?
can java run fast / low profile / low memory & run in browser ?
Thanks for demoing everything in code
Any time!
Running binaries in a browser? We were doing this in 1998 with OLE and CreateObject
It was removed for security reasons from IE an never supported in Moz/Webkit/Chrime.
How is WASM different?
At 14:39 WASM vs Container performance speed. So a C++ code will run faster in WA engine as compared to docker? Because I am pretty sure is WA is almost 50-60% slower than native C++ code. I don't know if docker is even slower in running C++?
where did i heard that compile once run everywhere?
Great video. Some constructive criticism: when explaining the basics of docker, don't use terminology used by people familar with it, like 'to up it'.
Hello, thank you for watching our video. We are glad that you liked our video. Do subscribe and stay connected with us. Cheers :)
Thanks Mumshad... Awesome work...
Can you please create a video to compare the performance of a RUST web-API (just add two params and return sum) hosted on docker and another using wasm/wasi?
This will be practical and really useful.
It's not practical to write any web back end in wasi yet. The spec for network socket and multi threading is not yet finalized so your question is easily answered and docker is faster for now(for rust web applications)
Hey Harshad, thank you for watching our video. We will definitely look into your suggestions. Do subscribe and stay tuned for updates on our channel. Cheers :)
@@realsong-fake Thanks for the feedback. Looks like here they have developed the web-APIs using wasm, ua-cam.com/video/OGcm3rHg630/v-deo.html
14:20 I do not understand how it is "almost native speed". Could you point me to a benchmark?
Wouldn't docker running in same-kernel-mode (such as cgroup isolation on linux) be much faster than running them in a vm (jvm, wasm etc)?
I still dont understand why do we need docker if we have wasm, what does docker offer that wasm does not ?
Because there's no networking stack so your wasm applications are just limited to system scope and don't do much more than printing hello world or calculating a fibonacci sequence. But there have been projects like fermyon that expose networking in their own way. So you can try them or try Wasmer with custom host functions with gpu, networking and so on.
@@dynamite-bud they dont have networking stack so far, but since they started already implementing some of it so in the future they will have a complete functional networking stack, at that point they wouldnt need docker right !
15:14 WASM provides high security. How? Containers provide namespace, cgroup, seccomp/selinux security features. Does WASM runtime provide the same features.
15:52 We compare WASM "vs" Docker, but finally ingrate WASM with Docker?
If I'm running 3rd party WASM codes in browser, how to provide security? Is browser itself safe?
9:00 Couldn't I simply compile for multiple targets and share the binary depending on the target? Wouldn't that be much simpler?
If you want to run a SQL database, you can do it in docker, but how could you do the same using webassembly which is only for apps you code yourself?
What about executing other languages, like Python. I think WASM solves some specific problems better than docker. But, itself cannot replace docker for all the wide ranged problems that docker can solve.
I still think the two have nothing to do with each other. The whole point of Docker is to solve the dependency hell problem you face when using pretty much anything. WASM with WASI on the other hand is yet another bytecode format for code plus a way to interact with the OS - just like the JVM or .NET. Like what happens if one Programm you want to deploy needs WASI 1.1 and another one 1.2. Then you still have the same problem that docker solved.
Most programs running in the cloud are not native, Java, Python, PHP, Node... And in theory they do not suffer from portability problems. K8s I believe is Linux only...(Or 90%+ of cases). I don't believe wasm would have advantages for a cloud scenario. Maybe to distribute applications to users... Desktop and mobile. Maybe on embedded Linux (ARM, riscV, etc). Another use case my be create plugins in any language, some API Gateways like Kong allow that .
What about debugging? Do you do it before compiling to WASM? What kind of debugger does it support? Container is good for large scale deployment of specific app or services, like a fleet of containers running a video encoder. Maintaining and updating docker containers is not easy either. And browser based apps drive me crazy. I have 10+ browser windows open with 20-50+ tabs open. Where is that specific tab I'm looking for? And with ALL the constant browser security issues...I don't want to run my trading app or otherwise in a browser. Do you really want to play a game and accident activate BACK BUTTON? oops....
WASM is like Java Bytecode and Wasm Runtime is like the JVM. It's just that any language can be compiled down to WASM unlike Java Bytecode. Is this statement wrong?
So we can send the backend to the front end? … what’s the implications? Can web assembly be easily reverse engineered?
"WebAssembly allows you to send parts of the backend to the front end, running code written in languages like C, C++, Rust, and others directly in the browser. This improves performance and responsiveness by reducing the need for frequent server-side round trips.
To achieve this:
1. Compile your backend code to WebAssembly, creating a .wasm binary file.
2. Load the WebAssembly code into your front-end application using JavaScript.
3. Interact with the backend logic directly on the front end, calling functions and passing data back and forth.
WebAssembly is particularly useful for computationally intensive tasks, such as image or video processing, simulations, or data analytics. However, sensitive operations and certain security-related tasks are generally better suited for server-side processing. It complements JavaScript and opens up new possibilities for creating richer and more interactive web applications."
Bro the content and accent is great😅
Thanks a ton! Your support makes all the difference 💙
Epic.
Thanks a ton! Your support makes all the difference 💙
So basically, using WASM as an application runtime is like the JVM?
"Compile once, runs everywhere"
14:15 can we say that Docker containers contains OS thou don't think this is correct ?
It higly looks like old times' activex and java applets. Docker and linux containers solved the problems coming from the serverside code portability. But wasm runs at clientside. The video does not explain the difference.
which difference you talk about?
@@softwareengineersdiaryniji how can I write a code that connects to a a db and a message queue and another webservice too and get request from another service in wasm?
this is a high level picture of what is wasm and how it works. (and different from docker)
maybe the next video should be more deeper and practical scenario as you mentioned
Thanks for watching our video and sharing your feedback.
I don’t see any reason WASM can replace docker. The purpose of docker is also to create a CICD pipeline. I don’t see any tool supporting this pipeline yet.
While it may be true that Docker may not have been created if WASM had existed, they are still 2 very fundamentally different tools, with different purposes. I for one would not change a thing.
Keep learning with us & stay connected .
Oh boy, that's a realy hot take! It feels so wrong... The major difference: an app in Docker is run server side, while a WASM app is executed client side. At least in the default use cases except a few promille.
And then a docker image doesn't need a fully fledged filesystem. That's just because the major part of lazy developers only utilizing framework over framework have missed the point.
5:38 you forgot wasmer?
It's hard for me to image how WASM handles dynamic languages + system libs
1:38 what game is that?
👏 👏 👏
Did java try this years ago with Applet? (Don't get me wrong, ilike the content :) one of the challenges I can see for this is test automation, is there any framework to test it with same efficiency as the DOM based websites?
What has changed in 3 years, since wasm/wasi hype first started ?
Thanks for watching our video and sharing your thoughts. Do subscribe to our channel and stay tuned for more. Cheers!
So we back to JVM again
WASM will replace Java
True, however lots of things have replaced java already
Thanks for watching our video. Cheers!
But wasm isn't isolated, is it?
Each WebAssembly module executes within a sandboxed environment separated from the host runtime using fault isolation techniques. Referent: webassembly.org/docs/security
Your Docker diagram is incorect. Docker runs on Linux kernel, e.g. on Windows it needs WSL2 to run.
Thank you for bringing this to our attention. We’re sorry you had a bad experience. We’ll share this feedback to our tech team.
I think I will just skip Docker altogether. I had procrastinated long enough anyway!
Haha! We wouldn't recommend that though.
C#, don't forget C#
if this isn't the nirvana of teaching I donno what is
Hi, we appreciate the kind comment! enjoy!
Docker containers do NOT work exactly as you asserted and Docker can do things WASM cannot.
disagree here. the container startup time is irrelevant, unless you programmed complete shit you will have services that run either forever or until the instance gets destroyed or updated, whatever comes first. "near native performance" of wasm? well. no. not even remotely. a native executable within a docker container will run circles around the wasm version. and even multi-platform compatibility is not an issue, docker allows you to package multiple versions (lets say arm + x86) into a single image.
Nice, people are reinventing Java all over again
Except that this time it is somehow even worse
Hope you enjoyed our video! We have a ton more videos like this on our channel. We hope you will join our community!