Бакалавриат
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