First time I read about it, and I’m assuming that’s on purpose because it’s still in its early beta stage, however their plan for it is very interesting.
That being said, they ought to change its name to Deno Cloud if you ask me. Deno Deploy sounds like they’re building a CI/CD tool, however this couldn’t be further from it.
Wait a second… what?
Yeah, you read that right, with Deno Deploy they’re giving everyone a chance to deploy their Deno code, for free, on the cloud, as a service. No setup required.
You can sign up for free with your Github account (this is a very Github dependant service as of now), and you’re immediately forwarded to a page where you can create your first project. And once you do, you can quickly deploy a “hello world” example to get your feet wet:
Much like Heroku and Netlify, you get assigned a random URL when you create the project, and you can quickly deploy and start testing things out.
You can even configure your own domain to redirect to your project, and this is all for free. At least, during the beta phase. During the beta, they do have some limitations (which make total sense since they’re still developing the platform):
- 100.000 requests per day and 1k req. per minute.
- 512 Mb of memory, which can be low at times.
- A maximum of 20Mb deployment size.
- A limit of 1000 modules per deployment.
- And a few others which you can check here.
And as for pricing, all they say is that they’ll think about it once this thing is ready for production. Again, it makes total sense, right now it’s just a hugely expensive toy, but it’ll become a product pretty soon by the looks of it.
What makes this so unique?
While it’s true that we already have similar services that, at surface level, provide the same set of features, if you look a bit deeper you’ll notice some major differences.
Deno Deploy is not a Deno-specific Heroku. Instead, it’s a full-blown runtime that functions in a distributed fashion across 25 geographical regions and always handles your request with the closest one to your location.
While at the lower levels, we probably are dealing with usual concepts such as docker containers, or virtual machines, shared memory, and so on, at the user level, this is all abstracted from us.
We don’t need to think about infrastructure at all, this, if you will, could be considered as Runtime As A Service (RaaS for short), have we seen something like that before?
The deployment is all done directly from Github, but the kicker here is that you only deploy a single file. Which at first glance it’s a bit limiting isn’t it? A single file? What if I have a huge API project I want to deploy?
That’s not a problem, the deployment script will take care of that for you. All you need to worry about is providing the right entry point file. It took me 10 seconds to link this test repo and deploy it:
I didn’t have to worry about anything really, the code works as expected. As you can see it’s a variation of the “hello world” project they provide, but I added the ability to use a local function from another file, to test exactly how the deployment of complex projects would work:
And it works just fine. In fact, at first I had forgotten to specify the “.js” extension on the
import statement, and it wouldn’t let me deploy because there was a dependency it couldn’t find. How cool is that? I don’t have to deploy and test to find the problem.
Even further, thanks to the very critiqued (by me and others) distributed module system, you don’t even how to worry about dependencies either, they’ll all be handled by Deno like it normally does.
When will it be ready?
As of today, October 12th 2021 the system is still in Beta 2, which means it still needs a bit more development before it’ll be live. There is no release date set leads me to believe they’re still planning to add quite a lot of things into it before that happens.
What are they adding? As part of this being a runtime on its own they’re adding special methods and routines to help you deal with things such as I/O in a secure way. They recognize this is a separate runtime from the CLI you use locally — which is interesting if you ask me, it’s like a distributed version of the original — and provide as much documentation as they can.
This is definitely an interesting way to think about developing a web application. In the near future, your entire runtime will be optimized towards that task, and all you’ll have to do is push it to Github to have it running within seconds.