Below are system design basics for software development:
- How CDN works: CDN stands for Content Delivery Networks. CDN is a network of servers that distributes the content from original server to multiple locations by caching the content closest to the users’ locations.
- Protecting passwords in a database: we should never store passwords directly into a database. These can be seen by database users. Also, these can be hacked. We should convert passwords into has values. To convert passwords into has values, we should use randomly generated salt values with each password. Salt is used to generate a unique hash.
- Bare metal infrastructure: this is a term used for legacy physical server infrastructure. When an application needs the highest level of security, bare metals could be the most appropriate solution.
- Virtual machines: This uses a hardware that is shared for multiple virtual servers. We use a hypervisor underneath guest OSs. The downside is that these could be vulnerable by noisy neighbor problems.
- Containers: it’s a light weight stand alone package. We use a hardware and host OS. On top of it, a container engine is installed. On top of container engine, multiple containers are deployed. Containers are scalable and portable. Containers are less secured. They are vulnerable to security issues at OS level. To avoid security issues, we can run containers inside virtual machines.
- How HTTP works: A user hits a URL on the browser. We use either http or https protocol. Second is a domain (like http://www.abc.com). We use a DNS (Domain Name Service) lookup to look for an IP for a domain. DNS information is generally cached. To look for a DNS, we have DNS servers. Finally a browser has the IP address of the server. Next, the browser get a TCP connection with the server. Browser sends a request to the server. Server sends an http response to the browser. Browser parses the responds and shows the response to the user on the browser.
- Youtube videos by ByteByteGo authors