Skip to main content

Building Microservices on subp2p

The subp2p networking stack is not just for building monolithic applications. It is also a powerful platform for building decentralized, peer-to-peer microservices. By combining the different components of the SUBFROST networking stack, you can create a fleet of small, independent services that communicate with each other over a secure and resilient network.

The Core Components

Here are the key components you will use to build microservices on subp2p:

  • subp2p: The foundational networking layer that provides secure, peer-to-peer communication.
  • subrelay: The relay and name registrar that allows your services to be discovered and accessed from anywhere on the network.
  • subproxy: The bridge that allows your services to communicate with the traditional internet, and allows traditional applications to communicate with your services.
  • subtun: The peer-to-peer VPN that allows you to create a private, virtual network for your services.

A Decentralized Microservice Architecture

Imagine you want to build a decentralized e-commerce application. You could structure it as a set of microservices running on subp2p:

  • Product Service: A service that manages the product catalog.
  • Order Service: A service that manages orders.
  • Payment Service: A service that processes payments.
  • Web Frontend: A web application that provides the user interface.

Here's how you could deploy this architecture on subp2p:

  1. Deploy the Backend Services: Each of the backend services (product, order, payment) would be a standalone application that listens on a local TCP port. You would then use subproxy in reverse proxy mode to expose each of these services to the subp2p network with a unique .rail name:

    # Expose the product service
    subproxy --reverse-proxy localhost:8081 --register products.my-shop.rail --circuit p2p.subfrost.io

    # Expose the order service
    subproxy --reverse-proxy localhost:8082 --register orders.my-shop.rail --circuit p2p.subfrost.io

    # Expose the payment service
    subproxy --reverse-proxy localhost:8083 --register payments.my-shop.rail --circuit p2p.subfrost.io
  2. Deploy the Web Frontend: The web frontend would be a standard web application that communicates with the backend services using their .rail addresses. To do this, the web server would need to route its traffic through a subproxy instance running in SOCKS5 proxy mode.

  3. Create a Private Network (Optional): For added security, you could use subtun to create a private, virtual network for all of your services. This would ensure that your services can only communicate with each other, and not with the public subp2p network.

Advantages of Building on subp2p

Building your microservices on subp2p has several advantages over traditional, centralized architectures:

  • Decentralization: Your application is not reliant on a single, central server. This makes it more resilient to censorship and single points of failure.
  • Security: All communication on the subp2p network is end-to-end encrypted, and the use of .rail names provides a secure way to discover and access services.
  • Flexibility: The modular components of the SUBFROST networking stack allow you to create a wide variety of network topologies and application architectures.
  • Interoperability: Your services can easily communicate with any other service on the subp2p network, regardless of where it is running or what language it is written in.

By providing a robust and flexible set of networking primitives, subp2p empowers developers to build the next generation of decentralized applications and services.

Microservices in SUBFROST

The subfrost-cli provides a set of commands for creating and managing microservices on the subp2p network. These commands allow you to:

  • Create a new microservice: The subfrost-cli service create command creates a new microservice and registers it with a subrelay.
  • List microservices: The subfrost-cli service list command lists the microservices that are registered with a subrelay.
  • Delete a microservice: The subfrost-cli service delete command deletes a microservice from a subrelay.

Creating a Microservice

Here is an example of how to use the subfrost-cli to create a microservice:

subfrost-cli service create --name my-service --proxy localhost:8080 --register my-service.rail --circuit p2p.subfrost.io

This command will create a new microservice called my-service that proxies traffic to localhost:8080. It will also register the name my-service.rail with the subrelay at p2p.subfrost.io.