Go - разработчик

Автор курса:

Что такое Golang (GO)?

Go – это популярный язык программирования, разработанный в 2009 году компанией Google. Go сочетает в себе лаконичность и хорошую производительность, что позволяет создавать высоконагруженные приложения в меньшие сроки. Go уже теснит PHP, Ruby и Python за счёт высокой эффективности и понятного синтаксиса. На Go разрабатывают сложные веб-сервисы и облачные решения: на нём уже написаны Docker, Moby Project, система оркестрации Kubernetes.

Формат Курса

Всего занятий:

36

Длительность курса (недель):

12

Занятий в неделю:

3

План обучения

Стажировка в Halyk Bank

После успешного прохождения обучения будут отобраны лучшие выпускники для оплачиваемой стажировки и дальнейшего трудоустройства в банке.
До начала стажировки у вас будут 12 недель обучения — чтобы лучше ознакомиться с предстоящей работой, получить необходимые знания на внутренних мастер-классах и влиться в коллектив.

Проверка настройки рабочих станций студентов, Переменные, базовые типы данных, составные типы данных, Управляющие конструкции
Основы функций, Функция как объект первого класса, анонимные функции, Отложенное выполнение и обработка паники, GIT
Основы работы со структурами, Методы структур, Обработка ошибок
Пакеты и область видимости, Основы работы с интерфейсами, Пустой интерфейс, Композиция интерфейсов

Методы обработки запросов и плюсы неблокирующего подхода, Горутины – легковесные процессы, Каналы – передаём данные между горутинами, Мультиплексирование каналов через оператор select
Таймеры и таймауты, Пакет context и отмена выполнения, Асинхронное получение данных
Пул воркеров, sync.Waitgroup – ожидание завершения работы, Ограничение по ресурсам
Ситуация гонки на примере конкурентной записи в map, sync.Mutex для синхронизации данных, sync.Atomic, sync.Pool

Распаковываем JSON, Нюансы работы с JSON, Map vs Struct
Пакет reflect – работаем с динамикой в рантайме, Кодогенерация – программа пишет программу, XML
Система бенчмарков Go, Покрытие кода тестами

Что такое HTTP, Обслуживание HTTP-запросов, Работа с параметрами запросов, HTTP-запросы во внешние сервисы, Тестирование HTTP-запросов и ответов
Обслуживание статичных данных, Загрузка файлов формы, Inline-шаблоны и шаблоны из файлов, Вызов методов и функций из шаблонов
Профилирование через pprof, Поиск утечки горутин, Telegram-Bot

Основные компоненты веб-сервиса, Основы middleware для HTTP, Роутеры, Обработка ошибок
Парсинг параметров в структуру и валидация, Фреймворк Echo
Стандартный пакет log, zap, logrus log + uber zero.log, Swagger, Производительный веб-сервер fasthttp

database/sql и mysql, sql-injection, GORM, sqlx, мок-тесты
NoSQL, Redis, Tarantool
Clickhouse
Message broker – RabbitMQ + kafka

Docker, go mod, upper git
Формат сериализации protobuf, Делаем сервис на gRPC, Стриминг сообщений
Балансировка нагрузки, grpc-gateway – получаем доступ к grpc-gateway через HTTP

Локальный конфиг – flags, json, Удалённый конфиг, валидаторы
Зачем нужен мониторинг и что мониторить – Prometheus, ELK, Grafana
Alerts, go vet, gometalinter, линтеры

Basic Auth, JWT, Oauth 2.0, auth-middleware
auth-service, keycloak, keys vault
Сессии. Stateful и stateless сессии. Подводные камни сессий на основе JWT

Проектирование API + Архитектура приложения, паттерны

Оптимизация сборки докер-контейнера, многошаговая сборка, Распределенный трейсинг с Jaeger
K8s, Ci-cd, Graceful shutdown
Пример проекта, Будущее GO 2.0, GO SDK