Temporal icon indicating copy to clipboard operation
Temporal copied to clipboard

Fast Track Temporal Internal Replacement With TemporalX For Production

Open bonedaddy opened this issue 4 years ago • 0 comments

Note

This is a simply a public issue to track RTrade swapping out the underlying infrastructure of our service for TemporalX to give users of our publicly deployed Temporal service a better UX, and to make management of it better. It will also prevent common exploits being done against go-ipfs to drop performance.

This doesn't meant to use this repo you need TemporalX, and the integration with go-ipfs will still be available, but in an alternate branch.

Overview

Running garbage collection on our production IPFS nodes is beyond unfeasible to the point that nuking the data directory with rm -rf and resyncing via IPFS Cluster is faster than garbage collection. As indicated by the immediate closure of #7213 on go-ipfs and from a github search on go-ipfs, there doesn't appear to be any activity involved in making GC feasible at scale.

While it's been the plan to remove go-ipfs from our production deployment and use TemporalX it's clear this needs to be fast tracked, because:

  1. rm -rf & resync is an annoying process, and increases disk IO, bandwidth, etc...
  2. We can't run GC at all
  3. TemporalX is much faster, and the UX of our service will be better
  4. No need to constantly monitor the syncing IPFS node for problems
  5. Overall easier management of our production infrastructure
  6. Makes the service more competitive as it gives us a performance edge not possible by any other IPFS pinning service

To do this the following tasks need to be done:

  • Minimal ipfs node to expose IPFS HTTP API services
    • The minimal node will immediately send a pin request to TemporalX the moment an IPFS HTTP API request is done
    • This will allow us to expose IPFS HTTP API services as we do now without needing to run major IPFS nodes
    • This minimal node will also allow us to to easily continue with the "only hash" check we do now that prevents double charging users.
  • Cut a v3 release of Temporal which uses TemporalX instead of go-ipfs for
  • Modify ipfs-pump to enable pumping data out of go-ipfs into TemporalX

bonedaddy avatar Apr 25 '20 05:04 bonedaddy