Protobuf vs. JSON: Speed, Size, Schema, and When to Use Each