Skip to content

brstu/PIS-2026

Проектирование интернет-систем (ПИС) - 2026

Курс: 3
Семестр: 6
Форма аттестации: Зачёт

🎯 Про что этот курс?

Научимся делать интернет-системы правильно: не просто CRUD на коленке, а настоящую архитектуру с DDD, микросервисами, CQRS и другими buzzword'ами, которые реально работают! 💪

📚 Структура курса

  • 32 часа лекций (архитектура, паттерны, best practices)
  • 24 часа лабораторных (практика - руки в код!)
  • 9 лабораторных работ - одна предметная область, прокачивается от ЛР к ЛР

🚀 Лабораторные работы

Полный список из 40 вар вариантов →

С чего начать →

Учебные материалы →

Прогрессия: выбираешь один вариант в начале семестра и развиваешь его через все 9 лаб:

  1. Сценарий транзакции - моделируем use-case, находим точки отказа
  2. Гексагональная архитектура - порты/адаптеры, изоляция домена
  3. Доменный уровень - Entity, Value Object, Агрегаты, инварианты
  4. Уровень приложения - CQRS, команды, запросы, обработчики
  5. Инфраструктурный уровень - БД, репозитории, адаптеры, конфигурация
  6. Тестирование - unit/integration тесты, CI, покрытие кода
  7. CQRS - разделение чтения/записи, eventual consistency
  8. Модули и сервисы - декомпозиция на bounded contexts, микросервисы
  9. Protocol Buffers - gRPC, версионирование схем, производительность

🎨 Примеры вариантов

  • 🚀 Таск-трекер «Не прокрастинируй» - Ставим задачи быстрее, чем откладываем
  • 📅 Бронь аудиторий «Не занято?» - Бронируй до того, как заняли магистры
  • 🎓 Мини-LMS «Учись, не болей» - Короткие уроки, длинные знания
  • 🔥 Хэбит-трекер «Я молодец!» - Отметь прогресс - порадуй дофамин
  • 💸 Финучёт «Где мои деньги» - Траты видны - совесть включена

...и ещё 35 крутых тем!

🛠️ Технологический стек (на выбор)

Backend:

  • Java (Spring Boot)
  • C# (ASP.NET Core)
  • Python (FastAPI/Django)
  • Node.js (NestJS/Express)
  • Go (если вы хардкор 😎)

База данных:

  • PostgreSQL / MySQL (основная БД)
  • Redis (кэш, сессии)

Сообщения:

  • RabbitMQ / Kafka (для событий)

Контейнеризация:

  • Docker, Docker Compose

Тестирование:

  • JUnit/TestNG, xUnit, pytest, Jest - по стеку

API:

  • REST (OpenAPI/Swagger)
  • gRPC (Protocol Buffers)

📊 Оценивание

  • 70% - Лабораторные работы и их защита
  • 30% - Текущий контроль (опросы, мини-проверки)

Важно: Каждая лаба усложняет предыдущую - нельзя пропустить!

📝 Правила сдачи лабораторных

  • Формат: Репозиторий + README + защита
  • Критерии: Корректность архитектуры, соблюдение границ, тестируемость, качество кода
  • Git: Используй ветки для каждой лабы (lab-01, lab-02, ...)
  • Рефакторинг: Можно (и нужно!) улучшать код предыдущих лаб

Подписанные коммиты (обязательно)

Все коммиты должны быть подписаны и отображаться в GitHub как Verified.

1) Сгенерируйте ключ (интерактивно)

gpg --full-generate-key

Рекомендуемые ответы:

  • Type: RSA and RSA
  • Size: 4096
  • Expire: 0 (без срока) или 1y (на год)
  • Name/Email: тот же email, что в GitHub

2) Найдите Key ID

gpg --list-secret-keys --keyid-format=long

Скопируйте значение после sec rsa4096/ - это ваш KEY_ID.

3) Добавьте ключ в GitHub (публичную часть)

gpg --armor --export <KEY_ID>

Скопируйте вывод и добавьте в GitHub: Settings -> SSH and GPG keys -> New GPG key.

4) Включите подпись коммитов глобально

git config --global user.signingkey <KEY_ID>
git config --global commit.gpgsign true
git config --global gpg.program gpg

5) Проверка

git commit -m "test signed commit" --allow-empty
git log --show-signature -1

Если подпись не отображается как Verified, проверьте:

  • Email в ключе совпадает с email в GitHub
  • Публичный ключ добавлен в GitHub: Settings -> SSH and GPG keys

🎓 Результаты обучения

После курса ты сможешь:

  • Проектировать доменную модель (bounded context, entities/value objects, aggregates)
  • Применять архитектурные паттерны (hexagonal/clean architecture)
  • Разделять ответственность через CQRS
  • Декомпозировать систему на микросервисы
  • Проектировать API и интеграции (REST/gRPC, асинхронные сообщения)
  • Тестировать архитектуру (unit/integration тесты)
  • Применять базовые практики DevOps (CI/CD, контейнеризация)

📖 Материалы

Успеваемость

<style> table { border-collapse: collapse; } table th, table td { border: 1px solid #d0d7de; padding: 6px 8px; } table thead th { background-color: #f6f8fa; } </style>

💡 Советы

  1. Не откладывай - каждая лаба строится на предыдущей
  2. Читай код других систем (GitHub, open source проекты)
  3. Задавай вопросы - лучше переспросить, чем сделать неправильно
  4. Тестируй - код без тестов = дом без фундамента
  5. Рефактори смело - архитектура эволюционирует
  6. Используй AI - GitHub Copilot, ChatGPT для генерации шаблонов (но понимай, что генерируешь!)

🤝 Контакты преподавателя


Главное правило: Пишем код так, чтобы через год не ругать себя 😄

Удачи! 🚀

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors