Back to Projects
Shopee

Platform Library Engineering & Adoption

Built reusable platform libraries (caching, circuit breaker, rate limiter) and a Library Management System to improve engineering consistency across teams during Shopee's Go migration.

GoRedisMemcachedMicroservices

Problem

As Shopee migrated toward Go services, common engineering patterns like caching, circuit breaking, and rate limiting became fragmented across teams. Different services implemented these patterns inconsistently, creating maintenance burden and reliability risk.

My Role

Developed reusable infrastructure libraries, participated in library adoption strategy, and built management tooling for dependency visibility and upgrade planning.

Architecture / Approach

Built a suite of reusable platform libraries (double-layer cache, circuit breaker, rate limiter) with standardized interfaces. Created a Library Management System providing visibility into service adoption, dependency mapping, library version usage, and documentation.

  • Reusable libraries with standardized interfaces: double-layer cache, circuit breaker, rate limiter
  • Library Management System for adoption tracking and dependency mapping
  • Version tracking and upgrade visibility across services
  • Centralized library documentation

Architecture Diagrams

Platform Library System

flowchart LR
    PT[Platform Team]
    PT --> DLL[Double Layer Cache Lib]
    PT --> CB[Circuit Breaker Lib]
    PT --> RL[Rate Limiter Lib]
    DLL --> LMS[Library Management System]
    CB --> LMS
    RL --> LMS
    LMS --> A[Service A]
    LMS --> B[Service B]
    LMS --> C[Service C]
    LMS --> V[Version Tracking]
    LMS --> U[Upgrade Visibility]
    LMS --> D[Dependency Mapping]

Key Decisions

  • Prioritized engineering consistency over per-team optimization
  • Invested in visibility tooling to support safer library upgrades
  • Reduced duplicated implementation effort by centralizing common patterns

Result

Improved engineering consistency across teams, achieved better visibility into service dependencies, and reduced friction for library rollout and upgrades.

What I Learned

Learned that reusable libraries succeed when paired with visibility tooling — teams adopt shared libraries more readily when they can see version usage, track dependencies, and plan upgrades safely.


Back to Projects