Priority 1 Flashcards
SSL Certificate
A digital certificate granted to a server by acertificate authority. Contains the server’s public key, to be used as part of theTLS handshakeprocess in anHTTPSconnection.
An SSL certificate effectively confirms that a public key belongs to the server claiming it belongs to them. SSL certificates are a crucial defense againstman-in-the-middle attacks.
Streaming
In networking, it usually refers to the act of continuously getting a feed of information from a server by keeping an open connection between the two machines or processes.
SHA
Short for “Secure Hash Algorithms”, the SHA is a collection of cryptographic hash functions used in the industry. These days, SHA-3 is a popular choice to use in a system.
YAML
A file format mostly used in configuration. Example:
version: 1.0 name: AlgoExpert Configuration
Relational Database
A type of structured database in which data is stored following a tabular format; often supports powerful querying using SQL.
SQL Database
Any database that supports SQL. This term is often used synonymously with “Relational Database”, though in practice, noteveryrelational database supports SQL.
Client—Server Model
The paradigm by which modern systems are designed, which consists of clients requesting data or service from servers and servers providing data or service to clients.
Content Delivery Network
ACDNis a third-party service that acts like a cache for your servers. Sometimes, web applications can be slow for users in a particular region if your servers are located only in another region. A CDN has servers all around the world, meaning that the latency to a CDN’s servers will almost always be far better than the latency to your servers. A CDN’s servers are often referred to asPoPs(Points of Presence). Two of the most popular CDNs areCloudflareandGoogle Cloud CDN.
Memory
Short forRandom Access Memory (RAM). Data stored in memory will belostwhen the process that has written that data dies.
Monitoring
The process of having visibility into a system’s key metrics, monitoring is typically implemented by collecting important events in a system and aggregating them in human-readable charts.
Virtual Machine
AVMis a form of computer inside of a computer. It is a program that you run on a machine that completely emulates a new kernel and operating system. Very useful when isolating programs from one another while having them share the same physical machine.
Redundancy
The process of replicating parts of a system in an effort to make it more reliable.
Socket
A kind of file that acts like a stream. Processes can read and write to sockets and communicate in this manner. Most of the time the sockets are fronts for TCP connection.
DNS
Short for Domain Name System, it describes the entities and protocols involved in the translation from domain names to IP Addresses. Typically, machines make a DNS query to a well known entity which is responsible for returning the IP address (or multiple ones) of the requested domain name in the response.
Polling
The act of fetching a resource or piece of data regularly at an interval to make sure your data is not too stale.
Client
A machine or process that requests data or service from a server.
Note that a single machine or piece of software can be both a client and a server at the same time. For instance, a single machine could act as a server for end users and as a client for a database.
JSON
A file format heavily used in APIs and configuration. Stands forJavaScriptObjectNotation. Example:
{ "version": 1.0, "name": "AlgoExpert Configuration" }
IP Packet
Sometimes more broadly referred to as just a (network)packet, an IP packet is effectively the smallest unit used to describe data being sent overIP, aside from bytes. An IP packet consists of:
- anIP header, which contains the source and destinationIP addressesas well as other information related to the network
- apayload, which is just the data being sent over the network
HTTP
TheHyperTextTransferProtocol is a very common network protocol implemented on top of TCP. Clients make HTTP requests, and servers respond with a response.
Requests typically have the following schema:
host: string (example: algoexpert.io) port: integer (example: 80 or 443) method: string (example: GET, PUT, POST, DELETE, OPTIONS or PATCH) headers: pair list (example: "Content-Type" => "application/json") body: opaque sequence of bytes
Responses typically have the following schema:
status code: integer (example: 200, 401) headers: pair list (example: "Content-Length" => 1238) body: opaque sequence of bytes
Process
A program that is currently running on a machine. You should always assume that any process may get terminated at any time in a sufficiently large system.
Socket
A kind of file that acts like a stream. Processes can read and write to sockets and communicate in this manner. Most of the time the sockets are fronts for TCP connection.
Databases
Databases are programs that either use disk or memory to do 2 core things:recorddata andquerydata. In general, they are themselves servers that are long lived and interact with the rest of your application through network calls, with protocols on top of TCP or even HTTP.
Some databases only keep records in memory, and the users of such databases are aware of the fact that those records may be lost forever if the machine or process dies.
For the most part though, databases need persistence of those records, and thus cannot use memory. This means that you have to write your data to disk. Anything written to disk will remain through power loss or network partitions, so that’s what is used to keep permanent records.
Since machines die often in a large scale system, special disk partitions or volumes are used by the database processes, and those volumes can get recovered even if the machine were to go down permanently.
Throughput
The number of operations that a system can handle properly per time unit. For instance the throughput of a server can often be measured in requests per second (RPS or QPS).