global file system

Postresql gives devs a global database which is awesome…

What if we also had a Global File system ?

Here is an example project to demonstrate what i mean: GitHub - mosuka/phalanx: Phalanx is a cloud-native distributed search engine that provides endpoints through gRPC and traditional RESTful API.

I could runs this on fly as a container, but its made up of 3 moving parts:

  • etc for discovery.

  • minio

  • the main golang service.

This golang project gives you a searchable virtual file system.

It uses GRPC, and HTTP.

phalanx/index.proto at main · mosuka/phalanx · GitHub shows the API.

What if something like this was a “standard” service on fly ?

I thought of a better way.

What if we could use the same trick that fly use for PostgreSQL ?

At the moment, the Fly Gateway detects a write from the client, and then forces the the clent to use the Writable instance. The detection can be made a standard by uses a environment Or a HTTP call to the Developers code. Somelike like “IsWritable”. On each call into a developers server, the fly gateway can just ask this. We should use a event for on change of course… so that when the dev flips which instances are writeable the gateway is told via fly NATS or other…

Then any DEV could write a Server that conforms to that Header or HTTP standard.

When a write happens to their Write instance, the evs code can put the change onto a BUS like Cloudevents.
Anything can be put on the bus. A Files ( chunked ), a proto. Anything…

I ted to code in golang and so would use sdk-go/protocol/nats_jetstream/v2 at main · cloudevents/sdk-go · GitHub

CloudEvents · GitHub has support for about 10 of the mainstream languages.