Choose your language:
- 🇬🇧 English (default)
- 🇮🇷 فارسی
A comprehensive, opinionated, and practical knowledge base for Backend Developers.
This repository is not a collection of random notes or interview trivia. It is a structured reference that covers the core concepts, trade-offs, and real-world considerations required to design, build, deploy, and operate backend systems at scale.
- Define what a competent backend developer should actually know
- Explain why each concept exists, not just how to use it
- Highlight trade-offs, failure modes, and architectural consequences
- Provide vendor-neutral fundamentals before tools
- Serve as:
- A learning roadmap
- A revision reference
- A system design thinking guide
- Linux fundamentals
- Bash scripting
- Process & memory basics
- File descriptors & sockets
- HTTP methods & status codes
- REST principles & REST maturity levels
- Idempotency & safe retries
- Pagination, filtering & sorting patterns
- API versioning strategies
- Authentication vs Authorization
- Sessions vs JWT
- OAuth 2.0 & OpenID Connect
- Hashing, salting & encryption standards
- Rate limiting strategies
- DDoS protection fundamentals
- Zero Trust concepts
- WebSockets
- Long polling vs Server-Sent Events
- Backpressure & scalability concerns
- SQL vs NoSQL (use cases & trade-offs)
- ACID properties & transactions
- Indexing strategies
- Query optimization
- Normalization vs denormalization
- Sharding & replication
- Connection pooling
- Cache-aside vs write-through
- Redis & Memcached
- Cache invalidation strategies
- CDN fundamentals
- Edge caching
- Message brokers overview
- Kafka
- RabbitMQ
- Event-driven architecture
- At-least-once vs exactly-once delivery
- Idempotent consumers
- REST vs GraphQL
- gRPC & Protocol Buffers
- BFF (Backend For Frontend) pattern
- API gateways
- API monetization & throttling
- OpenAPI / Swagger documentation
- Monolith vs microservices
- Service boundaries
- Load balancing strategies
- Vertical vs horizontal scaling
- Failure handling & graceful degradation
- Distributed tracing fundamentals
- Docker & containerization
- Reverse proxies (Nginx, Envoy)
- CI/CD pipelines (GitHub Actions, GitLab CI)
- Blue-green & canary deployments
- Zero-downtime deployments
- Feature flags
- Core cloud primitives (AWS / GCP / Azure)
- Serverless fundamentals
- Infrastructure as Code (Terraform, CloudFormation)
- Edge computing basics
- Structured logging
- Metrics & monitoring (Prometheus, Grafana)
- Alerting principles
- Distributed tracing
- Unit vs integration testing
- Load & stress testing
- k6 & JMeter fundamentals
- Reliability vs scalability
- SLO, SLA, SLI concepts
This section is a practical reference of tools that are commonly useful for Backend Developers.
The purpose of this section is not to teach tools in detail, but to:
- Provide a curated list of widely used backend-related tools
- Explain what each tool is used for at a high level
- Help developers choose the right tool for a specific problem
Each tool is documented in its own directory with a dedicated README.md
describing its purpose, typical use cases, and limitations.
This section complements conceptual knowledge and is intended to support real-world debugging, observability, performance analysis, and system operations.
- Tools change, principles do not
- Scalability problems usually start as design mistakes
- Every abstraction has a cost
- There is no "best architecture", only appropriate trade-offs
Each topic is broken down into:
- Core concepts
- Why it exists
- How it works
- Common mistakes
- Real-world trade-offs
This repository is a living document. Contributions, corrections, and discussions are welcome.
MIT License