Глубокий разбор технологий уровня Middle 2 (между middle и senior): эксперт-уровень runtime, lock-free структуры, production-профилирование, продвинутые распределённые системы, observability, security, system design. Дополнение к ../03-middle-2.md .
39 файлов, ~36 000 строк (~1.5 МБ). Подходит как настольный справочник на собес 2026 в Авито/Яндекс/Тинькофф/Озон на грейд Middle 2.
Версия Go — 1.22+ (с фичами 1.23/1.24/1.25 где уместно).
Предполагается, что Junior + Middle 1 уже изучены: ../01-junior-tech/ и ../02-middle-1-tech/ .
1. Базовая концепция — короткое введение
2. Под капотом — исходники runtime, ASCII-схемы, формулы
3. Gotchas (10-15) — реальные подвохи с production
4. Production-практики — конфиги, real cases, мониторинг
5. Вопросы с собеса — 20-30 вопросов с экспертными ответами
6. Practice — 5-8 задач продвинутого уровня
7. Источники — 8-10 ссылок: Go runtime sources, talks GopherCon, Russ Cox, Kleppmann
# Файл Главные темы Строк 01 01-scheduler-deep.mdG/M/P struct поля, lock-free local runq, work stealing, async preempt через SIGURG, sysmon, netpoll, automaxprocs/k8s 918 02 02-memory-allocator.mdTCMalloc-style: mcache→mcentral→mheap, 67 size classes, tiny allocator, radix tree, Swiss Tables (1.24+) 898 03 03-gc-pacer-stack.mdTri-color + hybrid write barrier, Pacer 2.0 math , GOMEMLIMIT, mark assist, copying stacks 821 04 04-defer-panic-internals.mdOld defer (linked list) vs open-coded (1.14+), _defer/_panic, panic(nil) → PanicNilError (1.21) 1195 05 05-compiler-cgo-asm.mdSSA, inlining budget, BCE, devirtualization (1.19+) , PGO (1.21+) , build tags, CGO pitfalls, Plan 9 ASM, go:linkname strict (1.23+) 1014
# Файл Главные темы Строк 06 06-lock-free-structures.mdCAS, ABA problem (tag/counter, DCAS, HP, EBR), false sharing + padding, SPSC/MPSC/MPMC, Treiber stack 1005 07 07-sync-advanced-pool.mdPer-P private/shared + victim cache, sync.Map read/dirty, sync.Cond, OnceFunc/Value/Values (1.21+) , Mutex starvation 1025 08 08-coordination-primitives.mderrgroup internals + SetLimit/TryGo, semaphore.Weighted, singleflight, backpressure, distributed rate limiting (Redis+Lua), testing/synctest (1.24+) 1426
# Файл Главные темы Строк 09 09-production-profiling.mdpprof в prod + admin port, continuous profiling (Pyroscope/Parca/Datadog) , flame graphs, eBPF (Pixie, Parca-agent) , Flight Recorder (1.23+), delve attach 907 10 10-zero-alloc-patterns.mdEscape analysis tricks, sync.Pool, unsafe.String/Slice (1.20+), interface boxing, field alignment (fieldalignment vet), easyjson/sonic/jsoniter 1033 11 11-runtime-tuning.mdGOGC, GOMEMLIMIT в k8s (90% от лимита) , automaxprocs (cgroup v1/v2), runtime/metrics, memory ballast (Twitch case → deprecated) 875
# Файл Главные темы Строк 12 12-http-versions.mdHTTP/1.1, HTTP/2 (HPACK, multiplexing, h2c), HTTP/3 + QUIC (0-RTT, connection migration), ALPN 880 13 13-websockets-deep.mdRFC 6455 (frame format, masking), coder/websocket vs gorilla , hub pattern, read/write pumps, Redis Pub/Sub для multi-instance 975 14 14-grpc-advanced.md4 типа RPC + streaming, wire format поверх HTTP/2, interceptor chains, deadlines/retries/hedging , status+details, xDS LB, gRPC-Gateway, Connect-Go 1303 15 15-tls-mtls-protobuf.mdTLS 1.2/1.3 handshakes, SNI/ALPN, OCSP stapling, mTLS + SPIFFE/SPIRE , autocert + cert-manager, protobuf wire format, Buf workflow 1237
# Файл Главные темы Строк 16 16-postgres-deep.mdWAL, MVCC (xmin/xmax), EXPLAIN ANALYZE, все индексы (B-tree, GIN, GiST, BRIN, partial, covering), planner, vacuum/bloat, pg_repack, pgbouncer modes, Patroni, partitioning 1039 17 17-distributed-tx-saga.mdACID vs BASE, 2PC blocking problem, 3PC, TCC, Saga (orchestration vs choreography) , Temporal, idempotency, compensating tx 917 18 18-outbox-eventsourcing-cqrs.mdDual-write problem, Outbox (polling + Debezium CDC ), Inbox dedupe, Event Sourcing (events + snapshots), CQRS projections, GDPR + ES (crypto-shredding) 1080 19 19-nosql-search.mdDecision matrix, MongoDB, Cassandra/ScyllaDB (tombstones), ClickHouse, Elasticsearch + русский анализатор, Tarantool (РФ) , YDB (Яндекс) 1189
# Файл Главные темы Строк 20 20-cap-idempotency-consistency.mdCAP, PACELC , модели consistency (linearizability → eventual), BASE vs ACID, Idempotency-Key (Stripe-style) , CRDT 717 21 21-distributed-locks.mdRedis/Redlock + критика Kleppmann , etcd, ZooKeeper, Consul, Postgres advisory locks, leader election, fencing tokens 712 22 22-service-discovery-resilience.mdDNS/Consul/etcd discovery, circuit breaker (gobreaker), retry с jitter, timeouts, bulkhead, fallback 746 23 23-api-gateway-bff.mdKong, KrakenD, Envoy, custom Go gateway, BFF, Istio/Linkerd/Ambient Mesh , GraphQL с gqlgen, DataLoader 815 24 24-microservices-vs-monolith.mdModular monolith, Conway’s Law, Strangler Fig , distributed monolith antipattern, real cases (Shopify, DHH, WhatsApp) 718 25 25-event-driven-arch.mdEvents vs commands, pub-sub vs queue, choreography vs orchestration, schema registry, CloudEvents , idempotent consumers, DLQ 826 26 26-ddd-strategic.mdBounded contexts, ubiquitous language, context map patterns (ACL, conformist), Event Storming , rich vs anemic domain 861
# Файл Главные темы Строк 27 27-kafka-production.mdKRaft, ISR , log compaction, idempotent/transactional producer, cooperative-sticky, EoS , DLQ, outbox, franz-go vs kafka-go vs sarama, Schema Registry839 28 28-nats-jetstream-prod.mdNATS Core (queue groups, request-reply), JetStream (push/pull, KV, Object, mirror, leaf nodes), super-cluster 758 29 29-rabbitmq-production.mdAMQP 0.9.1, exchanges, DLX, quorum queues (replace mirrored) , streams 3.9+, lazy queues, amqp091-go, reconnect-обёртка 764
# Файл Главные темы Строк 30 30-integration-contract-testing.mdtestcontainers (wait, networks, reusable), изоляция, Pact v2 (consumer + provider + broker + can-i-deploy), buf breaking для gRPC 889 31 31-property-chaos-load.mdproperty-based (rapid ), fuzz, gremlins (mutation), vegeta/k6/wrk2/ghz, coordinated omission , Chaos Mesh/Litmus/toxiproxy, game days 832
# Файл Главные темы Строк 32 32-otel-grafana-stack.mdOTel полностью (semantic conv, exemplars), Collector pipelines, Grafana stack (Tempo, Loki, Mimir, Pyroscope), VictoriaMetrics для РФ TBC 33 33-slo-sli-sla.mdSLI/SLO/SLA, error budget, burn rate alerts , RED/USE/Golden Signals, sloth/OpenSLO, blameless postmortems TBC
# Файл Главные темы Строк 34 34-k8s-go-runtime.mdCFS throttling и Go , GOMEMLIMIT, automaxprocs, probes (liveness/readiness/startup), operators через kubebuilderTBC 35 35-hpa-vpa-autoscaling.mdHPA/VPA/KEDA/Karpenter , custom metrics, cold start optimization, PGO для autoscaling TBC
# Файл Главные темы Строк 36 36-ci-cd-goreleaser.mdGitHub Actions/GitLab CI, goreleaser, govulncheck, cosign, SBOM, SLSA TBC 37 37-owasp-go.mdOWASP Top 10 2021 в Go (SQLi, SSRF, XSS, command injection, path traversal), secrets management TBC 38 38-auth-rbac.mdJWT, OAuth 2.0 + PKCE , OIDC, RBAC/ABAC, Casbin, OPA, Zanzibar , argon2/bcrypt TBC
# Файл Главные темы Строк 39 39-system-design-cases.md10 классических кейсов : URL shortener, rate limiter, distributed cache, notifications, chat, feed, search, payments, GPS tracking, job scheduler + 30 общих вопросовTBC
Если времени мало — сначала эти:
01-scheduler-deep.md — Авито обожает GMP detail
03-gc-pacer-stack.md — pacer math + GOMEMLIMIT
16-postgres-deep.md — индексы + EXPLAIN ANALYZE
14-grpc-advanced.md — streaming + interceptors + hedging
18-outbox-eventsourcing-cqrs.md — Outbox + Debezium
27-kafka-production.md — EoS, ISR, cooperative-sticky
32-otel-grafana-stack.md — production observability
39-system-design-cases.md — 10 кейсов разбора
21-distributed-locks.md — Redlock критика + fencing
34-k8s-go-runtime.md — CFS throttling, как Go ведёт себя в k8s
01-scheduler-deep — long-running G без preempt point (Go 1.14- было) → stuck
03-gc-pacer-stack — GC pacer не успевает при large allocation rate → memory bloat
05-compiler-cgo-asm — cgo.Handle единственный безопасный способ Go pointer → C
08-coordination-primitives — singleflight: errors шарятся между waiters (gotcha)
10-zero-alloc-patterns — field alignment может удвоить размер struct (использовать fieldalignment)
11-runtime-tuning — GOMEMLIMIT=container limit → OOM kill; нужно ×0.9
14-grpc-advanced — без deadlines client → forever-pending request
16-postgres-deep — long-running tx блокирует vacuum → bloat
17-distributed-tx-saga — compensation для побочных эффектов (email) невозможна
21-distributed-locks — Redlock + clock drift = double execution (read Kleppmann)
27-kafka-production — auto-commit + crash = потерянные сообщения (use manual commit)
34-k8s-go-runtime — CPU limits + GOMAXPROCS=NumCPU = CFS throttling tail latency
38-auth-rbac — JWT без revocation = compromised token actie до exp
39 markdown-файлов (+README)
~36 000 строк
~1.5 МБ материала
1000+ вопросов с собеса с экспертными ответами
300+ компилируемых примеров кода
40+ ASCII-схем (GMP internals, mcache→mcentral→mheap, Pacer 2.0, hchan + selectgo, gRPC streaming, TLS handshake, WAL + MVCC, Saga sequence, Kafka ISR, K8s pod lifecycle, system design диаграммы и др.)
10 разобранных system design кейсов