Описание
НА КУРСЕ ТЫ ГЛУБОКО ПОГРУЗИШЬСЯ В МИКРОСЕРВИСЫ:
- Освоишь базовое использование протокола http в Golang-приложениях
- На практике научишься применять архитектурные подходы построения сервисов
- Освоишь работу с PostgreSQL, написав свои компоненты-заготовки, упрощающие дальнейшую разработку
- Поработаешь с кешированием данных на примере Redis и освоишь паттерны отказоустойчивости микросервисов
- Обеспечишь мониторинг своего сервиса и покроешь его тестами, чтобы точно исключить ошибки в работе
- Реализуешь межсервисное взаимодействие, систему аутентификации и авториизации
- Изучишь необходимый стек для разработки микросервисов и сможешь откликаться на классные вакансии: Go, http, gRPC, Redis, Postgres, Prometheus и др.
- Узнаешь лучшие практики построения микросервисов для уверенной работы в BigTech-компании
- Научишься писать сложные проекты с масштабируемым кодом, как это делают разработчики в ведущих IT-компаниях
- Сможешь разработать собственный проект с использованием своих платформенных библиотек
Неделя 1.
Знакомство, протокол http и gRPC
- Что такое протокол http
- Напишем http-сервер
- Что такое REST
- Чем плох json
- Что такое protobuf
- Чем плох http 1.1
- Что такое gRPC?
- Пишем первый proto-файл
- Генерируем proto-файл
- Реализуем простую логику ручек
- Поднимем gRPC-сервер со своим API
- Реализуем gRPC-клиент
Результат: создашь два рабочих микросервиса с gRPC-серверами внутри, которые поддерживают базовый API.
Неделя 2
Deploy сервиса в облако и работа с PostgreSQL
- Регистрируемся в Selectel и покупаем свой сервер
- Собираем приложение и запускаем его на сервере
- Что такое Docker
- Разберемся, в чём суть контейнеризации, какая разница между ней и виртуализацией, а также познакомимся с Kubernetes
- Пишем Docker файл для приложения и собираем его
- Создаем registry для docker образов в Selectel и загружаем наш образ
- Устанавливаем docker на наш сервер
- Запускаем приложение из нашего образа
- Что такое GitHub Actions
- Пишем actions для деплоя и запуска нашего приложения
- Что такое config и почему их бывает несколько
- Пишем config’и для разных сред
- Пишем обработчик config’а
- Что такое Postgres
- Запуск Postgres в Docker Compose
- Что такое миграции
- Пишем миграции и накатываем их с помощью утилиты goose
- Простые запросы в Postgres с помощью pgx
- Пишем запросы с помощью билдера squirrel
- Заворачиваем накатку миграций в отдельный Docker контейнер
Результат: разработаешь базовую бизнес-логику созданных ранее API с использованием базы данных PostgreSQL.
Неделя 3
Архитектура проекта
- Что такое слои и зачем они нужны
- Пишем repo-слой
- Пишем сервисный слой
- Пишем модели и конверторы
- Пишем инициализацию всех зависимостей
- Что такое DI контейнер
- Пишем свой DI контейнер
- Недостаток работы с pgx напрямую
- Пишем свою обертку над клиентом к БД
- Что такое транзакции
- Недостаток работы с транзакциями через pgx
- Пишем свой transaction manager
- Встраиваем transaction manager в свою обертку над клиентом к БД
Результат: научишься рефакторингу и сделаешь удобную, расширяемую и гибкую архитектуру своих проектов.
Неделя 4
Тестирование сервиса и создание платформенной библиотеки
- Зачем нужны тесты
- Какие виды тестов бывают
- Пишем юнит-тесты для простого кода
- Пишем юнит-тесты для кода с моками зависимостей
- Что такое платформенная библиотека
- Создаем свою платформенную
Результат: покроешь функционал своих сервисов unit-тестами и создашь собственную платформенную библиотеку, состоящую из общих компонентов твоих проектов.
Неделя 5
Дополнительные опции экосистемы gRPC
- В чем проблема gRPC
- Что такое grpc-gateway
- Описываем опции gateway в proto-файле
- Генерируем proto-файл с gateway
- Поднимаем http-сервер для работы с gateway
- Что такое proto-валидация
- Описываем опции валидации в proto-файле
- Генерируем proto-файл с валидацией
- Применяем сгенерированную валидацию
- Что такое интерцептор?
- Пишем валидационный интерцептор
- Что такое swagger
- Генерируем proto-файл со swagger и используем результат в Postman
- Что такое CORS
- Поднимаем отдельный swagger-сервер
Результат: в одном из сервисов поднимешь свой gRPC-Gateway, который позволит обрабатывать http-трафик. Опишешь proto-валидацию и автоматически сгенерируешь интерактивную документацию API Swagger.
Неделя 6
Безопасность сетевых взаимодействий между сервисами
- Что такое TLS
- Генерируем сертификаты
- Подключаем сертификаты на сервере
- Подключаем сертификаты на клиенте
- Что такое JWT
- Описываем контракты аутентификационного API
- Пишем генерацию access токена
- Пишем генерацию refresh токена
- Пишем проверку валидности токена
- Учимся передавать и принимать токен через контекст
- Пишем серверный и клиентский интерцепторы для работы с токеном
Результат: обеспечишь транспортную безопасность взаимодействию твоих сервисов друг с другом. Создашь систему аутентификации и авторизации для своих проектов средствами JWT.
Неделя 7
Мониторинг системы
- Что такое логи
- Zap-логгер
- Пишем обертку над zap-логгером
- Что такое метрики
- Разворачиваем prometheus в Docker-compose
- Поднимаем сервер для метрик и организуем их сбор
- Смотрим метрики и интерпретируем их на примере RPS
- Что такое Grafana
- Разворачиваем Grafana в Docker-compose
- Импортируем метрики из prometheus в Grafana
- Что такое трейсинг
- Разворачиваем Jaeger в Docker сompose
- Организуем сбор трейсов
Результат: на примере одного из сервисов добавишь грамотное логгирование о различных событиях, метрики, сигнализурующие о важных показателях системы, а также организуешь сбор трейсов.
Неделя 8
Паттерны отказоустойчивости приложения и потокая обработка данных
Отзывы
Отзывов пока нет.