54
Spotify’s Love/Hate Relationship with DNS Lynn Root | SRE | @roguelynn

Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Spotify’s Love/Hate Relationship with DNS

Lynn Root | SRE | @roguelynn

Page 2: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

$ whoami

Page 3: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

why we love DNS

• It’s boring • Stable query language • Free caching • Service discovery

Page 4: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

agenda—

Page 5: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

agenda

• Our infrastructure • Our DNS curiosities • What we’ve learned • Future of DNS @ Spotify

Page 6: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Our Infrastructure—

Page 7: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 8: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 9: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 10: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 11: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 12: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 13: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 14: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Record Generation & Deployment—

Page 15: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

/msg #sre DNS DEPLOY!

DNS@Spotify—

Page 16: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 17: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 18: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 19: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 20: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 21: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 22: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 23: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Service Discovery—

Page 24: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 25: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Namelessservices.spotify.net

Page 26: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Monitoring—

Page 27: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 28: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 29: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 30: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Global Server Load Balancing—

Page 31: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Responding to the DynDNS attack—

Page 32: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Response to DynDNS attack

• Monitoring dashboards & VPN were inaccessible • Internal SSO login inaccessible • Pagerduty also affected

Page 33: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Response to DynDNS attack

• Couldn’t easily access DNS data repo • 3-year-old manual deployment documentation

Page 34: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Response to DynDNS attack

• Internal services ➡ removed GSLB mapping • Spotify clients ➡ Route53 • Websites ➡ Route53

Page 35: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Our DNS Curiosities—

Page 36: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Client Error Reporting—

Page 37: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 38: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DHT Ring—

Page 39: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 40: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

Page 41: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

lon6-storage-a5678.lon6.spotify.net:1234

tracks.1234.lon6-storage-a5678.lon6.spotify.net

Page 42: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Microservice lookups—

Page 43: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

$ dig +short dnsresolver.roles.lon6.spotify.net

10.1.2.3

10.4.5.6

10.7.8.9

$ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

ash2-dnsresolver-a1337.ash2.spotify.net.

ash2-dnsresolver-a0325.ash2.spotify.net.

ash2-dnsresolver-a0828.ash2.spotify.net.

Page 44: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

$ dig +short dnsresolver.roles.lon6.spotify.net

10.1.2.3

10.4.5.6

10.7.8.9

$ dig +short -t PTR dnsresolver.roles.lon6.spotify.net

lon6-dnsresolver-a1337.lon6.spotify.net.

lon6-dnsresolver-a0325.lon6.spotify.net.

lon6-dnsresolver-a0828.lon6.spotify.net.

Page 45: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

What we’ve learned—

Page 46: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Differences in Linux distros—

Page 47: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Scaling is hard—

Page 48: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Dropped Responses—

Page 49: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Docker—

Page 50: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

The future of DNS @ Spotify—

Page 51: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

Ephemerality—

Page 52: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

DNS@Spotify—

DNS

Page 53: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

recap

• On-premise infrastructure • Leveraging DNS beyond its intentions • It’s always DNS • Handing off the responsibility

Page 54: Spotify’s Love/Hate Relationship with DNS · DNS@Spotify — $ dig +short dnsresolver.roles.lon6.spotify.net 10.1.2.3 10.4.5.6 10.7.8.9 $ dig +short -t PTR dnsresolver.roles.ash2.spotify.net

thanks!

Lynn Root | SRE | @roguelynn