ElixirConf 2023 - De Wet Blomerus - Building a globally distributed router

Discover how to build a globally distributed router using Elixir's unique features, including its plug architecture and built-in concurrency, to improve latency, scalability, and user experience.

Key takeaways
  • When building a globally distributed router, consider the impact on latency and physically route requests to the closest region.
  • A reverse proxy can be used to route requests and add latency without users noticing.
  • The Elixir programming language is uniquely well-suited for building a globally distributed router due to its ability to hold onto connections and handle many requests with little resources.
  • Building a router for a globally distributed application requires careful consideration of the different types of requests that need to be routed, the regions involved, and the data involved.
  • Using Elixir’s plug architecture and the Strangler pattern can help simplify the development of a globally distributed router.
  • When building a router, start with a simple architecture and iterate and refine as needed.
  • A globally distributed router can be used to improve latency and reduce the load on servers.
  • When dealing with complex routing scenarios, it may be necessary to have multiple nodes for redundancy and to handle failures.
  • The plug architecture in Elixir is designed to be easy to use and allows for easy insertion and removal of code.
  • The Strangler pattern is a technique used in Elixir to gradually replace legacy code with new code.
  • When building a globally distributed router, it’s important to consider the consistency and availability of the data involved.
  • Using Elixir’s built-in concurrency features can help improve performance and scalability.
  • A globally distributed router can be used to improve the user experience by reducing latency and improving the speed of responses.
  • When building a router, consider the different types of requests that need to be routed and the regions involved.
  • Elixir’s concurrency model can help to improve the scalability of a globally distributed router.