Проектная магистратура Университета ИТМО

Автоматизация Project and Reporting решения с последующим внедрением в корпоративное бизнес-окружение

Руководитель от корпоративного партнера: Носов Роман Дмитриевич, Аркадия

Набор в этот проект закончен.

Руководитель

Носов Роман Дмитриевич – выпускник ИТМО по следующим направлениям:

  • Прикладная информатика, кафедра информационных систем, красный диплом (бакалавриат)
  • Разработка корпоративных ИС, кафедра информационных систем, красный диплом (магистратура)

Опыт коммерческой разработки: 5,5 лет (с октября 2015 года).

Должность: Team Leader. Компания: АО “Аркадия”. Спикер на Arcadia KSS.

Краткая аннотация

Главная ценность почти любой компании – это человеческие ресурсы. И важная задача компании – это их эффективное использование. Но когда компания становится слишком большой это может оказаться достаточно сложным в условиях постоянно меняющегося бизнеса. Для решения этой проблемы необходимо гибкое, автоматизированное решение по управлению персоналом. Ввиду того, что процессов в HCM системе может быть много – единое решение делится на модули, каждый из которых функционирует в рамках своей бизнес-модели. Пользователи могут подключать необходимые только им модули. Такое облачное Suite решение разворачивается постепенно в окружениях, начиная с окружения разработчика (Dev) и заканчивая окружением заказчика (Live). Для приоритезации заказчиков разворачиваемые сервисы можно объединять в кластеры (Azure Release Pipeline Rings):

На проекте вы сможете познакомиться, развить и дополнить Suite решение двумя модулями.

  1. Projects – модуль, с помощью которого клиент сможет создавать внутри компании необходимые проекты, а также выбирать для них активности (к примеру: проект - ИСУ, активности – Development, Testing, Poker-Planning). Можно будет создавать проекты на основе готовых шаблонов. Модуль будет иметь гибкую конфигурацию.
  2. Registrations – модуль управлением затраченным временем на проект, либо пару проект и активность. Менеджер будет иметь возможность взаимодействия с имеющимися регистрациями (Reject, Adjust hours, Verify). Также он будет иметь возможность группировать регистрации либо использовать систему умного поиска (Advanced Search)

Преимуществом проекта является широкий спектр современных технологий. Особенностью является спецификация GraphQL в качестве контрактов. Вы сможете попробовать себя в роли Full-Stack разработчика, используя все возможности технологий .NET 5 и Angular 11. Изучите клиент-серверное взаимодействие и столкнётесь с задачами как общего плана, так и узкоспециализированного. Вы получите огромный опыт письменного и вербального общения с англоязычными заказчиками (Aditro, Швеция – один из главных заказчиков компании АО “Аркадия”). Также вы сможете попробовать себя в роли архитектора базы данных MS SQL Server. Будете способны читать планы выполнения запросов и оптимизировать их в зависимости от данных, учитывая их распределения. Узнаете о плюсах и минусах физических операторов соединения:

  1. Hash join
  2. Merge join
  3. Nested Loop join

Также вы сможете познакомиться со структурой SSO, научитесь верифицировать JWT токены с помощью внутренних систем платформы .NET 5. Познакомитесь с протоколом делегирования обязанностей OAuth 2.0. Помимо всего вы сможете развиваться в направлении DevOps, научитесь разворачивать приложения в различных средах, использую Docker и Swarm.

План действий

Направление № 1: Проектирование микросервисной архитектуры.

Примеры решаемых задач:

  1. Определение границ контекста (Domain Driven Design)
  2. Разработка контрактов приложений
  3. Поддержка обратной совместимости в рамках специфичного окружения
  4. Общение с заказчиком с дальнейшим разбиением на задачи в рамках Azure DevOps Boards (Features, User Stories, Tasks, Bugs)
  5. Интеграция с другими сервисами (синхронно или асинхронно)

Направление № 2: Разработка серверной бизнес-логики на базе спецификации GraphQL. Фреймворк HotChocolate 11. Миграция с 11-ой версии на 12-ую.

Примеры решаемых задач:

  1. Анализ существующих решений для платформы .NET
  2. N+1 проблема, Facebook DataLoaders
  3. Генерация схемы
  4. Создание собственных директив
  5. Решение проблемы параллельного выполнения GraphQL Resolvers с помощью гибридных конструкций синхронизации
  6. Анализ примитивных и гибридных конструкций синхронизации
  7. Оптимизация приложения с помощью прекомпилированных запросов
  8. Оптимизация запросов с помощью Batch Loaders (HTTP multipart form)
  9. Локализация
  10. Профилирование приложения с помощью различных утилит (dotnet cli, VMmap)

Направление № 3: Обеспечение безопасности, OIDC протокол, OAuth 2.0

Примеры решаемых задач:

  1. Определение Neptune функций пользователя по набору ролей
  2. Применение встроенных AspNet Core middleware-компонентов аутентификации и авторизации через внешний STS сервер (Identity Server 4)
  3. Анализ типов грантов
  4. Создание делегируемого гранта для расширения scope’ов токена

Направление № 4: Разработка клиентской стороны приложения на базе фреймворка Angular 11

Примеры решаемых задач:

  1. Взаимодействие с имеющейся библиотекой готовых компонентов Common Look
  2. Генерация типов по серверной схеме GraphQL
  3. Конфигурация oidc-клиента в зависимости от окружения

Направление № 5: Проектирование базы данных, Entity Framework Core

Примеры решаемых задач:

  1. Анализ недостатков EF Core, сравнение с EF Framework
  2. Разработка даталогической модели
  3. Определение необходимых индексов (Clustered/NonClustered)
  4. Решение проблемы Bookmark Lookup
  5. Определение SQL Server Tipping point
  6. Bookmark Lookup Deadlocks
  7. Оптимизация SQL-запросов, генерируемых EF Core
  8. Миграции данных с помощью утилиты dotnet ef

Решаемые технические проблемы

  1. Развитие имеющегося корпоративного продукта
  2. Внедрение GraphQL спецификации в микросервисную архитектуру
  3. Создание модулей для управления затраченного времени на проектах
  4. Создание отказоустойчивого приложения
  5. Бесшовная интеграция модулей с существующим HCM решением

Стек технологий

  • Управление проектом и развёртывание:
    1. Azure DevOps
    2. Git
    3. CI/CD Pipelines
    4. Docker
    5. Swarm
  • Разработка:
    1. .NET 5
    2. AspNet Core 3.1
    3. RabbitMq
    4. GraphQL
    5. HotChocolate 12
    6. Angular 11
    7. C# 9
    8. TypeScript 4.3
    9. Entity Framework Core 3.1
    10. MS SQL Server, T-SQL

Предварительный перечень курсов

  1. SQL Server passion by Klaus Aschenbrenner
  2. Designing & Versioning HTTP/REST API’s by Jeffrey Richter
  3. Arcadia Dev meetups
  4. Raw Coding
  5. Микросервисная архитектура
  6. Технологии веб разработки
  7. Microsoft Learn C# Courses

Кем станет студент по завершению магистратуры

В зависимости от выполняемых задач внутри проекта студент может стать:

  • Архитектором баз данных
  • Full-Stack разработчиком
  • DevOps инженером
  • Менеджером проектов

Пререквизиты (входные требования)

  • Программирование на языках C#, Javascript, Typescript
  • Знание T-SQL
  • Архитектура компьютера
  • Понимание ООП
  • REST vs GraphQL
  • Синхронное и асинхронное общение сервисов