Unikraft Launches KraftCloud: Never Pay for Idle Again
Hi everyone, it’s Alex, Simon, Felipe and the team from Unikraft.io
We have built kraft.cloud, a millisecond cloud platform, where apps and services cold start, scale to zero and autoscale in milliseconds, ensuring you never pay for idle, can efficiently cope with traffic peaks, and don’t have to deal with complex cold start issues.
The platform (and we) come from research in the area of lightweight virtualization — trying to ask the question of how efficient cloud platforms could (or should) be while still retaining strong, hardware-level isolation. KraftCloud is the result of this research followed by years of building the Unikraft open source project (www.unikraft.org).
KraftCloud is based on unikernels, extremely specialized virtual machines, built on top of the Linux-API compatible Unikraft project. If you’ve heard of unikernels in the past, you’ve likely come across properties like millisecond cold start, small memory consumption, and small TCB, to name a few. You may have also heard of downsides like difficulty using them, debugging them, monitoring them or deploying them in the cloud — we’ve been hard at work tackling these issues.
KraftCloud leverages Unikraft unikernels, but also comes with a custom-built controller that can be reactive in millisecond scales and can scale to thousands of instances on a single server. We also have integrations with Dockerfiles, Terraform and Kubernetes, and the ability to deploy within hyperscaler infra. The end result is a platform where
- Cold starts take milliseconds (e.g., NGINX boots in 15ms)
- Scale to Zero (and scale back up) also takes milliseconds
- Autoscale takes milliseconds so you can transparently cope with fast peaks
- We can put 1000s of instances on a single server, reducing cost and carbon footprint
We’re in closed beta at the moment and are actively handing (free) access tokens via the sign up form here: http://kraft.cloud/signup
We would really appreciate as much feedback as humanly possible: what you like, what you don’t like, what isn’t clear, what we’re missing, what’s broken, etc (you can find more information in our FAQs: https://unikraft.io/faq, or this blog post: https://unikraft.io/blog/kraftcloud/
Thanks so much for reading all the way to the end and looking forward to your comments! Looks awesome! Trying to use it for a toy project, I realized you almost always need some persistence layer. I see you support volumes and you have some guides about deploying databases. How does that work? Are they also "scale to zero"? Why is Postgres special? Referring to the "contact us" mention. Or if I want to "bring my own DB", what are the latencies to other providers? Can I somehow host a DB in the same datacenter as you are? What do you recommend for serious usage when I want low latencies app <-> DB and I don't want to lose any data? :-) Another question - is there something like cron? Volumes are persistent, block devices which you mount to a path and are initialized and de-initialized by the kernel which we boot up and shut down, respectively, based on autoscale/scale-to-zero configuration. This means that if your application uses said volume it will be able to access it during its online-lifetime. That said, because they are persistent, it means that they are not as ephemeral (or "scale-to-zero") as the instance itself on KraftCloud. Because KraftCloud leverages Unikraft, a unikernel library OS project, we are single-process. Postgres is multi-process since it uses the fork() syscall. If you require Postgres, we can set it up for you as a managed service. That said also, we are currently working on supporting fork() and this should become available in the next few weeks/end of April. Re: bring your own DB: yes. We are setting up metros in many popular hyperscalers and IaaS vendors and DC zones. This means there should be no egress fees and you'll have data locality. For serious deployments, be close to your data. If you get in contact (alex@unikraft.io), we can discuss further how we are approaching this. And yes, we are working on cron, this will translate to setting up an instance to start at a regular interval and not auto-restart it (so it scales-to-zero). :-) KraftCloud is pretty awesome! I've only used it for a few days, learning/toying around but I will be using it for my next project. I don't know the right answer because pricing is hard to figure out. But free to $250 a month is a steep jump. I see myself needing more than free in the near future but $250 a month is a big jump when you're talking a small 1 person business. Maybe there could be more incremental tiers or something? A rough guess of a nice pay tier for those who need more than free but not as much as the $250. Maybe something in the $20 to $25 range? The offering is a bit confusing. kraft.cloud seems to be a different product than unikraft.io . Kraft.cloud is in beta and doesn't have pricing. I could be mistakened. Hi, yes, we'll offer a "developer" tier in that rough price range. Very much my thoughts exactly. You should seriously consider a pay as you go plan that bills by minutes or some metric. This is actually what I was expecting when I went to pricing. Definitely! We plan on having a pay-per-millisecond pricing model as well. There's an initial free tier that, but once limits are reached, we will switch to pay-as-you-go plan. Our next offering ("developer") is still work-in-progress, and we're setting it initially for our early customers with much larger workloads who need autoscale more than they need scale-to-zero. Their FAQ says 1. Scale-to-Zero: don’t ever pay for idle again; So I believe this is true? Where are you seeing a pricing page anyway? Yes, we'll have pay as you go pricing plans. This is exiting tech. I tested their button demo at KubeCon. It’s crazy to be able to access a web app that is not running and not even notice that it’s a cold start. Awesome work! I've been playing around with Unikraft for a while now, support it natively on most of my C++ projects (at https://github.com/sourcemeta) and already deploying a bunch of serious things to KraftCloud. The whole experience is stunning. Very easy to use and VERY fast. This looks amazing. 1- Is there an option to run your own "kraftcloud" in your own cloud account? 2- How does this compare to companies leveraging eBPF to squeeze more performance from the Kernel? Hi, 1. Yes. We're essentially a baremetal solution. Either we run it on your behalf (this is kraft.cloud), or we deliver an ISO or AMI and this can be installed on-prem/cloud-prem. This latter solution is our enterprise offering. 2. eBPF used in this way, I feel, has become a symptom of the problem that we're trying to solve at Unikraft: the bloated Linux- (and cloud native-) stack. In the end, you're adding more tools or doing more tricks to try and do computationally less since performance and running faster is about performing less operations in the critical-path. Unikraft approaches the problem space differently: bottom up (app first, then dependencies, then select OS libraries/primitives based on required syscalls) as opposed to top-down (taking away from Linux, its distros, removing functionality, making short-cuts, etc.). Hail KraftCloud!!!!
This brings us more closer to the future of Cloud Computing- Unikernels. Thanks for such amazing supportive open source community-Unikraft. I've been an active member of Unikraft Project on Discord server since last 5-6 months, participating in hackathons and also an applicant of GSoC 2024 Program.
Would love to play with the KraftCloud while working on my toy project and provide my feedback. I take you have different unikernels for different technologies? I pay roughly 50$/m for 4 small machines. I need to handle scaling myself but I constantly have requests coming in. If I can cold start my Rust & Python services and scale as much as needed without my intervention, that'd be great but I doubt it will be competitive on price vs cheap VPS. I wish you all the best and hope you become the new standard! This looks awesome, congrats on the launch. I've been pondering this type of issue for awhile, not from an application standpoint, but from a dev environment where I want more resources than my laptop has, but it'll be very bursty workloads and I want them to just pause when I'm not using them. So I'll be excited to see how this tech develops... good luck! Awesome work! Could you support GPU like modal.com? Hardware acceleration with unikernels could be tricky. Including acceleration libraries & device drivers could severely impact the size and complexity of the resulting binary image. API remoting though could be something. disclaimer: We're building a solution based on API remoting, and we have an example integration with Unikraft, the unikernel tech that kraftcloud is based on. Do you mean CUDA API hijacking? not necessarily -- CUDA produces many function calls, which in API remoting setups could degrade performance -- in our case, we draw the abstraction line a bit "higher" in the stack so it's more like a "functional" API remoting -- eg. image classification Gotcha, that makes sense. Looks great! Would this work for hosting databases too? I found the biggest annoyance and expense on my "infrequently accessed" side projects are databases, which are almost always idle. Thanks and, yes it does! We have a whole section in our documentation's guides section on example usecases with database: https://docs.kraft.cloud/guides/#databases They work exactly as you suggest, they scale-to-zero when no requests are made and data can be safely stored/transactioned in persistent volumes on the platform too. Wow, you are responding to a poster who coincidentally has the same name as your main investor. Truly an amazing coincidence. Both the twitter above and the HN user posted the link to findtime.fberge.com Note everyone it's probably a big coincidence! These two posters most likely do not know each other. This exchange is totally legit. If this applies to the dbs too then it's quite unusual and worth shouting about, I'm not aware of other providers which offer that! Looking at https://docs.kraft.cloud/guides/mariadb/ with the Docker stuff in there I'd half assumed maybe DB instances worked differently from unikernel instances or something Also because of this other comment: > Because KraftCloud leverages Unikraft, a unikernel library OS project, we are single-process. Postgres is multi-process since it uses the fork() syscall. If you require Postgres, we can set it up for you as a managed service Hi, Felipe from Unikraft here. Yes, it applies to DB instances too (all instances are the same on KraftCloud with respect to this). Regarding multi-process, at present Unikraft has partial multi-process support: some multi-process apps work, others not yet -- we're hard at work completing this support.