Articles

Web Sockets

EN

WebSockets introduce an event-driven, two-way communication channel between clients and servers over a single TCP connection. Unlike traditional HTTP request-response systems, where the client sends a request and waits for the server to reply, WebSockets allow both sides to send messages whenever th...

Tcp and Udp

EN

Transmission Control Protocol, or TCP, and User Datagram Protocol, or UDP, are foundational Internet protocols that operate on top of IP. IP is responsible for addressing and routing packets between devices, while TCP and UDP define how applications send and receive data through ports on those devic...

Http Protocol

EN

Hypertext Transfer Protocol, or HTTP, is the foundational communication protocol of the World Wide Web. It defines how clients and servers exchange messages, how requests are structured, and how responses are returned. A client might be a browser, mobile app, command-line tool, or backend service. A...

Metrics and Analysis

EN

In modern distributed systems, the performance and reliability of communication channels, APIs, and network infrastructure directly affect user experience. A user may not know whether a delay comes from a database, an overloaded API server, packet loss, or a slow dependency, but they will notice tha...

Etl and Pipelines

EN

ETL and ELT are foundational patterns for moving, cleaning, reshaping, and delivering data between systems...

Stream Processing

EN

Stream processing involves ingesting, analyzing, and acting on data as it is produced. Instead of waiting for a complete batch of data to be collected, a stream processing system handles events continuously as they arrive...

Batch Processing

EN

Batch processing is a method for handling large volumes of data by grouping records into a single batch and processing them together. Unlike real-time or stream processing, batch processing does not usually require immediate results. Instead, data is collected over a period of time and processed on ...

Workflow Orchestration

EN

As data pipelines grow beyond a single script, they become networks of interdependent steps that must run in the right order, on a schedule, with retries on failure, and with observable state. Workflow orchestration is the discipline of managing this complexity: defining the execution order of tasks...

Lambda and Kappa Architecture

EN

As data volumes grew and real-time analytics became a business requirement, engineers needed architectural patterns that could handle both historical re-computation and low-latency stream processing reliably. Lambda and Kappa architectures are the two dominant answers to that challenge...

Algorithms Summary

EN

The following algorithms and data structures appear frequently in backend and distributed system design. They are useful because system design often involves trade-offs around scale, latency, storage, consistency, correctness, and fault tolerance...

Coordination Services

EN

In large-scale distributed systems, many processes, microservices, or nodes must work together while running on different machines. These systems need a reliable way to agree on shared state, detect failures, elect leaders, coordinate ownership, and distribute configuration...

Halloween Problem

EN

The Halloween Problem is a database execution-plan issue where an UPDATE operation could theoretically update the same row more than once if the database scans rows through an access path that is changed by the update itself...

Memcached

EN

Memcached is a high-performance, distributed, in-memory key-value cache. It is designed for one main purpose: storing small pieces of frequently accessed data in RAM so applications can avoid repeatedly querying slower systems such as relational databases, APIs, or disk-backed storage...

Database Caching

EN

Database caching stores frequently requested database query results, rows, aggregates, or relational lookup data in a faster layer so the application does not repeatedly execute the same expensive database operations. The main goal is to reduce database read load, lower query latency, and protect th...

Redis

EN

Redis is a high-performance, in-memory data store commonly used as a cache, message broker, session store, rate limiter, leaderboard engine, and fast key-value database. It is often described as a data structure server because it supports rich built-in data types such as strings, lists, sets, sorted...

Application Level Caching

EN

Application-level caching stores computed results or frequently accessed objects directly inside the running process or in a dedicated in-process store. Because data never leaves the application's memory space, reads are limited only by CPU and memory bandwidth — no network hop, no serialisation, an...

Memory Map

EN

mmap, short for memory map, is an operating system mechanism that maps a file or device directly into a process’s virtual memory address space. Instead of reading file data explicitly with read() into a buffer, the application can access the file as if it were an array in memory. The operating syste...

Http Caching

EN

HTTP caching is the process of storing copies of HTTP responses so that future requests can be served without contacting the origin server. It operates at multiple layers — the browser, intermediate proxies, reverse proxies, and CDN edge nodes — and is controlled primarily through standardised HTTP ...

Rest

EN

Representational State Transfer, often referred to as REST, is an architectural style used to design web services. It uses a stateless communication model between clients and servers, relies on standard HTTP methods, and focuses on simple but powerful conventions...

Grpc

EN

gRPC is a high-performance open-source framework that was developed at Google for remote procedure calls. It uses the Protocol Buffers (protobuf) serialization format by default and runs over HTTP/2 to support features like full-duplex streaming and efficient compression. Many microservices architec...

Data Transmission

EN

Data transmission in API design describes how information moves between a client and a server. It includes the request format, response format, protocol, headers, authentication details, compression behavior, caching rules, and error-handling signals. Good transmission design helps APIs remain fast...

Graphql

EN

GraphQL is a query language for APIs that allows clients to request exactly the data they need in a single request. It provides a type system to describe data and offers a more efficient, flexible, and powerful alternative to traditional REST-based architectures. These notes explore the fundamentals...

Network Communications

EN

Network communications in a backend context involve the flow of data between clients and server-side systems. A client might be a browser, a mobile app, another backend service, an API gateway, or a scheduled job. The server might be a REST API, GraphQL API, gRPC service, WebSocket server, database...

Forward Proxies

EN

A forward proxy sits between clients and the wider internet. Instead of connecting directly to an external service, the client sends the request to the proxy, and the proxy makes the outbound connection on the client’s behalf. This pattern is commonly used for egress control, caching, auditing, and ...

Tomcat

EN

Apache Tomcat, often referred to as Tomcat, is an open-source web server and servlet container that implements the Java Servlet, JavaServer Pages (JSP), and WebSocket specifications. Maintained by the Apache Software Foundation, Tomcat serves as a robust and lightweight platform for hosting Java-bas...

Indexes

EN

Indexing is one of the most effective ways to optimize database queries. By maintaining auxiliary data structures that map certain key values to their physical or logical locations, indexes allow a database to rapidly locate rows that match a search condition. This reduces the number of full-table s...

Isolation Levels

EN

Isolation levels in relational-database systems govern how simultaneously running transactions perceive one another’s changes. They sit on a spectrum that trades consistency guarantees—how “correct” every read is—against concurrency—how many transactions can safely overlap. Choosing the right level ...

Transactions

EN

Database transactions are a cornerstone of reliable data management. They let an application bundle multiple low-level reads and writes into a single, all-or-nothing unit so the database moves cleanly from one consistent state to another—even when dozens of users race to change the same rows or hard...

Api Communication Protocols

EN

API communication protocols describe how different software components exchange data and invoke functionality across networks. They define the transport mechanisms, data formats, interaction styles, and often how developers should structure their requests and responses. These protocols are often cho...

Points of Confusion

EN

Git is a powerful tool, but its complexity often puzzles newcomers. Let’s break down some typical areas where users get tripped up in simpler terms...

Mono and Multi Repo

EN

When managing software projects, organizations often need to choose between two distinct codebase structuring strategies: monorepos and multirepos. This decision isn’t just about where code lives—it affects collaboration, tooling, versioning, and even deployment practices. When you’re starting out o...

Static Python Website Netlify

EN

Netlify allows you to easily deploy and manage static websites. A Python-based static site generator like Pelican, MkDocs, or Frozen-Flask produces HTML files that Netlify serves through its global CDN...

Centos Digital Ocean

EN

Digital Ocean provides cloud-based virtual machines called Droplets that let you deploy and manage CentOS servers. The overall flow looks like this...

Pub Sub vs Queue

EN

Message queues enable asynchronous, decoupled communication in distributed systems by allowing publishers to send messages to a queue that consumers process independently, typically in first-in, first-out order. This approach reduces direct dependencies between services, enhances reliability and sca...

Operational Transform

EN

Operational Transform is a foundational technique in distributed systems that enables real-time collaborative editing of shared documents. Originally proposed by Ellis and Gibbs in 1989, OT allows multiple users to concurrently modify the same document while preserving consistency across all partici...