Бакалавриат
2024/2025





Разработка микросервисов на Go
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Кто читает:
Базовая кафедра МТС
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Горбатов Евгений Сергеевич,
Попов Егор Алексеевич,
Сёмочкин Максим Викторович
Язык:
русский
Кредиты:
5
Программа дисциплины
Аннотация
Курс научит Вас разрабатывать микросервисные приложения на языке Go.Познакомит со стандартной библиотекой и инструментами, применяемыми при разработке микросервисных приложений.Научит взаимодействовать с популярными базами данных: PostgreSQL и MongoDB - из языка Go, а также организовывать асинхронное взаимодействие между микросервисами с помощью Apache Kafka, отправлять структурированные логи в ElasticSearch, отслеживать запросы в Jaeger и отправлять метрики в Prometheus. Мы изучим всё необходимое, чтобы написать production ready микросервисное приложение на языке Go.
Цель освоения дисциплины
- Разрабатывать автоматизированные тесты
- Работать с PostgreSQL, MongoDB, Apache Kafka из языка Go
- Понимать устройство runtime’a языка Go
Планируемые результаты обучения
- Разрабатывать backend на языке Go
- Обеспечивать наблюдаемость микросервисного приложения
Содержание учебной дисциплины
- Вводная встреча
- Основы Go
- Основы WEB для разработчиков
- Стандартные библиотеки и практики Go
- Архитектура на уровне приложения Go
- Архитектура систем
- Документация и тестирование
- Наблюдаемость
- Нереляционные БД, MongoDB
- Реляционные БД, PostgresSQL
- Асинхронное взаимодействие, Kafka/Rabbit/NATS
- Concurrency
- Go Internals (для продвинутых)
- DevOps (опционально)
Элементы контроля
- Домашнее задание 2Выдается после лекции 4. Содержит задание“Разработка http сервера и клиента” Необходимо разработать http сервер и клиент. В процессе попрактиковаться с обработкой ошибок, а также поработать с контекстом
- Экзамен
- Домашнее задание 3Выдается после лекции 6. Содержит задание “микросервис”. Необходимо разработать контракт микросервиса и имплементировать его.
- Домашнее задание 4Выдается после лекции 8. Содержит задание “покрытие приложения наблюдаемостью” Необходимо подключить к приложению логгирование и трассировку. Покрыть http сервер базовыми метриками и построить для них дашборд в grafana
- Итоговый проектИтоговый проект - сервис заказа такси, который объединяет клиентов и водителей. Студентам НИУ ВШЭ необходимо разработать backend приложение для водителей, состоящее из двух сервисов: Driver и Location. Driver отвечает за подбор водителя и предоставление ему заказа. Location отвечает за отслеживание местоположения водителей и поиск наиболее близкого к клиенту. Между собой эти сервисы будут взаимодействовать по http(REST), а с остальной частью системы через Kafka. Для хранения данных использовать MongoDB и PostgreSQL. Также необходимо будет обеспечить наблюдаемость с использованием Jaeger, Prometheus, Grafana и подготовить сервисы к развертыванию в облачной инфраструктуре.
- Домашнее задание 1Выдается после лекции 2. Содержит задание “Знакомство с языком” Небольшие задания на работу со: slice, map, структурами и интерфейсами.
Промежуточная аттестация
- 2024/2025 2nd moduleИтог = 0,3 * ДЗ + 0,3 * Экзамен + 0,4 * Итоговый проект где ДЗ — средняя оценка за домашние задания, Э — оценка за экзамен. Округление арифметическое.
Список литературы
Рекомендуемая основная литература
- Чистая архитектура : искусство разработки программного обеспечения, Мартин, Р., 2019
Рекомендуемая дополнительная литература
- Архитектура корпоративных программных приложений, Д. Райс, М. Фоммел, Э. Хайет, Р. Ми, Р. Стаффорд, 544 с., Фаулер, М., 2004
- Язык программирования Go, Донован, А. А. А., 2016