Start a local Cloud
The best way to learn something is by doing it, and that's exactly what we're going to do. All you need is npm
. While there are other methods, we'll stick to npm
as it's the simplest and most widely available, even on Windows.
What we'll do is install dreamland
, a project hosted on github.com/taubyte/dreamland that allows you to run a Taubyte-based Cloud Computing Platform locally. It's an excellent tool for local development and testing, but we'll use it in a slightly different way.
Run the following command to install dreamland:
Now, you should have the dream
command-line tool available. Let's start a cloud:
You can ignore any ERROR messages you might see about
seer
.
Once you see SUCCESS
, it means your cloud has been fully started.
A first look¶
First, let's explore what's happening using the command line. Run:
This should output something like:
┌───────┬─────────────────────┬────────┬───────┐
│ Nodes │ elder@blackhole │ p2p │ 14051 │
│ ├─────────────────────┼────────┼───────┤
│ │ tns@blackhole │ http │ 14466 │
...
This lists all the running nodes. Each node could be running a specific protocol (e.g., tns or substrate) and will reflect that. Others will have a role like elder (bootstrap node) or client.
Also, @blackhole
indicates that the node is part of the blackhole universe. Each universe represents a cloud and is cryptographically isolated from any other cloud on the peer-to-peer layer.
On the right side, you can see the TCP ports each node is using along with the number of copies.
Now, let's leave the terminal and head to console.taubyte.com where you're going to locate the Dreamland button. Then click on it.
The button will be disabled or hidden if dreamland is not detected.
Now, locate the sidebar: (1) click on Network, then (2) on blackhole.
After a few seconds, you should see something similar to:
On the network graph, which you can manipulate, you can see all the same nodes as before from the CLI.
If you hover over any node, it'll display the TCP ports it's using.
What's with the mesh network?¶
Hosts, or as we call them, Nodes, form a Taubyte-based Cloud Computing Platform and communicate with each other using a peer-to-peer network. Running locally through dreamland, all the nodes are interconnected, although this might not always be the case in production, especially if you have many nodes.
The peer-to-peer nature of Taubyte-based clouds gives them important characteristics like resilience and redundancy.
Protocols¶
While in production a node can run multiple protocols by defining a shape (a term reminiscent of the internal name tau
had: odo
, a reference to the shape-shifting Star Trek character), in dreamland, each node runs only one protocol. This design choice simplifies protocol debugging.
Without further ado, here's what each protocol does:
auth
handles token validation and secret management.tns
ensures project registry consistency across the cloud.seer
is responsible for DNS resolution and load balancing.patrick
bridges git events into CI/CD jobs.monkey
executes CI/CD jobs.hoarder
manages replication.substrate
handles request processing and serving.gateway
manages L7 load-balancing.
The other nodes¶
The other nodes, referred to as Simples (admittedly, not the best name), include elder
and client
. While they are not crucial for the purpose of this article and could be excluded when starting the universe, it's helpful to understand their intended roles:
elder
nodes are used for bootstrapping. Sincedreamland
interconnects all nodes, anelder
is included for testing purposes when using libdream.client
nodes are lightweight and can be used to test protocols or peer-to-peer services deployed on the cloud.
Note: Some
fixtures
, which will be covered in another article, may require Simples to function correctly.