• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2023/2024

Разработка микросервисов на Go

Направление: 01.03.02. Прикладная математика и информатика
Когда читается: 3-й курс, 1, 2 модуль
Формат изучения: без онлайн-курса
Охват аудитории: для своего кампуса
Преподаватели: Горбатов Евгений Сергеевич, Попов Егор Алексеевич, Сёмочкин Максим Викторович
Язык: русский
Кредиты: 5
Контактные часы: 56

Программа дисциплины

Аннотация

Курс научит Вас разрабатывать микросервисные приложения на языке 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 (опционально)
Элементы контроля

Элементы контроля

  • неблокирующий Домашнее задание 1
    Выдается после лекции 2. Содержит задание “Знакомство с языком” Небольшие задания на работу со: slice, map, структурами и интерфейсами.
  • неблокирующий Домашнее задание 2
    Выдается после лекции 4. Содержит задание“Разработка http сервера и клиента” Необходимо разработать http сервер и клиент. В процессе попрактиковаться с обработкой ошибок, а также поработать с контекстом
  • неблокирующий Домашнее задание 3
    Выдается после лекции 6. Содержит задание “микросервис”. Необходимо разработать контракт микросервиса и имплементировать его.
  • неблокирующий Домашнее задание 4
    Выдается после лекции 8. Содержит задание “покрытие приложения наблюдаемостью” Необходимо подключить к приложению логгирование и трассировку. Покрыть http сервер базовыми метриками и построить для них дашборд в grafana
  • неблокирующий Итоговый проект
    Итоговый проект - сервис заказа такси, который объединяет клиентов и водителей. Студентам НИУ ВШЭ необходимо разработать backend приложение для водителей, состоящее из двух сервисов: Driver и Location. Driver отвечает за подбор водителя и предоставление ему заказа. Location отвечает за отслеживание местоположения водителей и поиск наиболее близкого к клиенту. Между собой эти сервисы будут взаимодействовать по http(REST), а с остальной частью системы через Kafka. Для хранения данных использовать MongoDB и PostgreSQL. Также необходимо будет обеспечить наблюдаемость с использованием Jaeger, Prometheus, Grafana и подготовить сервисы к развертыванию в облачной инфраструктуре.
  • неблокирующий Экзамен
Промежуточная аттестация

Промежуточная аттестация

  • 2023/2024 учебный год 2 модуль
    0.075 * Домашнее задание 1 + 0.075 * Домашнее задание 2 + 0.075 * Домашнее задание 3 + 0.075 * Домашнее задание 4 + 0.4 * Итоговый проект + 0.3 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • Чистая архитектура : искусство разработки программного обеспечения, Мартин, Р., 2019

Рекомендуемая дополнительная литература

  • Архитектура корпоративных программных приложений, Д. Райс, М. Фоммел, Э. Хайет, Р. Ми, Р. Стаффорд, 544 с., Фаулер, М., 2004
  • Язык программирования Go, Донован, А. А. А., 2016