My Solution for Design a Domain Name System

by cipher_pulse87

System requirements


Functional:

List functional requirements for the system (Ask the chat bot for hints if stuck.)...


  1. DNS system : resolution : WWW.Google.com ---> Server IP address
  2. CRUD operations



Non-Functional:

List non-functional requirements for the system...


  1. Security not temper this ip address
  2. High Availability : In disaster also it should be present
  3. Low latency : Resolution operations should p99>10 ms
  4. High Scalability



Capacity estimation

Estimate the scale of the system you are going to design...


Number users : 1B : 100 M DAU :


QPS : 100 M/100,000 = 1000 (Number of request per seconds)



API design

Define what APIs are expected from the system...


Get /dns

{

dname : XX

}

--->

{

Ipaddress, ipaddress

}


Database design

Defining the system data model early on will clarify how data will flow among different components of the system. Also you could draw an ER diagram using the diagramming tool to enhance your design...


Doname :


ServiceName ServiceID Ipaddress

domain.name. XXX XXX



High-level design

You should identify enough components that are needed to solve the actual problem from end to end. Also remember to draw a block diagram using the diagramming tool to augment your design. If you are unfamiliar with the tool, you can simply describe your design to the chat bot and ask it to generate a starter diagram for you to modify...


  1. Client
  2. Domain Resolver Service
  3. Domain Provider Service
  4. Config storage



Request flows

Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...


  1. Client type domain name
  2. The domain name resolver service gets the request and return the IP from config store
  3. With IP address :client can request to original server
  4. Domain Name Mapper keep updating the config store in change of Ipaddress



Detailed component design

Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...






Trade offs/Tech choices

Explain any trade offs you have made and why you made certain tech choices...


Tradeoff:

  1. cache the domain name at browser : depends on the browser network, storage size. Between latency vs consistency
  2. How frequently domain name should be updated


Failure scenarios/bottlenecks

Try to discuss as many failure scenarios/bottlenecks as possible.


  1. Latency critical, needs to ensure domain resolution should be fast
  2. IP address can be unreachable so domain name resolver service gets retried for another IP



Future improvements

What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?


  1. Making regional so domain name resolver gets call near to user locations