Дизайн систем 23/24

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

О курсе

Это страница курса "Дизайн систем" 2023-2024 года (1-2 модуль 4 курса ПМИ).

Занятия проходят по четвергам в 18:10 - 21:00 онлайн, объявления о любых изменениях будут в Telegram-канале.

Преподаватели: Стас Щетинников, Артем Кузнецов, Илья Жигалко, Егор Карпов

Полезные ссылки

Канал курса: https://t.me/+ZikB0F8elb1kOTE6

Чат курса: https://t.me/+0azNletbfBQ1NDRi

Все записи: https://disk.yandex.ru/d/jMjWZTmQP_-GoQ

Лекции и семинары

  • 07.09. Основы системного проектирования. [Презентация | Запись] Архитектура. Жизненный цикл архитектуры. Архитектурные драйверы и архитектурно значимые требования (ASR). Проектирование и оценка архитектуры. Waterfall.
  • 14.09. Docker [Презентация | Запись] Архитектурные паттерны. CI/CD. VM vs Containers. Конфигурирование приложения. Паттерны деплоя. Service discovery. Health check. Docker.
  • 21.09 Функциональная декомпозиция [Презентация | Запись] Модифицируемость и ее оценка. Louse coupling & high cohesion. Строительные блоки. DDD. Модель предметной области.
  • 29.09 Взаимодействие сервисов [Презентация | Лекция Семинар] Синхронное и асинхронное API. Паттерны. Оркестрация и хореография. Версионирование. IDL и API first дизайн. Rich vs Data Centric API. REST. gRPC.
  • 05.10 Событийная модель и кафка [Презентация | Запись] События. Паттерны проектирования событий. Event sourcing. Stream processing. RabbitMQ. Kafka.
  • 12.10 Хранилища, модели хранения данных [Презентация | Запись]
  • 19.10 Надежность и отказоустойчивость [Презентация | Запись] Терминология. Нагрузочное тестирование. Rate limiting и throttling. Retry, circuit breaker, load shedding. Надежность пишущей нагрузки. Надежность асинхронного взаимодействия.
  • 02.11 Безопасность [Презентация | Запись]
  • 09.11 Наблюдаемость и надежность [Запись] Kubernetes. Мониторинг. Алертинг. Service mesh.
  • 16.11 Аналитика ETL. MapReduce. Data Warehouse (DWH).

Домашние задания

1. Docker

Форма для сдачи: https://docs.google.com/forms/d/1c52c2IKsGEqNQb6NdBh07biV_rd3mHS2jcIHBdtbhgE

Дедлайн: 25 октября 23:59

Шаг 1. Создать веб сервис, который доступен в сети на порту 8000 и имеет один http-метод:

GET /health/

RESPONSE: {"status": "OK"}

Можно использовать любой язык программирования и любые фреймворки. Проще всего будет начать с Python и FastAPI, пример его использования был на семинаре по Docker.

Шаг 2. Cобрать локально образ приложения в докер контейнер под архитектуру AMD64.

Шаг 3. (8 баллов) Сохранить код сервиса и Dockerfile в приватный репозиторий на github и добавить в коллабораторы karpp.

Шаг 4. (2 балла) Запушить образ в dockerhub. (Документация)

Примечания

Обратите внимание, что при сборке на M1 при запуске вашего контейнера на стандартных платформах будет ошибка такого вида: standard_init_linux.go:228: exec user process caused: exec format error. Чтобы избежать этого для сборки нужно указать тип платформы linux/amd64: docker build --platform linux/amd64 -t tag. Более подробно можно прочитать в статье: https://programmerah.com/how-to-solve-docker-run-error-standard_init_linux-go219-exec-user-process-caused-exec-format-error-39221/.

2. CRUD

Форма для сдачи: https://docs.google.com/forms/d/1YGDpg-odldRJiqW6ZqBb5znJsAfHt2l-3TlQsINajaA

Дедлайн: 8 ноября 23:59

Задание: Сделать RESTful CRUD по созданию, удалению, просмотру и обновлению пользователей. Данные должны сохраняться в базе данных, которую вы можете выбрать на ваше усмотрение и запускать в docker-compose локально. Сервис должен предоставлять API аналогичное данному (такие же методы и такая же структура пользователя).

На данный момент не требуется делать какую-либо аутентификацию, это будет в следующем дз.

В форму нужно сдать ссылку на репозиторий, содержащий код, Dockerfile и docker-compose.yml для запуска сервиса и базы данных.

Итоговая оценка за курс

Итог = min(Округл(0.2 * ДЗ1 + 0.3 * ДЗ2 + 0.5 * ДЗ3 + 0.6 * ДЗ4 + 0.3 * ДЗ5 + 0.3 * Э), 10)

ДЗ –– оценки за домашние задания

Э –– устный экзамен

Округление арифметическое.