Distributed Systems

Distributed Storage Platform

gRPC/REST backend services for a peer-to-peer storage product

GogRPCRESTSDKProtobuf

Overview

Built backend platform components in Go for a distributed storage product, including gRPC and REST APIs, a reusable client SDK, file-processing workflows, and signed request handling for downstream consumers.

Scope

This was platform-layer work — the infrastructure that product features are built on top of. The goal was to create a stable, well-typed API surface that other teams could depend on without needing to understand the internal storage mechanics.

Key Components

gRPC Service Layer

Defined protobuf schemas for all internal RPCs. Type safety across service boundaries caught contract breakages at compile time rather than in production.

Client SDK

A reusable Go package wrapping the gRPC client with connection pooling, retry logic, and request signing baked in. Downstream services import the SDK; they don’t need to know anything about the transport.

client, err := sdk.NewStorageClient(sdk.Config{
    Endpoint:   os.Getenv("STORAGE_ENDPOINT"),
    KeyID:      os.Getenv("SIGNING_KEY_ID"),
    PrivateKey: signingKey,
})

obj, err := client.Get(ctx, "bucket/object-key")

Signed Request Handling

Every downstream request is signed with HMAC-SHA256. The service verifies the signature and rejects replayed requests using a nonce cache backed by Redis.

File Processing Workflows

Chunked upload and reassembly pipeline for large objects, with checksum verification at each stage to detect corruption in transit.

Technical Stack

Go · gRPC · Protocol Buffers · REST · HMAC-SHA256 · Redis · PostgreSQL · Docker