Skip to content

kodsurfer/go-study-plan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

go-study-plan

1. Приоритезация и Стратегия:

  • Старт с основ: Начать с Golang и Linux/сетей. Без них остальное будет сложнее.
  • Параллельное изучение: Группировать смежные темы:
    • Golang + gRPC/Connect + Clean Arch/SOLID/GoF
    • Linux Network Stack + Cilium/Calico + Nftables/iptables/Netlink
    • K8s + Containers/cgroups + Prometheus + OpenTelemetry
    • Postgres (Design) + ClickHouse
  • Глубина vs Ширина: Для собеседования/проекта важнее понимание как это работает и базовый опыт, чем глубочайшие знания всех нюансов. Фокусировка на принципах.
  • Практика обязательна: Теория без практики бесполезна. Писать код, настраиватье окружения, ломать и чинить.

2. Конкретные технологии и как их учить:

  • Golang:
    • Быстро: Tour of Go, Effective Go. Усвоить: горутины, каналы, интерфейсы, обработка ошибок, тестирование (testing), работа с HTTP, context.
    • Практика: Написать несколько CLI-утилит, простой HTTP/REST сервис, затем перейти к gRPC.
  • C/C++:
    • Быстро (Сначала C): Основы синтаксиса, указатели, управление памятью (malloc/free), структуры, работа с файлами. Потом С++: ООП (классы, наследование, полиморфизм), RAII, STL (vector, map, string), умные указатели (unique_ptr, shared_ptr).
    • Практика: Небольшие алгоритмические задачи, парсинг файлов, работа с сокетами (простейший клиент/сервер).
  • PostgreSQL (Проектирование БД):
    • Быстро: Изучить нормальные формы (1NF, 2NF, 3NF - до BCNF по желанию), типы данных, индексы (B-tree, Hash, GIN, GiST - когда какие), связи (1:1, 1:M, M:M), JOIN-ы. Ключевое слово: "Database Normalization".
    • Практика: Спроектировать схему для какого-либо сервиса (блог, магазин), написать сложные запросы с агрегацией и джойнами. Использовать EXPLAIN ANALYZE.
  • Kubernetes (включая операторы):
    • Быстро: Основные концепции: Pod, Deployment, Service, ConfigMap, Secret, Ingress. Управление через kubectl. Понимание etcd, kube-apiserver, kubelet, kube-proxy.
    • Операторы: Понимание Custom Resource Definitions (CRD), Controller Pattern. Ключевой ресурс: Kubebuilder или Operator SDK. Написать простейший оператор (например, управляющий деплоем nginx).
  • Linux Network Stack, Cilium, Calico, Nftables/iptables, Netlink:
    • Быстро (Фундамент): Модель OSI/TCP-IP. Как работает ping/curl? (ARP, DNS, TCP Handshake, Routing). tcpdump/wireshark - наши лучшие друзья.
    • Netfilter (iptables/nftables): Цепочки (PREROUTING, FORWARD, INPUT, OUTPUT, POSTROUTING), таблицы (filter, nat, mangle). Разобраться в conntrack.
    • Netlink: Интерфейс ядра<->юзерспейс для управления сетью (интерфейсы, адреса, роуты). Понимать назначение.
    • Cilium/Calico: CNI плагины. Cilium = eBPF. Узнать зачем (сетевая политика, балансировка, observability). Понимать разницу между overlay (VXLAN, IP-in-IP) и underlay сетями.
  • Containers/cgroups/VMs:
    • Быстро: Контейнер != Виртуальная машина. Понимание namespaces (изоляция) и cgroups (ограничение ресурсов). Как работает docker run? Базовые команды Docker. Знать про OCI (runc), containerd. VMs: Гипервизоры (Type1/Type2), зачем нужны.
  • Prometheus & OpenTelemetry:
    • Prometheus: Модель Pull. Метрики (Counter, Gauge, Histogram, Summary). PromQL основы. Service Discovery. Alertmanager.
    • OpenTelemetry: Стандарт для трассировки, метрик, логов. Концепция: TracerProvider, Tracer, Span, Context Propagation. Экспортеры (OTLP). Инструментирование кода (SDK для Go).
    • Практика: Настроить Prometheus для сбора метрик с ноды и приложения. Инструментировать простой Go-сервис OTel трассировкой.
  • ClickHouse:
    • Быстро: Колоночная СУБД для аналитики (OLAP). Высокая скорость на агрегациях. Понимать движки таблиц (MergeTree - основа), партиционирование, сортировка (ORDER BY). Отличия от Postgres (OLTP).
  • gRPC/Connect/gRPC-Gateway/OpenAPI:
    • gRPC: RPC на основе HTTP/2 и Protocol Buffers. Изучить .proto файлы (определение сервисов, сообщений), 4 типа вызовов (Unary, Server/Client Streaming, Bidir). Генерация кода.
    • Connect: "Упрощенный" gRPC (работает поверх HTTP/1.1 или HTTP/2). Понимать его нишу.
    • gRPC-Gateway: Генерация RESTful JSON API из .proto. Настройка аннотаций.
    • OpenAPI (Swagger): Стандарт описания REST API. Генерация документации. gRPC-Gateway автоматически генерирует OpenAPI.
  • Clean Architecture, SOLID, GoF:
    • Быстро (Применять в Go!):
      • SOLID: 5 принципов ООП проектирования. Особенно важны в контексте Go: Single Responsibility (SRP), Dependency Inversion (DI - внедрение зависимостей через интерфейсы).
      • Clean Architecture: Слои (Entities, Use Cases, Interfaces/Adapters). Независимость бизнес-логики от фреймворков/БД/UI. "Правило зависимости" (внутрь к бизнес-правилам).
      • GoF (Паттерны): Учить по мере необходимости! Ключевые для инфраструктуры/бэкенда: Стратегия (Strategy), Фабрика (Factory), Адаптер (Adapter), Декоратор (Decorator), Наблюдатель (Observer), Команда (Command). Понимать проблему, которую решает паттерн, важнее его названия.

3. Критически Важные Ресурсы:

  • Официальная Документация: Всегда первый источник (Go, Kubernetes, Postgres, Prometheus, OpenTelemetry, ClickHouse, gRPC, Cilium, Calico).
  • Книги:
    • Linux/Сети: "Linux Kernel Networking" by Rami Rosen, "BPF Performance Tools" by Brendan Gregg (глубоко, но части про сеть полезны).
    • Go: "The Go Programming Language" (AKA K&R for Go), "Concurrency in Go".
    • Kubernetes: "Kubernetes in Action" by Marko Luksa.
    • Архитектура/Патерны: "Clean Architecture" by Robert Martin, "Design Patterns: Elements of Reusable Object-Oriented Software" (GoF), "Domain-Driven Design" (DDD - доп. опция).
  • Практические Курсы/Лабы:
  • Сообщества: Stack Overflow, GitHub Issues, Reddit (r/golang, r/kubernetes, r/devops), Slack/Discord канаты (CNCF, OTel).

4. План действий (Агрессивный):

  1. Неделя 1-2: Ядро
    • Интенсив по Golang (Tour, Effective Go, писать код ежедневно).
    • Основы Linux Networking (OSI/TCP-IP, tcpdump, netstat/ss, routing).
    • Базовые контейнеры и Docker.
  2. Неделя 3-4: Оркестрация + Мониторинг + RPC
    • Основы Kubernetes (Pods, Deployments, Services). Развернуть локальный кластер (minikube/kind).
    • gRPC в Go (писать простые сервисы).
    • Prometheus (установка, сбор метрик ноды/приложения, PromQL).
    • Погружение в cgroups/namespaces.
  3. Неделя 5-6: Сеть углубленно + БД + Трассировка
    • Netfilter (iptables/nftables), Cilium/Calico (разобраться в политиках).
    • PostgreSQL проектирование (нормализация, индексы, EXPLAIN).
    • OpenTelemetry трассировка в Go-сервисе.
    • Начать проект: Go gRPC сервис + Postgres + развернутый в K8s + метрики Prometheus + трассировка OTel.
  4. Неделя 7-8: Специализация + Операторы + Архитектура
    • ClickHouse (установка, основные отличия, простые запросы).
    • Написать простейший оператор K8s (Kubebuilder/Operator SDK).
    • Применить Clean Architecture/SOLID к своему проекту. Рефакторинг.
    • Изучить ключевые GoF паттерны и найти их применение в своем или открытом коде.
  5. Непрерывно:
    • Netlink: Понимать назначение, когда используется.
    • VMs: Основы отличий от контейнеров.
    • Connect/gRPC-Gateway/OpenAPI: Интегрировать gRPC-Gateway в свой сервис для REST API и OpenAPI.

Важные Советы:

  • Не зубрить, а понимать: Задавать вопросы "Почему?", "Как это работает внутри?".
  • Использовать в работе: Даже на учебных проектах.
  • Системность: Составлять чек-листы или mind maps по каждой технологии.
  • Сообщество: Не бояться спрашивать (предварительно погуглив).
  • Здоровье: Такой объем требует времени. Разбивать на этапы, отдыхать.

Это амбициозный план. Адаптировать его под свои сроки и цели. Успехов! Это мощный и востребованный стек.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published