Hello Universe
You've now built a simple microservice with wasmCloud that uses common capabilities (handle HTTP requests, interface with a key-value store) that many cloud native applications need. So, why wasmCloud? What makes this application that you built different from similar apps on other platforms? wasmCloud is an easy-to-use platform that's quick to get started with, which is essential for a great and intuitive developer experience, and this project extends far beyond "Hello World." This page emphasizes the intention behind the design of wasmCloud, and the benefits that follow after you've built your application.
Now that your microservice is running, consider what you may have to do to actually deploy that to production in the cloud. If you're building this application in a modern language and packaging it up into a container, you may have the following hurdles to consider before you even get to the point of writing your features in the first place:
The only time you need to recompile your application is if you want to add new functional logic. All of the below questions don't need to be considered until after you've already built your application with wasmCloud, and can be freely changed at runtime whenever needed.
- What CPU architecture am I going to be deploying to? Do I need to build for x86, ARM, or both?
- What operating system am I going to be deploying to? Do I need to support more than just Linux?
- What cloud am I going to deploy to? What if I need to deploy to multiple clouds?
- Do I need to be able to scale multiple instances of my application? How many? How will I handle communication between instances of my application?
- Do I need to be able to distribute my application across multiple machines? How will I handle high availability or failover?
CPU Architecture and Operating System Support
wasmCloud applications compile to WebAssembly, which is a completely platform agnostic binary format. The wasmCloud runtime itself releases binaries for Linux, Mac, Windows, x86_64, and aarch64 machines.
Cloud Support
wasmCloud applications can be deployed to many cloud, edge, bare-metal, or on-prem machines due to the portability of Wasm and broad support of operating systems and architectures by Wasmtime, our WebAssembly runtime of choice. This means that you can deploy your application to any cloud provider, or even to your own datacenter, without having to worry about the underlying infrastructure.
Scaling
Each wasmCloud component is a self-contained unit of execution. This means that you can scale your application vertically by simply running more instances of your component. The wasmCloud runtime will automatically load balance requests across all instances of your component.
Distributed Deployment
wasmCloud applications can be distributed by running multiple instances of the wasmCloud runtime. Whether you're running a single instance of the runtime on a single machine, or multiple instances of the runtime across multiple machines, the wasmCloud runtime will automatically load balance requests across all instances of your application components. You do not need to configure load balancing, service discovery, or failover requirements for your application.