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

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

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

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

Аннотация

Язык Go лёгок для входа из любого стека, безопасный и быстрый в разработке. Более 20 сервисов МТС написаны на Go. В рамках курса вы изучите то, что на практике должен знать junior и middle Go-разработчик в крупной IT-компании. Преподаватели курса — ведущие Go-разработчики и архитекторы МТС. В организации и проведении курса принимают участие: Виталий Попов, go-разработчик CloudMTS Максим Сёмочкин, технический руководитель проекта МТС Диджитал Егор Попов, старший разработчик МТС Диджитал Андрей Ослин, go-разработчик CloudMTS Артем Чаадаев, go-разработчик в МТС Диджитал Николай Митюков, руководитель Центра DevOps МТС Диджитал
Цель освоения дисциплины

Цель освоения дисциплины

  • Понимать устройство языка Go
  • Разрабатывать автоматизированные тесты
  • Развертывать приложение в кластере Kubernetes
Планируемые результаты обучения

Планируемые результаты обучения

  • Разрабатывать backend на языке Go
  • Обеспечивать наблюдаемость микросервисного приложения
  • Понять устройство runtime’a языка Go
  • Работать с PostgreSQL, MongoDB, Apache Kafka из языка Go
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Основы Go
  • Стандартные библиотеки и практики Go
  • Основы DevOps
  • Основы мониторинга и сбора метрик
  • Архитектура и шаблоны проектирования
  • Устройство runtime’a. Работа с памятью
  • Документация и тестирование
  • Работа с БД, MongoDB
  • PostgreSQL
  • gRPC
  • Очереди данных (Кafka и RabbitMQ)
  • Concurrency
  • Разбор типичных ошибок сквозного проекта
Элементы контроля

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

  • неблокирующий Домашнее задание 1
    Выдается после лекции 2. Содержит задание посвященное http-сервисам.
  • неблокирующий Домашнее задание 2
    Выдается после лекции 3. Содержит задание, посвященное graceful shutdown и чтению настроек сервиса
  • неблокирующий Домашнее задание 3
    Выдается после лекции 4. Содержит задание, посвященное настройке CI/CD и деплою в Kubernetes
  • неблокирующий Домашнее задание 4
    Выдается после лекции 5. Содержит задание, посвященное обеспечению наблюдаемости приложения
  • неблокирующий Домашнее задание 5
    Выдается после лекции 6. Содержит задание, посвященное разработке шаблона сервиса по принципам гексагональной архитектуры
  • неблокирующий Домашнее задание 6
    Выдается лекции 7. Содержит задание, посвященное организации бизнес-логики приложения по принципам гексагональной архитектуры
  • неблокирующий Домашнее задание 7
    Выдается после лекции 8. Содержит задание, посвященное организации взаимодействия бизнес-логики и http-адаптера
  • неблокирующий Домашнее задание 8
    Выдается после лекции 9. Содержит задание, посвященное тестированию приложения
  • неблокирующий Домашнее задание 9
    Выдается после лекции 10. Содержит задание, посвященное работе с mongoDB
  • неблокирующий Домашние задание 10
    Выдается после лекции 11. Содержит задание, посвященное работе с gRPC
  • неблокирующий Домашнее задание 11
    Выдается после лекции 12. Содержит задание, посвященное работе с postgreSQL
  • неблокирующий Домашнее задание 12
    Выдается после лекции 13. Содержит задание, посвященное работе с Apache Kafka
  • неблокирующий Домашнее задание 13
    Выдается после лекции 14. Содержит задание, посвященное работе с многопоточностью
  • неблокирующий Экзамен
    Устный экзамен по рассмотренным в курсе темам в формате, приближенном к реальному собеседованию в МТС Диджитал.
Промежуточная аттестация

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

  • 2022/2023 учебный год 2 модуль
    0.061 * Домашнее задание 5 + 0.062 * Домашнее задание 8 + 0.061 * Домашнее задание 9 + 0.061 * Домашнее задание 12 + 0.062 * Домашнее задание 11 + 0.062 * Домашнее задание 13 + 0.061 * Домашнее задание 4 + 0.061 * Домашнее задание 7 + 0.062 * Домашнее задание 1 + 0.062 * Домашнее задание 6 + 0.062 * Домашние задание 10 + 0.2 * Экзамен + 0.061 * Домашнее задание 3 + 0.062 * Домашнее задание 2
Список литературы

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

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

  • Kleppmann, M. (2017). Designing Data-Intensive Applications : The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1487643
  • Нархид Ния, Шапира Гвен, Палино Тодд - Apache Kafka. Потоковая обработка и анализ данных - 978-5-4461-0575-5 - Санкт-Петербург: Питер - 2019 - 358152 - https://ibooks.ru/bookshelf/358152/reading - iBOOKS
  • Чистая архитектура : искусство разработки программного обеспечения, Мартин, Р., 2019
  • Язык программирования Go : пер. с англ., Донован, А. А. А., 2018

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

  • Архитектура корпоративных программных приложений, Д. Райс, М. Фоммел, Э. Хайет, Р. Ми, Р. Стаффорд, 544 с., Фаулер, М., 2004
  • Клеппман М. - Высоконагруженные приложения. Программирование, масштабирование, поддержка - 978-5-4461-0512-0 - Санкт-Петербург: Питер - 2022 - 357916 - https://ibooks.ru/bookshelf/357916/reading - iBOOKS

Авторы

  • Рословцева Кристина Олеговна
  • Оруджева Альбина Александровна