Что такое 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