Software Engineering
This section contains notes related to programming and software engineering in general.
📄️ CAP Theorem
* Fundamental principle in distributed systems.
📄️ Circuit Breaker
Background
📄️ Decoupling
Decoupling in software engineering refers to the process of reducing dependencies between components, systems, or layers in a software application. The goal is to ensure that changes in one part of the system have minimal or no impact on other parts, promoting modularity, scalability, and maintainability.
📄️ GraphQL: Query Caching
In GraphQL, the query and the parsed query refer to different stages of handling a GraphQL request.
📄️ HMAC Signature
HMAC (Hash-based Message Authentication Code) is a technique used to verify both the integrity (ensuring data isn’t altered) and authenticity (ensuring data comes from a trusted source) of messages.
📄️ Idempotency
Implementing idempotency ensures that repeated API requests have the same effect as a single request, even if they are retried due to network issues or client-side retries. In the context of a payment service API, this is crucial to prevent duplicate charges or unintended side effects.
📄️ Monolith VS Microservice
Monolith
📄️ OWASP Top 10 2021
The OWASP Top 10 is a regularly updated list of the most critical security risks to web applications, published by the Open Web Application Security Project (OWASP). It's designed to raise awareness of common vulnerabilities and provide guidance for mitigating them.
📄️ PCI DSS
PCI DSS (Payment Card Industry Data Security Standard) is a set of security standards designed to ensure that all companies that accept, process, store, or transmit credit card information maintain a secure environment. It was established by the PCI Security Standards Council (PCI SSC), which was founded by major payment card brands (Visa, MasterCard, American Express, Discover, and JCB).
📄️ PostgreSQL: Partitioning
Partitioning is the process of splitting a large table into smaller, more manageable pieces called partitions. Each partition holds a subset of the data, which improves query performance and simplifies data management.
📄️ PostgreSQL: Replication
Replication is the process of copying data from one PostgreSQL server (the primary) to one or more servers (replicas). It ensures high availability and load distribution.
📄️ Protobuf & gRPC
Protobuf
📄️ Redis: Streams
A Redis stream is a data structure that acts like an append-only log but also implements several operations to overcome some of the limits of a typical append-only log. We can use streams to record and simultaneously syndicate events in real time.
📄️ Resource Scaling
Vertical Scaling
📄️ Signed URL
A signed URL is a time-limited, pre-authorized URL that allows users to access a protected resource (such as an image, video, or document) without exposing the underlying storage system or requiring direct authentication.
📄️ SOLID
is a set of five design principles introduced by Robert C. Martin (Uncle Bob) to make software designs more maintainable, scalable, and robust. It stands for:
📄️ Stack VS Heap
The heap and stack are two memory areas used in programming, especially for managing the lifecycle and organization of variables and data. Here's a comparison between the two:
📄️ Stateful VS Stateless
The terms stateful and stateless are often used in software development to describe how systems, applications, or services handle and manage state, which refers to data or information about previous interactions.