Software Development Fundamentals

FavoriteMonkey avatar
FavoriteMonkey
·
·
Download

Start Quiz

Study Flashcards

10 Questions

What is the primary advantage of using a message broker in system design?

Decoupling producers and consumers of messages, improving scalability and fault tolerance.

In what scenarios is eventual consistency acceptable?

Scenarios where immediate consistency is not critical, such as social media posts or email.

What is the primary difference between a RESTful API and a SOAP API?

A RESTful API is stateless and uses standard HTTP methods, whereas a SOAP API uses XML to encode messages and relies on other application layer protocols.

What is the primary benefit of using a reverse proxy in web architectures?

It provides load balancing, caching, and security benefits.

How does a content delivery network (CDN) improve performance?

By caching content closer to end-users and reducing latency.

What is the key difference between synchronous and asynchronous communication?

Synchronous communication requires simultaneous availability, whereas asynchronous communication does not.

What is the purpose of a circuit breaker pattern in system design?

To prevent an application from repeatedly trying to execute an operation that's likely to fail.

How does horizontal scaling improve system performance?

By adding more machines to handle increased load and scale horizontally.

What is the primary advantage of using microservices in system design?

Microservices allow for independent development, deployment, and scaling of individual services.

What is the CAP theorem, and what does it state?

The CAP theorem states that it is impossible for a distributed system to simultaneously guarantee all three of consistency, availability, and partition tolerance.

Study Notes

System Design Concepts

  • Stateless services are easier to scale and manage.

Deployment Pipeline

  • A deployment pipeline automates the process of building, testing, and deploying software.
  • Typical stages include source code management, build, automated tests, deployment to staging, and deployment to production.

Database Normalization

  • Database normalization is the process of organizing data in a relational database to reduce redundancy and improve data integrity.
  • It involves dividing tables into smaller, related tables and defining relationships between them.

Virtual Machines and Containers

  • A virtual machine (VM) emulates a complete computer system, including the hardware, allowing multiple OS instances on a single physical machine.
  • Containers, however, share the host OS kernel and are more lightweight and efficient.

Quorum in Distributed Systems

  • A quorum is the minimum number of votes that must be gathered from a group of nodes to perform an operation in a distributed system.
  • It ensures that a majority agreement is reached, helping in maintaining consistency and fault tolerance.

Consistency Models

  • Strong consistency ensures that any read operation will return the most recent write for a given piece of data.
  • Eventual consistency allows reads to return older versions of the data but guarantees that, eventually, all updates will be propagated to all nodes.

Single Point of Failure

  • A single point of failure (SPOF) is a component in a system that, if it fails, will stop the entire system from functioning.
  • It can be mitigated by introducing redundancy and load balancing.

Distributed Systems

  • A distributed system is a network of independent computers that appear to the user as a single coherent system.
  • Key characteristics include scalability, fault tolerance, concurrency, and transparency.

Load Balancing

  • A load balancer distributes incoming network traffic across multiple servers to ensure no single server becomes a bottleneck.
  • It helps improve responsiveness and availability.

Scaling

  • Horizontal scaling involves adding more machines to a system to handle increased load.
  • Vertical scaling involves adding more resources (CPU, RAM) to an existing machine.

Microservices

  • A microservice is a small, independent service that performs a specific function.
  • It differs from a monolithic application, which is a single, large application with tightly coupled components.

NoSQL Databases

  • A NoSQL database is a non-relational database that can store and retrieve data differently than traditional SQL databases.
  • It's used when scalability, flexibility, and performance are more important than strict consistency.

CAP Theorem

  • CAP theorem states that in any distributed system, only two out of three guarantees (Consistency, Availability, Partition tolerance) can be achieved at the same time.
  • It implies trade-offs must be made in system design.

Eventual Consistency

  • Eventual consistency ensures that, given enough time, all replicas of data will converge to the same value.
  • It's acceptable in scenarios where immediate consistency is not critical.

Message Brokers

  • A message broker is an intermediary that facilitates the exchange of information between systems or applications.
  • It decouples the producers and consumers of messages, improving scalability and fault tolerance.

API Architectures

  • A RESTful API uses HTTP requests to perform CRUD operations on resources.
  • SOAP API is a protocol that uses XML to encode messages and relies on other application layer protocols.

Reverse Proxies

  • A reverse proxy is a server that sits between client devices and backend servers, forwarding client requests to the appropriate backend server.
  • It's used for load balancing, caching, and security purposes.

Content Delivery Networks (CDNs)

  • A CDN is a network of servers distributed across different locations to deliver web content more efficiently.
  • It improves performance by caching content closer to end-users and reducing latency.

Communication Models

  • Synchronous communication requires both parties to be available and engaged at the same time.
  • Asynchronous communication allows parties to interact without requiring simultaneous availability, often via message queues or notifications.

Circuit Breaker Pattern

  • A circuit breaker pattern prevents an application from repeatedly trying to execute an operation that's likely to fail, by stopping the operation for a defined period.
  • It helps in fault tolerance.

Learn about software development concepts, including stateless services, deployment pipelines, and database normalization.

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Untitled
7 questions

Untitled

FieryMoldavite383 avatar
FieryMoldavite383
Software Development Lifecycle Phases
30 questions
API Service Deployment
5 questions
Use Quizgecko on...
Browser
Browser