3 ms·
We actually run into problems that are similar to what you'd have with SRV records. Fly.io apps can define different service "handlers" (like TLS and HTTP). If
by mrkurt 6y ago
We actually run into problems that are similar to what you'd have with SRV records.
Fly.io apps can define different service "handlers" (like TLS and HTTP). If you want to, you can accept TCP connections and bypass our logic. Which is great and flexible.
The problem is, when someone is deploying a new version of their app where they _change_ one of those things, we have to e really careful about how we (a) load balance and (b) decide to do things like TLS. If we're not careful we can end up sending the wrong type of connection to a new VM that's expecting something else.
SRV records sound like they'd have it worse. If you do a DNS lookup to detect something like http2, the IP you connect to _can't_ do anything else. It's much simpler / safer to negotiate stuff like that at connection time.
- SahAssar 6y agoThat all assumes that you use the same port for all those things, right? Which is one of the points of SRV, to not have to squeeze everything into one canonical port. With a SRV record you could route https to whatever port suited you and rotate that out when rolling out changes,
- mrkurt 6y agoYeah that's feasible, although it still sounds more complicated than doing per connection protocol negotiations to me. But I like ALPN so I'm biased.