Описание проектной работы 10 спринта

В этом уроке вы познакомитесь с проектной работой десятого спринта. Это поможет вам оценить её сложность и распланировать своё время.
🔍 Обратите внимание: вам не нужно выполнять эти задания прямо сейчас. Можете пропустить этот урок и перейти к изучению теории. В конце спринта будет отдельный урок для сдачи проекта: там мы повторим задания и дадим форму, через которую нужно отправить решение.
В этот раз вы поработаете над кейсом «Медикаменте».

О компании

Компания «Медикаменте» предоставляет медицинские услуги. Сейчас у компании один офис, где работают 20 сотрудников и 15 медицинских специалистов.
Все операции с данными производят вручную:
  • Журналы приёма пациентов, учёт пациентов и платежей, медицинские карты, учёт анализов ― все эти документы сотрудники ведут в файлах Excel или хранят в виде сканов. Материалы лежат на общем диске.
  • Учёт денежных средств ведут в «1С Бухгалтерия предприятия». С ней интегрированы контрольно-кассовые машины (ККМ).
  • Учёт товарно-материальных ценностей (ТМЦ) осуществляют в «1С Торговля и склад». Программа интегрирована с «1С Бухгалтерия предприятия».
В этом году компания собирается открывать новые филиалы. Руководство ожидает, что число клиентов кратно возрастёт. Нужно автоматизировать всю работу таким образом, чтобы компания смогла поддержать пятикратный рост объёма данных и расширение команды.
Поскольку «Медикаменте» будет активно нанимать новых сотрудников, необходимо усилить безопасность медицинских карт. Они содержат конфиденциальные данные, которые необходимо защитить от несанкционированного доступа и утечек.
В будущем компания хочет уйти от ручной записи клиентов и перейти на единую систему хранения и управления данными. Она объединит журналы приёма пациентов, учёт пациентов и учёт оплаты услуг. Планируется, что система будет поддерживать мобильное приложение, в котором клиенты смогут самостоятельно записаться к врачу через личный кабинет (ЛК).

Проблемы компании

Компания обслуживает пациентов на территории Российской Федерации. Технический директор «Медикаменте» видит, что работа с конфиденциальными данными и PII не в полной мере отвечает требованиям законодательства РФ. Это создаёт репутационные и финансовые риски для компании. Если информация о нарушениях дойдёт до СМИ, «Медикаменте» потеряет доверие клиентов.
Исходя из этого, технический директор сформулировал две бизнес-потребности. Необходимо:
  • Изменить парадигму хранения и учёта конфиденциальных данных. Она должна соответствовать принципам и требованиям законодательства РФ.
  • Снизить риски утечки данных, чтобы увеличить доверие и лояльность клиентов.

Лендскейп компании

В компании шесть отделов:
  • Медицинские специалисты. Их 15 человек.
  • Ресепшен. Здесь работают три сотрудника. Они ведут журнал записей к специалистам и заключают клиентские контракты.
  • Кассиры. Их тоже трое. Они принимают платежи и ведут двойной учёт в Excel и 1C.
  • Бухгалтерия. Здесь тоже три специалиста. Они занимаются процессингом платежей, а также ведут бухгалтерию, которая связана с учётом кадров, выплатой зарплаты и налогами.
  • Склад. Три сотрудника ведут учёт ТМЦ и закупок оборудования для медицинских кабинетов.
  • IT-отдел. Здесь трое специалистов: технический директор, администратор сети и бизнес-аналитик. Технический директор выполняет функции архитектора. В его стек входят Java, Postgres, ClickHouse, Elastic, Kubernetes и Victoria Metrics. Администратор сети может всё ― от починки принтера до развёртывания кластера Kubernetes. Бизнес-аналитик умеет строить отчёты (P&L, ABC-анализ и другие) на основе Excel при помощи Jupiter и Python.
В рамках расширения бизнеса «Медикаменте» планирует открывать активный наём. Если для автоматизации процессов и усиления безопасности данных нужны новые сотрудники, руководство выделит необходимые ресурсы.

Текущее состояние архитектуры

У технологической базы компании довольно простой ландшафт. Есть несколько бэк-офис сервисов, которые закрывают разные потребности. Все IT-продукты построены на разных архитектурных принципах (монолит, общие ресурсы) и развёрнуты на собственном сервере компании. Он находится в том же здании, что и офис.
Технологический стек компании сейчас выглядит так:
  • Excel, Outlook и 1С. Их используют для работы на компьютерах в локальной сети компании.
  • «1С Бухгалтерия предприятия». Программа работает в файловом режиме. Её используют для учёта платежей, начисления зарплаты, кадрового учёта и подготовки документации для налоговых органов.
  • «1С Торговля и склад». Тоже работает в файловом режиме. В этой программе ведут учёт товарно-материальных ценностей (ТМЦ).
  • Физический сервер с Microsoft Windows Server 2022. На нём настроены Active Directory, DNS, DHCP, LDAP, файловый сервер, Exchange Mail Server. ККМ связаны с сервером через TCP/IP и компоненту 1С по технологии OLE.
Вот диаграмма с архитектурой системы в модели C4:

Принципы работы с данными

Любой бизнес-процесс в компании сопровождается обращением к конфиденциальным данным разного уровня.
При взаимодействии с персоналом медицинского центра пациент указывает персональные данные, в том числе ― Ф. И. О., дату рождения, телефон и электронную почту. Ещё он может заполнить расширенную форму, которая включает вопросы об адресе прописки, месте работы или учёбы, а также хронических заболеваниях. Всю эту информацию сотрудники обрабатывают вручную.
«Медикаменте» использует локальные способы хранения данных. В основном это Excel, JPG и PDF. Результаты работы с данными сохраняются и читаются в файлах и IT-системах без аудита действий.
Внутренние потоки данных между IT-продуктами никак не контролируются. Ограничения по передаваемым данным обусловлены только бизнес-процессами компании. Кроме доменной аутентификации, со стороны систем обработки нет ограничений на доступ к данным.

Цели бизнеса

Компания стремится обеспечить конфиденциальность, целостность и доступность данных. Теперь это приоритет «Медикаменте», который диктует подход к остальным трём целям компании. Сейчас подробно про них расскажем.
  1. Интеграция с API лаборатории анализов
«Медикаменте» хочет настроить интеграцию с API лаборатории анализов. Требования к интеграции такие:
  • Контракты API должны закрывать и скрывать категории данных, которые явно представляют конфиденциальные данные.
  • Необходимо предотвратить использование API контрактов, которые позволяют выполнять действия и получать данные внешним пользователям, которые они не должны иметь возможности получить, третьими лицами. Например, один пациент не должен иметь возможности увидеть данные другого пациента.
  • В будущем компания планирует развивать сервисы для клиентов, в том числе ― за счёт интеграций с партнёрами. Поэтому необходимо выстроить такой подход к работе с данными по умолчанию, чтобы новые интеграции не приходилось перевалидировать.
  1. Расширение направления обработки данных (новые сервисы на базе BI-, ML- и AI-технологий)
Компания накапливает данные, которые можно использовать для ведения бизнеса, извлекая из них знания и реализуя новые сервисы.
Сейчас сотрудникам очень неудобно обрабатывать данные, которые хранятся в Excel-файлах. Очень много ручной работы. Необходимо создать на основе этих файлов озеро данных, которое позволит автоматизировать построение BI, создание LLM и обучение AI на этих данных с применением ML.
  1. Разработка новых систем и миграция
Чтобы автоматизировать процессы, компания планирует разработать:
  • Портал для клиентов.
  • Портал для сотрудников ресепшена.
  • Платёжный шлюз.
  • CRM для сбора данных о клиентах.
  • Интеграцию с лабораторией анализов.
Промежуточное состояние (через пару месяцев). MVP, в котором клиент сможет самостоятельно записаться на приём к специалисту через портал компании. При этом команда ресепшена будет видеть эту запись: сотрудники смогут отследить запись в системе и за день до приёма напомнить про него и пациенту, и специалисту. Необходимо определить категории данных пациентов и разнести их по различным доменам. Для каждой категории данных определить роли (RBAC) или атрибуты (ABAC), на основании которых сотрудникам будет разрешён доступ к данным.
Финальное состояние (через год). Полностью автоматический процесс записи к специалисту через портал и мобильное приложение. Пациенту приходят оповещения о записи через мобильное приложение или голосового робота. В ответ на оповещение клиент может подтвердить или отменить запись, при этом система отправляет оповещение на ресепшен. В мобильном приложении пациент может просматривать только свои данные (анализы, заключения, договор), у него нет доступа к данным других пациентов. В системе есть возможность помечать тегами данные, которые необходимо защитить. Релиз проверяется в автоматическом режиме на работу с тегированными данными, после чего информация передаётся в систему мониторинга и алертинга. В системе появилась возможность проводить аудит доступа к данным и отслеживать нетипичные действия пользователей. В случае несанкционированного доступа к данным команде приходят оповещения.
При разработке решения необходимо обеспечить следующие НФТ:
  • Безопасность (конфиденциальность). Нужно гарантировать, что чувствительная информация будет безопасно храниться и обрабатываться. Чувствительные данные необходимо своевременно удалять. Если клиент обратится с соответствующим запросом, обработку его данных нужно прекратить.
  • Масштабируемость. Система должна стабильно работать в условиях расширения бизнеса: компания открывает филиалы, нанимает десятки сотрудников и даёт клиентам возможность работать через мобильное приложение.
  • Сопровождаемость. Нужно предусмотреть внесение изменений и улучшений в систему. Этот процесс должен быть лёгким.
  • Конфигурируемость. В конфигурации можно вносить изменения без дополнительных доработок.

Как подготовиться к работе

Подготовьте репозиторий, куда вы будете загружать решения заданий:
  1. Проект этого спринта вы будете сдавать в Git-репозитории. Создайте публичный репозиторий в GitHub или GitLab. Назовите его «architecture-medikamente».
  2. Проект состоит из двух заданий. Решение каждого задания нужно будет залить в отдельную директорию. Создайте в репозитории три директории и назовите их «Task1», «Task2».
  3. Чтобы ревьюеру было проще проверять вашу работу, а вам отслеживать изменения на разных итерациях, загрузите файлы в свой репозиторий и сделайте пул-реквест. На ревью нужно отправить ссылку на пул-реквест.
Если репозиторий готов, можно приступать к заданиям!

Задание 1

Чтобы заниматься реализацией новых продуктов, основанных на данных, необходимо системно решить проблему хранения конфиденциальных данных и управления ими. Сейчас данные лежат в непосредственной близости к пользователям. Есть риск утечки данных и неправомерного использования информации.
Чтобы защитить данные, необходимо использовать механизмы, инструменты и принципы работы с конфиденциальными данными (подходы Privacy By Design, Data Minimization и Data Lineage).
В рамках этого задания вам нужно проанализировать состояние As-Is, чтобы впоследствии приступить к его доработке.

Что нужно сделать

  1. Выявите конфиденциальные данные, которые не учтены во внутренних системах. Для этого проанализируйте информацию о компании. Создайте диаграммы потоков данных (Data Flow Diagrams). Для каждого процесса создайте отдельную диаграмму. Отобразите на них, как данные перемещаются по системам компании и какие операции над ними совершают.
  2. Проведите аудит мер по обеспечению безопасности данных. Сопоставьте процессы в компании с требованиями по обеспечению безопасности данных и архитектурными практиками в области безопасности конфиденциальных данных. Составьте список проблемных зон и сохраните его в отдельный документ.
  3. Подумайте, что можно улучшить. Составьте список данных для защиты и проставьте для каждого способы защиты (шифрование, обфускация, обезличивание). Разработайте механизм тегирования данных с использованием инструментов тегирования. Составьте список инструментов, способов и мер, которые позволят обеспечить конфиденциальность данных в указанных потоках. Доработайте диаграммы из предыдущего шага — отобразите на них, что следует использовать на каждом этапе потока.
При работе над диаграммами потоков данных ориентируйтесь на рекомендации, которые мы дали в уроке «Как управлять потоками данных», и гайд от Lucidchard.
Когда задание будет готово, загрузите диаграммы потоков данных и список проблем в директорию Task1 в рамках пул-реквеста.

Задание 2

В этом задании вам нужно предложить решение To-Be, которое решит проблемы, выявленные на прошлом этапе, и будет отвечать потребностям бизнеса. В ходе работы ориентируйтесь на требования из блока «Цели компании». Учитывайте как функциональные, так и нефункциональные требования к системе.

Что нужно сделать

Спроектируйте решение To-Be для MVP. Подготовьте диаграмму контейнеров в модели C4. Отобразите на ней свои предложения по усилению Data Privacy — как системы должны работать с конфиденциальными данными.
Опишите в блоках комментариев:
  • как данные хранятся,
  • периоды и условия уничтожения конфиденциальных данных после обработки,
  • какие способы защиты данных используются при хранении и передаче данных.
Когда задание будет готово, загрузите диаграмму в директорию Task2 в рамках пул-реквеста.

Как сдать работу

В начале работы у вас должен быть Git-репозиторий «architecture-medikamente», в котором есть две пустые директории. Чтобы сдать своё решение на проверку, вам нужно сделать пул-реквест, который будет содержать все изменения.
В итоге:
В директории Task1 должны лежать список проблем компании в разрезе работы с данными и диаграммы потоков данных.
В директории Task2 должна лежать диаграмма контейнеров в модели C4 c проектом архитектуры MVP.
Перед отправкой решения проверьте, что вы включили в пул-реквест все нужные файлы. Если всё готово, отправьте ссылку на пул-реквест во вкладке «Ревью».
Не забудьте проверить, что репозиторий публичный. Если создадите приватный репозиторий, ревьюер не сможет прокомментировать ваше решение и вернёт его на доработку.
После того как отправите ссылку, не вносите изменения в проект. Дождитесь комментариев ревьюера.