Search

Lessons (27)

  • Message Queues & RabbitMQ

    … The ticket rail is a message queue : - Producer (waiter): puts messages in. - Queue (rail): holds them safely, in …

  • Delivery Guarantees: At-Most, At-Least & Exactly Once

    Can a message be lost? Delivered twice? Learn Kafka's three delivery semantics, idempotent producers, transactions for read …

  • Design a Chat Application

    Deliver live messages without losing them by separating durable messages from fan-out, presence and offline notifications. ![Chat …

  • Consumers & Consumer Groups

    … async ({ topic, partition, message }) = { const eventId = message.headers.eventId.toString(); if (!(await processedEvents.has(eventId))) { // idempotency check await …

  • What Is Apache Kafka?

    … async ({ partition, message }) = { const order = JSON.parse(message.value.toString()); console.log( partition ${partition} offset ${message.offset}: , order …

  • Clean Error Handling

    … Custom error classes let them react precisely. js class AppError extends Error { constructor(message, statusCode) { super(message); this …

  • Kafka vs RabbitMQ & the Kafka Ecosystem

    … Both move messages between systems, but they're built on different ideas. ![RabbitMQ routes and deletes; Kafka stores …

  • Service Communication: Sync vs Async

    Should services call each other directly or talk through events? Compare request/response with messaging, orchestration with choreography …

  • Design a Reliable Notification System

    Deliver email, SMS, push and in-app messages with preferences, isolation, idempotency, provider failover and auditable states. ![Notification …

  • Data in Microservices: Sagas & the Outbox Pattern

    … idempotent consumers The receiving side records which message IDs it has processed, in the same transaction as its …

  • Proxies, APIs and Real-Time Protocols

    … A queue is not a WebSocket, and a WebSocket is not a durable message log.

  • Topics, Partitions & Offsets

    … Why topics are split into partitions, how message keys decide the partition and keep ordering, how offsets work …

  • Stacks & Queues

    … task scheduling, message brokers, the event loop, BFS.

  • Structural Patterns: How to Connect Objects

    … logger.log(level, message) // The new library offers: winston.write({ severity, text, ts }) class WinstonAdapter { constructor(winston) { this …

  • REST vs GraphQL vs gRPC

    … returns (stream OrderStatus); // server streaming } message GetOrderRequest { string order id = 1; } message Order { string id = 1; string customer …

  • REST API Design

    … 422, "detail": "The request body has 2 invalid fields.", "errors": [ { "field": "email", "message": "must be a valid email …

  • Database Relations & Foreign Keys

    … id, course id) Application validation gives a friendly message; constraints protect the rule when another service, script or …

  • Hexagonal Architecture (Ports & Adapters)

    … The application core sits in the middle; everything else (web UI, REST API, tests, database, email, message queues …

  • Which Pattern Do I Need?

    … service mesh sidecar Adapter Anti-corruption layer Command Message queues, CQRS commands Mediator Saga orchestrator Chain of Responsibility …

  • How a Web Request Works

    … reliable connection, TLS encrypts it, HTTP carries the message. - HTTP methods have meanings: GET reads, POST creates, PUT …

  • Behavioral Patterns I: Observer, Strategy, Command, State

    … store.subscribe , React state → re-render, Kafka and message queues at a system level. ⚠️ Always unsubscribe when a …

  • SQL vs NoSQL Databases

    … columns, spread over many servers Time series, IoT, messaging at massive scale Cassandra Graph Nodes and relationships Social …

  • TypeScript Essentials

    … error message Impossible states (like "loading and has an error") can't even be written. That's a …

  • Kafka Producers

    … CompressionTypes.GZIP, messages: [ { key: order.id, // keeps all events for this order in order value: JSON.stringify({ orderId …

  • MVC, MVP & MVVM

    … onLoginClicked()" P[🎤 Presenter] P -- reads / updates M[📦 Model] P -- "view.showError('…')" V ts interface LoginView { showError(message: string …

  • Serverless Architecture

    … uploaded<br/ (S3)"] -- F2["λ makeThumbnail"] Q["📨 Queue message<br/ (SQS)"] -- F3["λ sendEmail"] C["⏰ Schedule<br/ (cron …

  • Vertical Slice Architecture & the Modular Monolith

    … dtos/ … ├── search-products/ └── update-price/ "Add a gift-message field to orders" now touches one folder instead of …