14 ms·
Introduction to Hippo: The WebAssembly PaaS
- sergiomattei 5y agoI honestly didn't understand a single word in this article. Can anyone please ELI5?
- zrail 5y agoSelf hosted Cloudflare workers, sort of
- babelfish 5y agoBut only for WASM, and has cold starts (Workers don't)
- kevincox 5y agoThat's not quite fair. IIRC workers do have cold starts but it is hidden by the TLS negotiation. So basically the start is nearly almost done by the time the request is received. I don't see any particular reason that this optimization couldn't be applied here.
- codetrotter 5y ago> An application is packaged as a bindle. Bindles are collected together in a bindle server that you can search. It’s a good article and nice work. But I couldn’t help but think of that one scene from Rick & Morty when I read this that goes like: “Everyone has a plumbus in their home. First they take the dingle bop and they smooth it out with a bunch of schleem. The schleem is then...repurposed for later batches. “They take the dingle bop and they push it through the grumbo, where the fleeb is rubbed against it. It's important that the fleeb is rubbed, because the fleeb has all the fleeb juice. “Then, a schlami shows up, and he rubs it...and spits on it. “They cut the fleeb. There's several hizzards in the way. “The blamfs rub against the chumbles, and the...plubis, and grumbo are shaved away. “That leaves you with...a regular old plumbus.” https://youtu.be/eMJk4y9NGvE https://youtu.be/eMJk4y9NGvE
- tmccrary55 5y agoHaha, this was my exact thought as well!
- CharlesW 5y agoFor anyone who might not know, "bindle" is a real (if archaic) word: https://en.wikipedia.org/wiki/Bindle https://en.wikipedia.org/wiki/Bindle
- pfraze 5y agoOf course, that’s all a variation of the long-running Encabulator joke https://youtu.be/RXJKdh1KZ0w https://youtu.be/RXJKdh1KZ0w
- dna_polymerase 5y agoI still wonder why they cut the fleeb.
- lostgame 5y agoThe fleeb has all the fleeb juice.
- iammisc 5y agoAt some point we need to stop inventing VMs. VMs like Java, .Net, etc, are already good enough. What is the point of yet another VM? The same people who designed web assembly could have taken java bytecode and added new APIs on top. Instead, they invented yet another machine encoding that has to be targeted, except this time we get to re-invent all the tooling. Look... I hate the Java language with a burning passion, but the Java VM core technology is perfectly acceptable. So is .Net. There is no reason for webassembly, other than that mozilla wanted to invent something.
- infogulch 5y agoWe're biased towards additive solutions [0], but sometimes subtraction is the right answer to a design problem. The problems that WA aims to solve from existing VMs like JVM/.NET are caused by the old APIs themselves, adding more API surface would not help. [0]: Adding is favoured over subtracting in problem solving https://news.ycombinator.com/item?id=26727878 https://news.ycombinator.com/item?id=26727878
- brundolf 5y agoSometimes adding the right thing can give you the opportunity to subtract. Code running in WASM may not have to run inside a Docker container running inside a Linux VM.
- iammisc 5y agoNothing needs to run Ina container Containers are just software engineerings latest name for a unix process. Both were designed to achieve similar levels of isolation. In reality,there's no such thing as a container. As far as Linux is concerned, containers are just processes with attributes, because that's what they are, we just decided to complicate it a lot
- iammisc 5y agoOkay then define a subset of java opcodes supported and then modify the open source hotspot. Look I'm trying to implement a wasm backend into an existing language right now and it could be a lot easier by either making wasm into a real architecture (with registers) or using an existing stack based vm isa.
- mfer 5y agoThe intro has some insider talk (ex, bindle). If you read on a little it describes how Hippo is a PaaS and uses WASM under the hood to make it happen. This has some great potential. Is the node the code running on Linux, FreeBSD, Mac, Windows, or something else? Doesn't actually matter because web assembly is being executed. It reminded of the Birth & Death of JavaScript talk from a bunch of years ago (it's really about wasm)... https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript https://www.destroyallsoftware.com/talks/the-birth-and-death...
- ofrzeta 5y agoOh, it's from the Deis people. Let's see if it's sustainable or if it's just a project to keep them busy after the Microsoft acquisition.
- tiew9Vii 5y agoDoes this support outbound HTTP requests? wasi-experimental-http? That bit seems to be the missing in the docs. I'd say that's a bare minimum requirement to start playing with these services. You need to get data in/out and with no socket support HTTP is the only way. If you can't get data in/out there's little you can create on these. Then you have things such as log access etc etc for prod workloads. Fastly C@E with Lucet is really promising but Fastly are lacking marketing/delivery/execution. You can't use it unless you are on the private beta which you can't access as no seats left and even then there's no pricing information and Fastly's current pricing model makes it a non starter for dev with $50 minimum fee instead of pay as you go. Five years some form of WASI will be available on all the FaaS services by the big cloud providers. Good to see these services starting to appear.
- matei_radu 5y agoHi, one of the maintainers here. It does support outbound HTTP, the runtime we are currently using enables that -- see https://github.com/deislabs/wagi/blob/main/docs/writing_modules.md#outbound-http-requests https://github.com/deislabs/wagi/blob/main/docs/writing_modu... Good point on the docs, I will open an issue and add some information about it, thanks!
- leodriesch 5y agoDoes this make sense? Let’s say you’re developing a web service in Go or Rust, wouldn’t it be faster without being compiled to WASM but rather running natively?
- ducharmdev 5y agoMaybe so, but in the long-term, I can't help but imagine that a single WASM runtime for cloud functions has to be more predictable and easier to optimize compared to doing the same for the runtimes of all individual languages used. I think the promise of WASM is a huge reduction in duplicated effort industry-wide. With WASI too, the possibilities for interoperability between languages looks promising. I would check out the Wasmer runtime if you're curious about it.
- terhechte 5y agoThis looks great! I've been looking for something like this for quite some time now. There were some open source projects with similar goals that never went anywhere. I do have a couple of small Rust services that I'm running on a Digital Ocean node. My current process is cross-compiling them via Docker, copying the binary over, and then manually starting them in a screen or tmux. This is for personal use and doesn't require production level safety so this approach is fine for me. However, it is a hassle. I could run one of the many different docker-based deployment systems out there, but that adds a ton of complexity where I like simplicity. One thing I'm missing from Hippo is a good example WASM app (preferably in Rust) that showcases a more complex app than Hello World and answers some questions such as: - How would I add routes? (e.g. which Rust packages are supported) - How would I access something like SQLite (does that even work?) - How would I access the filesystem in general - Is there a way to use HTML templates? I suppose if I start reading about WASI and WASM more I'd find answers, but a better example app (such as, say, a TodoMVC) would probably be more illuminating.
- mingyeow 5y agoThis looks amazing, but as a complete n00b to wasm (I am familiar w rust and web tech), is there a simple overview on how I can take the compiled program and use in a development or production environment? I read through the tutorial, but this is still not totally clear to me.