Перейти к содержимому

Middle 2 Go — технологии под капотом

Глубокий разбор технологий уровня 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

#ФайлГлавные темыСтрок
0101-scheduler-deep.mdG/M/P struct поля, lock-free local runq, work stealing, async preempt через SIGURG, sysmon, netpoll, automaxprocs/k8s918
0202-memory-allocator.mdTCMalloc-style: mcache→mcentral→mheap, 67 size classes, tiny allocator, radix tree, Swiss Tables (1.24+)898
0303-gc-pacer-stack.mdTri-color + hybrid write barrier, Pacer 2.0 math, GOMEMLIMIT, mark assist, copying stacks821
0404-defer-panic-internals.mdOld defer (linked list) vs open-coded (1.14+), _defer/_panic, panic(nil) → PanicNilError (1.21)1195
0505-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
#ФайлГлавные темыСтрок
0606-lock-free-structures.mdCAS, ABA problem (tag/counter, DCAS, HP, EBR), false sharing + padding, SPSC/MPSC/MPMC, Treiber stack1005
0707-sync-advanced-pool.mdPer-P private/shared + victim cache, sync.Map read/dirty, sync.Cond, OnceFunc/Value/Values (1.21+), Mutex starvation1025
0808-coordination-primitives.mderrgroup internals + SetLimit/TryGo, semaphore.Weighted, singleflight, backpressure, distributed rate limiting (Redis+Lua), testing/synctest (1.24+)1426
#ФайлГлавные темыСтрок
0909-production-profiling.mdpprof в prod + admin port, continuous profiling (Pyroscope/Parca/Datadog), flame graphs, eBPF (Pixie, Parca-agent), Flight Recorder (1.23+), delve attach907
1010-zero-alloc-patterns.mdEscape analysis tricks, sync.Pool, unsafe.String/Slice (1.20+), interface boxing, field alignment (fieldalignment vet), easyjson/sonic/jsoniter1033
1111-runtime-tuning.mdGOGC, GOMEMLIMIT в k8s (90% от лимита), automaxprocs (cgroup v1/v2), runtime/metrics, memory ballast (Twitch case → deprecated)875
#ФайлГлавные темыСтрок
1212-http-versions.mdHTTP/1.1, HTTP/2 (HPACK, multiplexing, h2c), HTTP/3 + QUIC (0-RTT, connection migration), ALPN880
1313-websockets-deep.mdRFC 6455 (frame format, masking), coder/websocket vs gorilla, hub pattern, read/write pumps, Redis Pub/Sub для multi-instance975
1414-grpc-advanced.md4 типа RPC + streaming, wire format поверх HTTP/2, interceptor chains, deadlines/retries/hedging, status+details, xDS LB, gRPC-Gateway, Connect-Go1303
1515-tls-mtls-protobuf.mdTLS 1.2/1.3 handshakes, SNI/ALPN, OCSP stapling, mTLS + SPIFFE/SPIRE, autocert + cert-manager, protobuf wire format, Buf workflow1237
#ФайлГлавные темыСтрок
1616-postgres-deep.mdWAL, MVCC (xmin/xmax), EXPLAIN ANALYZE, все индексы (B-tree, GIN, GiST, BRIN, partial, covering), planner, vacuum/bloat, pg_repack, pgbouncer modes, Patroni, partitioning1039
1717-distributed-tx-saga.mdACID vs BASE, 2PC blocking problem, 3PC, TCC, Saga (orchestration vs choreography), Temporal, idempotency, compensating tx917
1818-outbox-eventsourcing-cqrs.mdDual-write problem, Outbox (polling + Debezium CDC), Inbox dedupe, Event Sourcing (events + snapshots), CQRS projections, GDPR + ES (crypto-shredding)1080
1919-nosql-search.mdDecision matrix, MongoDB, Cassandra/ScyllaDB (tombstones), ClickHouse, Elasticsearch + русский анализатор, Tarantool (РФ), YDB (Яндекс)1189
#ФайлГлавные темыСтрок
2020-cap-idempotency-consistency.mdCAP, PACELC, модели consistency (linearizability → eventual), BASE vs ACID, Idempotency-Key (Stripe-style), CRDT717
2121-distributed-locks.mdRedis/Redlock + критика Kleppmann, etcd, ZooKeeper, Consul, Postgres advisory locks, leader election, fencing tokens712
2222-service-discovery-resilience.mdDNS/Consul/etcd discovery, circuit breaker (gobreaker), retry с jitter, timeouts, bulkhead, fallback746
2323-api-gateway-bff.mdKong, KrakenD, Envoy, custom Go gateway, BFF, Istio/Linkerd/Ambient Mesh, GraphQL с gqlgen, DataLoader815
2424-microservices-vs-monolith.mdModular monolith, Conway’s Law, Strangler Fig, distributed monolith antipattern, real cases (Shopify, DHH, WhatsApp)718
2525-event-driven-arch.mdEvents vs commands, pub-sub vs queue, choreography vs orchestration, schema registry, CloudEvents, idempotent consumers, DLQ826
2626-ddd-strategic.mdBounded contexts, ubiquitous language, context map patterns (ACL, conformist), Event Storming, rich vs anemic domain861
#ФайлГлавные темыСтрок
2727-kafka-production.mdKRaft, ISR, log compaction, idempotent/transactional producer, cooperative-sticky, EoS, DLQ, outbox, franz-go vs kafka-go vs sarama, Schema Registry839
2828-nats-jetstream-prod.mdNATS Core (queue groups, request-reply), JetStream (push/pull, KV, Object, mirror, leaf nodes), super-cluster758
2929-rabbitmq-production.mdAMQP 0.9.1, exchanges, DLX, quorum queues (replace mirrored), streams 3.9+, lazy queues, amqp091-go, reconnect-обёртка764
#ФайлГлавные темыСтрок
3030-integration-contract-testing.mdtestcontainers (wait, networks, reusable), изоляция, Pact v2 (consumer + provider + broker + can-i-deploy), buf breaking для gRPC889
3131-property-chaos-load.mdproperty-based (rapid), fuzz, gremlins (mutation), vegeta/k6/wrk2/ghz, coordinated omission, Chaos Mesh/Litmus/toxiproxy, game days832
#ФайлГлавные темыСтрок
3232-otel-grafana-stack.mdOTel полностью (semantic conv, exemplars), Collector pipelines, Grafana stack (Tempo, Loki, Mimir, Pyroscope), VictoriaMetrics для РФTBC
3333-slo-sli-sla.mdSLI/SLO/SLA, error budget, burn rate alerts, RED/USE/Golden Signals, sloth/OpenSLO, blameless postmortemsTBC
#ФайлГлавные темыСтрок
3434-k8s-go-runtime.mdCFS throttling и Go, GOMEMLIMIT, automaxprocs, probes (liveness/readiness/startup), operators через kubebuilderTBC
3535-hpa-vpa-autoscaling.mdHPA/VPA/KEDA/Karpenter, custom metrics, cold start optimization, PGO для autoscalingTBC
#ФайлГлавные темыСтрок
3636-ci-cd-goreleaser.mdGitHub Actions/GitLab CI, goreleaser, govulncheck, cosign, SBOM, SLSATBC
3737-owasp-go.mdOWASP Top 10 2021 в Go (SQLi, SSRF, XSS, command injection, path traversal), secrets managementTBC
3838-auth-rbac.mdJWT, OAuth 2.0 + PKCE, OIDC, RBAC/ABAC, Casbin, OPA, Zanzibar, argon2/bcryptTBC
#ФайлГлавные темыСтрок
3939-system-design-cases.md10 классических кейсов: URL shortener, rate limiter, distributed cache, notifications, chat, feed, search, payments, GPS tracking, job scheduler + 30 общих вопросовTBC

Если времени мало — сначала эти:

  1. 01-scheduler-deep.md — Авито обожает GMP detail
  2. 03-gc-pacer-stack.md — pacer math + GOMEMLIMIT
  3. 16-postgres-deep.md — индексы + EXPLAIN ANALYZE
  4. 14-grpc-advanced.md — streaming + interceptors + hedging
  5. 18-outbox-eventsourcing-cqrs.md — Outbox + Debezium
  6. 27-kafka-production.md — EoS, ISR, cooperative-sticky
  7. 32-otel-grafana-stack.md — production observability
  8. 39-system-design-cases.md — 10 кейсов разбора
  9. 21-distributed-locks.md — Redlock критика + fencing
  10. 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-asmcgo.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

  • Сводный ../03-middle-2.md — обзор всех тем + план изучения 6-12 месяцев + pet-проекты.
  • Папки ../01-junior-tech/ и ../02-middle-1-tech/ — основы (обязательно изучить до этой папки).
  • ../04-middle-3.md — следующий шаг: lock-free на assembly, PGO, custom operators, leadership.
  • 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 кейсов