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.