EGround
Редактор
- Сообщения
- 24.321
- Реакции
- 127
Складчина: Микросервисы, как в BigTech [Тариф Без проверки] [Олег Козырев]
Курс адаптирован под частые проблемы 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 напрямую
- Пишем свою обертку над клиентом к БД
- Что такое транзакции
- Недостаток работы с транзакциями через 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-утилиту для связи с сервером
Материал «Микросервисы, как в BigTech [Тариф Без проверки] [Олег Козырев]», возможно, скоро появится на EGROUND.
Воспользуйтесь поиском, может быть, он уже опубликован.