Asynchronous workflows help reduce request times for expensive operations that would otherwise be performed in-line. They can also help by doing time-consuming work in advance, such as periodic aggregation of data. Message queues<br />Message queues receive, hold, and deliver messages. If
Relational database management system (RDBMS)<br />A relational database like SQL is a collection of data items organized in tables. ACID is a set of properties of relational database transactions. Atomicity - Each transaction is all or nothing<br />Consistency - Any transaction wil
Separating out the web layer from the application layer (also known as platform layer) allows you to scale and configure both layers independently. Adding a new API results in adding application servers without necessarily adding additional web servers. The single responsibility principle advocat
A reverse proxy is a web server that centralizes internal services and provides unified interfaces to the public. Requests from clients are forwarded to a server that can fulfill it before the reverse proxy returns the server's response to the client. Additional benefits include: In
Load balancers distribute incoming client requests to computing resources such as application servers and databases. In each case, the load balancer returns the response from the computing resource to the appropriate client. Load balancers are effective at: Preventing requests from going t
A content delivery network (CDN) is a globally distributed network of proxy servers, serving content from locations closer to the user. Generally, static files such as HTML/CSS/JS, photos, and videos are served from CDN, although some CDNs such as Amazon's CloudFront support dynamic content. The
A Domain Name System (DNS) translates a domain name such as www.example.com to an IP address. DNS is hierarchical, with a few authoritative servers at the top level. Your router or ISP provides information about which DNS server(s) to contact when doing a lookup. Lower level DNS servers ca
CAP theorem In a distributed computer system, you can only support two of the following guarantees: Consistency - Every read receives the most recent write or an error<br />Availability - Every request receives a response, without guarantee that it contains the most recent version o
Latency is the time to perform some action or to produce some result. Throughput is the number of such actions or results per unit of time. Generally, you should aim for maximal throughput with acceptable latency.
A service is scalable if it results in increased performance in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to handle larger units of work, such as when datasets grow.1 Another way to look at performance v
Step 1: Outline use cases and constraints<br />Gather requirements and scope the problem. Ask questions to clarify use cases and constraints. Discuss assumptions. Without an interviewer to address clarifying questions, we'll define some use cases and constraints. Use cases<br />Solv
Step 1: Outline use cases and constraints<br />Gather requirements and scope the problem. Ask questions to clarify use cases and constraints. Discuss assumptions. Without an interviewer to address clarifying questions, we'll define some use cases and constraints. Use cases<br />We'l