Frequently answered questions about Golem Cloud.
Golem Cloud is an invincible cloud platform for serverless workers. Thanks to the new paradigm of durable execution, workers on Golem Cloud survive hardware failures, updates, and upgrades, and can run forever, providing developers with powerful new ways to build modern cloud applications.
Golem Cloud is in Developer Preview, which means you can built pre-production applications on Golem Cloud, but you should not deploy to production. If you have an urgent need to deploy an application to production, you should first contact us.
We are still working on the pricing model for Golem Cloud, but factors that will be considered include active workers, memory per worker, total workers (including suspended workers), and lifespan of workers. Our goal is to make Golem Cloud so affordable you can build as much of your infrastructure as you like using invincible serverless workers.
Most use cases fall into one of two categories: workflows, which are potentially long-running, stateful sequences of steps that must be executed as part of some business or AI process; and actors, which can statefully store and process information in a distributed fashion.
Examples include:
Golem Cloud is built on WebAssembly. Any WebAssembly program can be deployed to Golem Cloud, and Golem Cloud will execute it durably until the program is done (some programs may execute forever).
A bit like continuous snapshotting, but radically more efficient, Golem continuously persists the running state of each serverless worker, and transfers this state to new machines as necessary in response to hardware failures, hot spots, upgrades, and updates.
In the Developer Preview, Golem Cloud runs in Amazon Web Services (AWS). Golem Cloud will be available both on-premise and in other cloud providers. If you would like to be an early tester of the on-premise edition, please contact us.
If a node running your worker gets downed, due to hardware failure, updates, or upgrades, or becomes unresponsive due to excessive load on a given node, Golem Cloud will transparently relocate your worker, including its state, to another node, which allows your worker to resume at the exact point where it left off.
Golem Cloud restores the state of the worker exactly, allowing your worker to continue where it left off. If, however, your worker was calling a web service during the failure event, but that call had not yet completed, then Golem Cloud replays this call, in order to guarantee its completion.
Therefore, with respect to calling web services, you should assume at least once semantics, but limited to the call during which the failure event occurred. Calls that happened prior to the last call are not replayed, only the “in-flight” call is replayed.
Many web services provide a robust way for obtaining exactly once semantics even in the presence of a duplicate service call. For example, Stripe’s API for payment processing allows you to create a payment intent, which is then used to make the charge in a subsequent call. On Golem Cloud, this two-phase protocol guarantees that the payment charge happens exactly once.
We will publish benchmarks before commercial launch, but Golem Cloud is engineered to launch new workers in milliseconds (or faster), and is suitable for low-latency applications.
In the Developer Preview, there is no control panel for Golem Cloud, and you may only interact with Golem Cloud through the command-line interface or the REST API. When Golem Cloud commercial launches, we anticipate having a full-featured management portal for each account.
Absolutely not! Golem Cloud is vendor-neutral by design. There is no SDK, library, or framework. You can bring your own software libraries. Golem Cloud will run any kind of application written in any programming language, so long as you can compile it to a WebAssembly program.
The top languages for developing WebAssembly programs are Rust, C/C++, and Go, although an increasing number of programming languages have experimental support for WebAssembly.
See our guide to building templates for more information.
Your serverless workers are just ordinary code written in the programming language of your choice, so you can probably unit test them without even needing to compile them to WebAssembly. In the near future, we intend to provide a local version of Golem Cloud to help developers do end-to-end testing without needing network connectivity.
The top languages for developing WebAssembly programs are Rust, C/C++, and Go, although an increasing number of programming languages have experimental support for WebAssembly.
See our guide to building templates for more information.
The primary alternative to Golem Cloud is Do-It-Yourself, typically using event-sourcing to support stateful logic that is resilient to hardware failures, updates, and upgrades. Other alternatives include Temporal.io, Uber Cadence, AWS Step Functions, and other workflow solutions; as well as Akka Cluster and similar solutions for managing both distributed state and computation.
Golem Cloud is targeting more sophisticated use cases that benefit from invincible, immortal, and reactive workers with durable state and low latency. If you do not need these features, then you are better served by existing providers.
Compared to solutions like Azure Durable Functions or AWS Step Functions, Golem Cloud is pure code solution that does not require you to write your application in any specific way. A programmer can write simple code in any WebAssembly language and deploy it on Golem’s invincible cloud without having to adopt any specific architecture or use any specific SDK or library.
Golem Cloud is targeting more complex use cases that benefit from invincible, immortal, and reactive workers with durable state. If you do not need these features, then you are better served by existing providers, which focus on short-lived, stateless workers without fault-tolerant guarantees.
Like Fastly and Fermyon, Golem Cloud is part of a growing ecosystem around WebAssembly that provides you with next-generation ways to build and deploy cloud-native applications.
Golem Cloud is built on WebAssembly, a formally-verified specification that provides capability-based sandboxing and complete per-instance isolation. Interacting with active workers through the REST API requires an API key with appropriate permissions. All data for active workers is stored in memory, making external access impossible, and replicated for redundancy.
Before the commercial launch of Golem Cloud, we anticipate having full at-rest encryption using customer-specific keys that makes it impossible for anyone but the customer to interpret the data being stored in Golem Cloud.