Reliable transfer and migration systems

Resumable uploads, a faster migration path and a dedicated download service. All three sit where users notice reliability and speed straight away.

Organisation
Zoho Corporation
Period
2018 – 2020
Area
Product engineering

Context

A notes product lives on moving user content in and out: uploading it, importing it from a competitor, downloading it back. Each is a place where a failure is immediately visible.

The problem

An interrupted upload that restarts from zero is a data-loss event as far as the user is concerned. A migration that runs through conventional per-item API calls is slow enough to deter people from switching at all. And download latency is felt on every single request.

Constraints

  • Uploads had to survive interruption and user-initiated pauses without losing transferred data.
  • Migration had to handle another product's export format and volume.
  • Improvements had to work within the existing product.

My contribution

Shared ownership stated as such. Nothing here claims sole authorship of a platform.

  • Built pause-and-resume support for file uploads, allowing interrupted transfers to continue without data loss.
  • Built a migration path from Evernote to Zoho Notebook that avoided conventional API round-trips, reducing migration time.
  • Designed a dedicated download-serving capability that optimised request handling and reduced download time by approximately 30%.

Approach

  1. Make transfer state explicit and durable, so resuming means reading a record instead of guessing what arrived. It also means a deliberate pause and a dropped connection are the same operation.

  2. Bypass the per-item API path for migration. The bottleneck was the number of round-trips, not the work inside each one, so tuning them individually would not have moved the result.

  3. Separate download serving from general request handling, because a path with different characteristics is easier to optimise once it is no longer sharing one.

Decisions that mattered

The ones with a real cost on the other side.

Pause and recovery as one mechanism

A deliberate pause and a dropped connection leave the system in the same state. Building one mechanism instead of two removed a class of divergence between paths that are meant to behave identically.

Outcome

Transfers that survive interruption, a materially faster migration path from a competing product, and roughly 30% lower download time.

What generalises

  • Resumability comes from state you deliberately recorded, not from inference.
  • Optimise the dominant cost. The number of round-trips usually matters more than how fast each one is.