ru:https://highload.today/blogs/kak-nastroit-rabotu-s-gdpr/ ua:https://highload.today/uk/blogs/kak-nastroit-rabotu-s-gdpr/
logo
Back-end      29/03/2021

Как настроить работу с GDPR

Константин Кичеглов BLOG

Backend Tech Lead в KeepSolid

Многие компании, которые работают с клиентами из Евросоюза, столкнулись с регулированием GDPR, вступившим в силу 25 мая 2018 года. KeepSolid — мультипродуктовая компания, а это значит, что нам пришлось разрабатывать решение, которое позволит выполнять требования GDPR как для отдельного продукта, так и для аккаунта в целом (KeepSolid ID).

Нормы GDPR обязывают компанию предоставлять конечному пользователю возможность:

  1. Полностью удалить свой аккаунт из сервиса.
  2. Получить экспорт всех хранящихся данных аккаунта.

Немного статистики: в среднем в месяц мы получаем 3500 запросов на удаление аккаунта и 800 запросов на экспорт данных.

Потенциальная проблема была в том, что каждый продукт — это своя отдельная экосистема с своим набором сервисов, API и т.д. А еще были следующие ограничения:

  1. Операции GDPR могут выполняться не мгновенно — особенно экспорт данных.
  2. В момент, когда пользователь запрашивает операцию в рамках GDPR, API одного из продуктов может быть недоступен.
  3. Один из продуктов должен отвечать за GDPR в целом, уведомлять о проблемах и обслуживать все операции.

Самый простой вариант реализации поддержки GDPR — отправка синхронных запросов каждому продукту, ожидание результатов ответов и отправка ответа пользователю. Но такой подход не проходит ни по одному из ограничений, которые я указал выше.

Онлайн-курс Бізнес-аналіз. Basic Level від Ithillel.
В ході курсу студенти навчаться техніці збору і аналізу вимог, документуванню та управлінню документацією, управлінню ризиками та змінами, а також навчаться моделювати процеси і прототипуванню.
Приєднатися

Учитывая все ограничения, мы решили реализовать шину данных на очередях. Основные сервисы, которые участвуют в реализации GDPR, такие:

  1. Персональный кабинет пользователя — отправная точка. Тут пользователь может выбрать все или каждый продукт в отдельности для экспорта или удаления данных.
  2. GDPR Command Service — сервис, который управляет всеми операциями GDPR.
  3. KeepSolid API — основной API для управления KeepSolid-аккаунтом.

В качестве транспорта сообщений был выбран RabbitMQ — благодаря удобному функционалу маршрутизации по разным очередям. Для временного хранилища данных экспорта используем Amazon S3.

Для примера рассмотрим обобщенную диаграмму активности GDPR-операции продукта VPN Unlimited:

GDRP в VPN Unlimited. Источник: KeepSolid

  1. Пользователь выбирает тип GDPR-операции и продукты, по которым хочет получить результат.
  2. Personal Office отправляет первичный запрос на основной API KeepSolid.
  3. Пользователь получает ответ «Ваш запрос поступил в обработку».
  4. Онлайн-курс "Business English for Marketers" від Laba.
    Опануйте професійну англійську для маркетингу.Розширте карʼєрні можливості для роботи з іноземними колегами: від розробки нових продуктів до презентації стратегії бренду.
    Детальніше про курс
  5. KeepSolid API формирует запрос с списком сервисов пользователя и другой полезной нагрузкой.
  6. Отправляем все данные в GDPR Service.
  7. GDPR Service сохраняет в базе состояние GDPR-операции и по отдельности состояния указанных продуктов.
  8. Отправляем сформированные сообщения в IN Exchange, маршрутизация при этом осуществляется с помощью routing key (см. иллюстрацию ниже).
  9. RabbitMQ, используя routing key, переадресовывает сообщение с GDPR-операцией продукта VPN Unlimited в нужную очередь.
  10. На стороне продукта VPN Unlimited запущен слушатель очереди, который вычитывает из нее сообщения.
  11. Слушатель обрабатывает GDPR-запрос, формирует полезную нагрузку, в случае экспорта — формирует файл и выгружает его на S3. Также на этом этапе формируется ответное сообщение, которое содержит: успешность операции, полезную нагрузку, ошибки в случае провала.
  12. Отправляем сообщение в общую очередь ответов.
  13. GDPR Service вычитывает очередь ответов от продуктов.
  14. Онлайн-курс "Створення електронної музики" від Skvot.
    Практичний курс про те, як знайти власний стиль та написати й зарелізити свій перший трек.
    Програма курсу і реєстрація
  15. Обновляем состояния операций по продуктам и GDPR-операции в целом.

 

Маршрутизация с помощью routing key. Источник: KeepSolid

В дальнейшем логика работы GDPR Service довольно проста. Если все сервисы отвечают успешно — формируется запрос с полезной нагрузкой для пользователя, и ему отправляется письмо через сервис рассылки. В случае же если GDPR операция не была финализирована в течение 24 часов, GDPR Service уведомляет backend-отдел об ошибке.

Плюсы и минусы нашего подхода

Плюсы:

  1. Асинхронность обработки запросов.
  2. Отказоустойчивость и возможность масштабирования. Каждый сервис ответствен только за свою часть.
  3. Довольно быстрая расширяемость за счет централизованности основных операций.

Минусы:

  1. Зависимость от инфраструктуры. В случае если RabbitMQ не доступен из «мира», а есть продукт, который размещается в другой экосистеме (например, в облаке), необходимо создавать промежуточного GDPR Worker.
  2. Онлайн-курс "Арт Менеджер" від Skvot.
    Навчіться шукати фінансування та планувати бюджет, керувати командою, запускати артпроєкти та пітчити їх так, щоб великі компанії захотіли колабитися.
    Детальніше про курс
  3. Согласованность формата сообщений в очередях.

Итог

В итоге такая реализация стала для нас первой и единственной — мы практически не столкнулись с проблемами GDPR. Мониторинг работает исправно, и если сервис конкретного продукта не смог совершить GDPR-операцию, это всегда можно оперативно починить вручную или изменить бизнес-логику обработки в конкретном продукте.

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Практичний інтенсивний курс з дизайну - Design Booster від Powercode academy.
Навчіться дизайну з нуля за 3 місяці і заробляйте перші $1000, навіть якщо ви не маєте креативного мислення, смаку або вміння малювати. Отримайте практичні навички, необхідні для успішної кар'єри в дизайні.
Зарееструватися

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Топ-5 самых популярных блогеров марта

PHP Developer в ScrumLaunch
Всего просмотровВсего просмотров
2434
#1
Всего просмотровВсего просмотров
2434
Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсего просмотров
113
#2
Всего просмотровВсего просмотров
113
Career Consultant в GoIT
Всего просмотровВсего просмотров
95
#3
Всего просмотровВсего просмотров
95
CEO & Founder в Trustee
Всего просмотровВсего просмотров
94
#4
Всего просмотровВсего просмотров
94
Рейтинг блогеров

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: