System design!!! Flashcards
API (Application Programming Interface)
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.
ACID Properties
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.
CRUD (Create, Read, Update, Delete)
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.
CI/CD (Continuous Integration/Continuous Deployment)
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.
Cloud Service Models (IaaS, PaaS, SaaS)
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.
Microservices
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.
Horizontal and Vertical Scaling
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.
Caching
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.
Load Balancing
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.
Non-relational Databases
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.
Sharding
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.
Eventual Consistency
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.
Latency vs Throughput
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.
Docker/Kubernetes
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.
Azure Kubernetes Service (AKS)
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.
Azure Cosmos DB
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.
Azure Blob Storage
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.
DNS
DNS is the internet’s directory, converting website names into IP addresses for efficient online communication and system design.
Load Balancer
A Load Balancer distributes network traffic across multiple servers to ensure optimal resource utilization, reduced latency, and high availability, especially in high-traffic scenarios.
API Gateway
An API Gateway is a server that centralizes and manages client requests to microservices, handling routing, authentication, rate limiting, and data transformation.
CDN
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.
Forward and Reverse Proxies
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.
Caching
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.
Data Partitioning
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.