System design!!! Flashcards

1
Q

API (Application Programming Interface)

A

Definition: Set of rules and protocols for building and interacting with software applications.

Importance: Enables separate software systems to communicate and work together.

Key Point: Defines methods of communication between various software components.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

ACID Properties

A

Definition: Set of properties that guarantee reliable processing of database transactions.

Importance: Critical for ensuring data integrity during transactions.

Key Point: Atomicity, Consistency, Isolation, Durability.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

CRUD (Create, Read, Update, Delete)

A

Definition: The four basic functions of persistent storage.

Importance: Fundamental operations of any system that interacts with a database.

Key Point: Basis for most data manipulation languages.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

CI/CD (Continuous Integration/Continuous Deployment)

A

Definition: Practices that enable frequent and reliable changes to software.

Importance: Reduces time to market, increases release quality, and improves bug detection.

Key Point: Involves automated testing and deployment processes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cloud Service Models (IaaS, PaaS, SaaS)

A

Definition: Various forms of services delivered over the internet.

Importance: Provide scalable and accessible computing resources.

Key Point: IaaS offers the infrastructure, PaaS provides platform to develop on, SaaS delivers software as a service.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Microservices

A

Definition: Architectural style that structures an application as a collection of loosely coupled services.

Importance: Enhances the scalability and speed of development.

Key Point: Each service is independently deployable and scalable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Horizontal and Vertical Scaling

A

Definition: Strategies for increasing the capacity of a system.

Importance: Key to accommodating growth in user base and data volume.

Key Point: Horizontal adds more machines, Vertical increases resources in existing machines.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Caching

A

Definition: Temporarily storing data for quick access upon subsequent requests.

Importance: Reduces load on the database and improves response time.

Key Point: Must manage consistency between cache and database.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Load Balancing

A

Definition: Distributing workload across multiple servers or resources.

Importance: Prevents any single server from becoming a bottleneck, enhancing performance.

Key Point: Critical for maintaining high availability and reliability.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Non-relational Databases

A

Definition: Databases designed to store, process, and retrieve data that is not only structured in tables.

Importance: Suitable for large sets of distributed data.

Key Point: Often used when scalability and rapid development are prioritized.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Sharding

A

Definition: Data partitioning technique where a database is divided into smaller, faster, more manageable pieces.

Importance: Allows databases to scale horizontally.

Key Point: Each shard is a separate database, collectively making up the entire dataset.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Eventual Consistency

A

Definition: Consistency model in distributed computing that ensures that all changes propagate over time.

Importance: Provides availability and partition tolerance at the cost of immediate consistency.

Key Point: Trade-off made in systems favoring high performance and fault tolerance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Latency vs Throughput

A

Definition: Latency is the time taken to process a single request; Throughput is the number of requests processed in a given time.

Importance: Key performance indicators for the responsiveness and efficiency of a system.

Key Point: Balancing these is crucial for system optimization.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Docker/Kubernetes

A

Definition: Docker is a platform for containerization; Kubernetes is a system for automating deployment, scaling, and management of containerized applications.

Importance: Streamlines the development, shipment, and deployment of applications.

Key Point: Enables microservices and DevOps practices.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Azure Kubernetes Service (AKS)

A

Definition: Managed container orchestration service using Kubernetes.

Importance: Simplifies deploying, managing, and scaling containerized applications.

Key Point: Offers integrated logging and monitoring, seamless scaling, and a built-in CI/CD pipeline.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Azure Cosmos DB

A

Definition: Globally distributed, multi-model NoSQL database service.

Importance: Offers multiple consistency models and automatic and instant scalability.

Key Point: Provides single-digit millisecond response times and five well-defined consistency choices.

17
Q

Azure Blob Storage

A

Definition: Scalable object storage for unstructured data, providing secure, redundant storage.

Importance: Offers highly available, durable, and scalable storage.

Key Point: Ideal for serving content, distributed access, multimedia streaming, and data backup, recovery, and archiving.

18
Q

DNS

A

DNS is the internet’s directory, converting website names into IP addresses for efficient online communication and system design.

19
Q

Load Balancer

A

A Load Balancer distributes network traffic across multiple servers to ensure optimal resource utilization, reduced latency, and high availability, especially in high-traffic scenarios.

20
Q

API Gateway

A

An API Gateway is a server that centralizes and manages client requests to microservices, handling routing, authentication, rate limiting, and data transformation.

21
Q

CDN

A

A CDN is a global network of servers that speeds up content delivery by serving data from the nearest location to the user, reducing latency and enhancing user experience.

22
Q

Forward and Reverse Proxies

A

A forward proxy acts as an intermediary between clients and the internet for privacy and security, while a reverse proxy sits in front of servers to manage and optimize internet requests, enhancing server security and efficiency.

23
Q

Caching

A

Caching involves temporarily storing frequently accessed data in a high-speed storage layer, speeding up data retrieval and reducing load on the primary data source.

24
Q

Data Partitioning

A

Horizontal partitioning (sharding) divides rows into smaller tables on different servers for load balancing, while vertical partitioning separates columns into distinct tables to improve query efficiency.

25
Q

Database replication

A

Database replication maintains copies of the same database on multiple servers to enhance data availability, redundancy, and fault tolerance. The primary server synchronizes data with replicas, improving performance, ensuring high availability, and providing data protection.

26
Q

Distributed messaging systems

A

Distributed messaging systems enable reliable and scalable communication between applications or components, fostering independence and fault tolerance. They are crucial in complex systems like microservices, with examples like Apache Kafka and RabbitMQ.

27
Q

Microservices

A

Microservices is an architectural style where an application is split into small, independent services communicating via defined APIs. Key traits include single responsibility, independence, decentralization, lightweight communication, and fault tolerance, contrasting with monolithic architecture.

28
Q

NoSQL databases

A

NoSQL databases store unstructured or semi-structured data and offer flexibility and scalability. They include document-based (e.g., MongoDB), key-value (e.g., Redis), column-family (e.g., Apache Cassandra), and graph-based (e.g., Neo4j) types, each suited for specific data needs and use cases.

29
Q

Database indexes

A

Database indexes speed up query operations by providing a direct path to specific data values. They are typically created on table columns, with B-tree indexes being common. While improving query performance, indexes also consume storage space and may impact write operations due to updates.

30
Q

Distributed file systems

A

Distributed file systems manage files and directories across multiple servers or nodes, providing remote access similar to local file systems. They are used in large-scale or distributed computing for fault tolerance, high availability, and improved performance.

31
Q

Notification System

A

These are used to send notifications or alerts to users, such as emails, push notifications, or text messages.

32
Q

Full-text Search

A

Full-text search lets users find specific words or phrases in an app or website, delivering relevant results quickly. It uses an inverted index to associate words with documents.

33
Q

Distributed coordination services

A

Distributed coordination services regulate and synchronize actions in distributed applications, ensuring reliability and fault tolerance. They are crucial for consistency, synchronization, and configuration management in complex systems, like microservices, distributed computing, or clustered databases. Examples include Apache ZooKeeper, etcd, and Consul.

34
Q

Heartbeat

A

In distributed systems, servers need to know about each other’s presence and health. They achieve this through ‘heartbeating,’ where servers send periodic messages to a central server or peers to indicate they are alive. If no heartbeat is received within a timeout, the system detects server failure, takes corrective actions, and ensures uninterrupted operation.

35
Q
A