Текст площадки «Sharewood». Упомянутые цены и обещанные результаты могут быть неактуальны; условия покупки проверяйте у продавца.
Курс адаптирован под частые проблемы backend-a, которые встречаются на работе.
Читать полное описание
Курс адаптирован под частые проблемы backend-a, которые встречаются на работе.
Обучение подойдет для Junior и Middle backend-разработчиков
Узнаешь необходимый стек для разработки микросервисов (Go, http, gRPC, Redis, Postgres, Prometheus и др.) и сможешь откликаться на классные вакансии
Узнаешь лучшие практики, нюансы и лайфхаки построения микросервисов, которые применяются в Yandex, Ozon, Avito, СБЕР, Tinkoff и др.
Напишешь высокопроизводительные микросервисы с масштабируемым кодом и разработаешь проект с использованием своих платформенных библиотек
Научишься использовать протокол gRPC в Golang-приложениях
Освоишь работу с PostgreSQL, написав свои компоненты-заготовки, упрощающие разработку
На практике научишься применять архитектурные подходы построения микросервисов
Освоишь паттерны отказоустойчивости микросервисов
Реализуешь межсервисное взаимодействие, систему аутентификации и авторизации
Обеспечишь мониторинг своего сервиса и покроешь его тестами, чтобы исключить ошибки в работе
Для курса нужно:
- знать основы Golang - все практические примеры будут на нем
- уметь пользоваться Git, чтобы качественно работать с кодовой базой
Преподаватель и автор курса: Олег Козырев (Senior Engineer из Avito)
[Тариф Без проверки]
18 практических уроков
Доступ к курсу на 2 года
Домашка после лекций
Дипломный проект
Q&A-сессии и live-разборы домашек
Доп.модуль от HR-специалиста
Доп.модуль по торгу за ЗП
'Программа курса
Неделя 1. Знакомство, протоколы http и gRPC
Что такое протокол http
Напишем http-сервер
Что такое REST
Чем плох json
Что такое protobuf
Чем плох http 1.1
Что такое gRPC?
Пишем первый proto-файл
Генерируем proto-файл
Реализуем простую логику ручек
Поднимем gRPC-сервер со своим API
Реализуем gRPC-клиент
Неделя 2. Deploy сервиса в облако и работа с PostgreSQL
Регистрируемся в Selectel и покупаем свой сервер
Собираем приложение и запускаем его на сервере
Что такое Docker
Разберемся, в чём суть контейнеризации, какая разница между ней и виртуализацией
Пишем Docker файл для приложения и собираем его
Создаем registry для docker образов в Selectel и загружаем наш образ
Устанавливаем docker на наш сервер
Запускаем приложение из нашего образа
Что такое GitHub Actions
Пишем actions для деплоя и запуска нашего приложения
Что такое config и почему их бывает несколько
Пишем config’и для разных сред
Пишем обработчик config’а
Что такое Postgres
Запуск Postgres в Docker Compose
Что такое миграции
Пишем миграции и накатываем их с помощью утилиты goose
Простые запросы в Postgres с помощью pgx
Пишем запросы с помощью билдера squirrel
Заворачиваем накатку миграций в отдельный Docker контейнер
Неделя 3. Архитектура проекта
Что такое слои и зачем они нужны
Пишем repo-слой
Пишем сервисный слой
Пишем модели и конверторы
Пишем инициализацию всех зависимостей
Что такое DI контейнер
Пишем свой DI контейнер
Недостаток работы с pgx напрямую
Пишем свою обертку над клиентом к БД
Пишем свой transaction manager
Встраиваем transaction manager в свою обертку над клиентом к БД
Неделя 4. Тестирование, кэширование и разработка своей платформенной библиотеки
Зачем нужны тесты
Какие виды тестов бывают
Пишем юнит-тесты для простого кода
Пишем юнит-тесты для кода с моками зависимостей
Что такое кэширование и зачем оно нужно
Redis и как с ним работать: простые примеры
Интегрируем клиента Redis в чистую архитектуру
Что такое платформенная библиотека
Создаем свою платформенную библиотеку
Неделя 5. Дополнительные опции экосистемы gRPC и асинхронное взаимодействие через Apache Kafka
В чем проблема gRPC и что такое grpc-gateway
Описываем опции gateway в proto-файле и поднимаем http-сервер для работы с gateway
Описываем опции валидации в proto-файле, применяем сгенерированную валидацию и пишем валидационный интерцептор
Описываем proto-файл со swagger, используем результат генерации в Postman и поднимаем отдельный swagger-сервер
Что такое Apache Kafka и в каких случаях его стоит применять
Разбираемся с топиками, партициями, продюсерами и консьюмерами
Пишем простые примеры продюсера и консьюмера
Интегрируем продюсера и консьюмера в чистую архитектуру
Неделя 6. Безопасность сетевых взаимодействий между серверами
Что такое TLS
Генерируем сертификаты
Подключаем сертификаты на сервере
Подключаем сертификаты на клиенте
Что такое JWT
Описываем контракты аутентификационного API
Пишем генерацию access токена
Пишем генерацию refresh токена
Пишем проверку валидности токена
Учимся передавать и принимать токен через контекст
Пишем серверный и клиентский интерцепторы для работы с токеном
Неделя 7. Мониторинг системы
Что такое логи
Zap-логгер
Пишем обертку над zap-логгером
Что такое метрики
Разворачиваем prometheus в Docker-compose
Поднимаем сервер для метрик и организуем их сбор
Смотрим метрики и интерпретируем их на примере RPS
Что такое Grafana
Разворачиваем Grafana в Docker-compose
Импортируем метрики из prometheus в Grafana
Что такое трейсинг
Разворачиваем Jaeger в Docker сompose
Организуем сбор трейсов
Неделя 8. Паттерны отказоустойчивости приложения и потоковая обработка данных
Что такое timeout
Применяем timeout через контекст
Что такое Rate Limiter
Пишем свой Rate Limiter
Что такое Circuit Breaker
Подключаем готовую реализацию Circuit Breaker
Система ошибок в gRPC
Обсуждаем дизайн системы ошибок для бизнес логики
Пишем реализацию валидатора бизнес логики
Пишем обработчик ошибок
Пишем интерцептор для конвертации бизнес ошибок в транспортные
Что такое стриминговые ручки в gRPC
Добавляем стриминговую ручку в API
Что такое cli-утилита
Пишем свою cli-утилиту для связи с сервером