Writing
Notes on system design and engineering practice
System Design Cheat Sheet
A series of six articles on the building blocks of system design, written for engineers preparing for interviews or getting to grips with an unfamiliar area. Each part condenses what I use in practice into a reference you can come back to.
Relational Databases (Part 1) (opens in a new tab)
Design strategies, ER notations, design patterns from normalisation to versioning, plus replication, sharding and federation
Cache (opens in a new tab)
Types of caching, five read and write strategies, eviction and invalidation, and popular solutions
Message Queues: ActiveMQ, RabbitMQ, Kafka, ZeroMQ (opens in a new tab)
Messaging models and exchanges, the main protocols and APIs (AMQP, MQTT, JMS, STOMP) and how four brokers compare
API Styles: REST, GraphQL, WebSocket, Webhook, RPC/gRPC, SOAP (opens in a new tab)
Six API styles side by side: key concepts, use cases and an example of each
Networks (opens in a new tab)
Network types and topologies, common protocols, the OSI and TCP/IP models and network security basics
Load Balancer, Reverse Proxy, Forward Proxy, API Gateway (opens in a new tab)
What each of the four does, how they differ, global and local load balancing and the common algorithms
What a backend engineer is expected to know today, beyond a single language
Media
Articles, videos and expert comments in Russian-language media