Дисциплина направлена на формирование у студентов профессиональных компетенций в области проектирования и реализации современных серверных приложений с использованием языка программирования Go. Основное внимание уделяется принципам построения конкурентных систем, разработке веб-сервисов, взаимодействию с системами управления базами данных, а также внедрению практик непрерывной интеграции и эксплуатации программного обеспечения в условиях, приближенных к промышленным.
Цель освоения дисциплины
Формирование у студентов теоретических знаний и практических навыков в области проектирования и реализации конкурентных серверных приложений на языке Go, включая владение моделью параллелизма, принципами построения веб-сервисов и интеграции с современными системами хранения данных.
Развитие у обучающихся компетенций самостоятельной разработки масштабируемого серверного программного обеспечения, готового к эксплуатации в промышленной среде.
Планируемые результаты обучения
Знает синтаксис и модель конкурентного выполнения языка Go (горутины, каналы, контексты), принципы построения веб-серверов на `net/http` и gRPC, основы микросервисной архитектуры, паттерны отказоустойчивого взаимодействия с внешними API, а также методы обеспечения наблюдаемости программных систем (логирование, метрики)
Умеет проектировать веб-приложения с чётким разделением слоёв ответственности, применять паттерн Repository для абстракции доступа к СУБД, реализовывать middleware для аутентификации и ограничения трафика, конфигурировать сервисы, настраивать сбор метрик Prometheus, а также разрабатывать сценарии непрерывной интеграции и доставки (CI/CD) с контейнеризацией
Имеет навыки написания и отладки конкурентного кода, профилирования производительности и выявления утечек памяти, модульного и интеграционного тестирования HTTP-сервисов, кодогенерации типовых компонентов, построения дашбордов мониторинга, а также проектирования архитектуры высоконагруженных сервисов и прохождения собеседований по системному дизайну
Содержание учебной дисциплины
Раздел 1. Основы языка Go и конкурентное программирование
Раздел 2. Веб-сервер, проектирование API и компоненты веб-приложений
Раздел 3. Разработка веб-сервиса, работа с базами данных и микросервисная архитектура
Раздел 4. Мониторинг, логирование и автоматизация жизненного цикла
Раздел 5. Углублённые темы и производительность
Элементы контроля
Домашнее задание
Пример задания:
Текстовая игра
В рамках выполнения задачи вы научитесь писать базовый код, поработаете со структурами, методами, функциями, if-ами, map-ами. Никаких дополнительных специфичных знаний вам не потребуется.
Основная цель задания – поупражняться в моделировании объектов.
Когда-то давно, когда компьютеры были большими, интернет – медленным, а графических ускорителей не было вовсе, уже существовали многопользовательские игры. Они имели текстовый интерфейс и назывались MUD, Multi User Dungeon.
Мы пишем простую игру, которая реагирует на команды игрока.
Максимальное количество очков за данное задание на платформе AllCups – 4. При наборе 4 очков ДЗ считается сданным и оценивается в 10 баллов на портале. Решения, не набравшие 4 очка, оцениваются в 0 баллов на портале.
Для отправки ДЗ откройте соответствующую ему страницу на AllCups. В левой части экрана будут приведены описание задания, ссылки на исходные материалы, а также критерии оценивания. В правой части экрана расположено окно для загрузки решения. Перетащите в него нужный файл или нажмите на любое место в области загрузки и в открывшемся окне укажите требуемый файл. После указания файла внизу появится кнопка «Отправить». По нажатию на неё решение отправляется на проверку. Проверка занимает некоторое время, так что наберитесь терпения. Результаты проверок можно посмотреть в правой части экрана под областью загрузки. Лучшее решение помечено зеленой галочкой и соответствующей надписью.
В качестве решения принимаются файлы с расширением .go или .zip. Важно, если возникает потребность в отправке нескольких файлов одним архивом (например, main.go + директория со вспомогательными функциями), то архивируйте именно указанные файлы, а не директорию с ними. Так, вышеобозначенный пример не стоит отправлять как архив папки solution, содержащей нужные файлы.
Рубежный контроль
Описание (может варьировать на усмотрение преподавателя): На выполнение теста отводится 90 минут. Тест состоит из 20 вопросов по всем пройденным темам. По каждой из тем обучающемуся выводится пять утверждений, среди которых он должен отметить верные. За каждую из тем обучающийся получает 1 балл при правильном выборе всех верных утверждений. Максимальное количество баллов –20.
Экзамен
Описание: Письменный экзамен проводится в форме ответов на вопросы экзаменационного билета. На подготовку ответа выделяется 2,5 часа. Экзамен состоит из нескольких задач разной стоимости. Каждая задача имеет вполне определенный ответ, который нужно выписать. Кроме ответа, нужно привести и его обоснование. Задача подразумевает довольно глубокое знакомство с теоретическим материалом.
Промежуточная аттестация
2026/2027 2nd module
Формула оценивания:
О_ИТОГ = SUM_7_ДЗ + SUM_2_РК+ SUM_ЭКЗ
Go на практике - Батчер М., Фарина М. - Издательство "ДМК Пресс" - 978-5-97060-477-9 - 2017 - русский - https://e.lanbook.com/book/97351 - ЛАНЬ - 97351
Нестеров, С. А. Базы данных : учебник и практикум для вузов / С. А. Нестеров. — 2-е изд., перераб. и доп. — Москва : Издательство Юрайт, 2026. — 258 с. — (Высшее образование). — ISBN 978-5-534-18107-4. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/583591 (дата обращения: 02.07.2026).
Instructors
Гусев Григорий Дмитриевич
Митин Пётр Алексеевич
Сушков Валентин Юрьевич
Чумаков Антон Сергеевич
Программа дисциплины
Аннотация
Цель освоения дисциплины
Планируемые результаты обучения
Содержание учебной дисциплины
Элементы контроля
Промежуточная аттестация
Список литературы
Рекомендуемая основная литература
Рекомендуемая дополнительная литература
Авторы