Design a URL shortener like bit.ly. Address: (1) Functional requirements (shorten, redirect, analytics), (2) Non-functional (low latency, high availability, scale to 100M URLs/day), (3) API design (REST endpoints), (4) Database schema (SQL vs NoSQL choice), (5) Short URL generation algorithm (hash vs counter + base62), (6) Caching strategy (Redis), (7) Rate limiting. Estimate storage for 100M URLs/day for 5 years.