System Design Designing Retries Without Taking Down Your System Designing Retries Without Taking Down Your System