Запити зацікавлених осіб

Вступ

Цей розділ призначений для осіб, які зацікавленні у використанні системи Intelligent Image Analyzer. Він містить інформацію про цільову аудиторію, різноманітні бізнес-сценарії та формулює основні вимоги до різних аспектів системи.

Мета

Надати особам, зацікавленим у використанні системи Intelligent Image Analyzer, повну інформацію щодо цільової аудиторії продукту, різних бізнес-сценаріїв та вимог до системи, щоб вони могли краще зрозуміти можливості та переваги використання цієї системи.

Контекст

Цей документ детально описує всі можливі сценарії взаємодії із системою, та вимоги, яким має відповідати готовий продукт.

Основні визначення

  • Мікросервісна архітектура - альтернатива монолітній архітектурі, яка передбачає розбиття програмного забезпечення на невеликі, автономні сервіси, які реалізують певні функції і спілкуються між собою через визначені API. Кожен мікросервіс може бути розроблений, розгорнутий і масштабований незалежно від інших, що дозволяє збільшити швидкість розробки та поліпшити надійність системи.

  • Representational State Transfer (Rest) - архітектурний стиль інтерфейсів, що використовує стандартні HTTP-методи для обміну даними між системами.

  • Автентифікація - процес перевірки ідентичності користувача або системи перед наданням доступу до ресурсів.

  • API Gateway - сервіс, який діє як єдина точка входу для всіх клієнтських запитів до мікросервісів у системі. Він відповідає за маршрутизацію запитів до відповідних мікросервісів та агрегацію результатів від різних сервісів.

  • Computer vision - галузь штучного інтелекту, яка надає комп'ютерам здатність "бачити" і інтерпретувати візуальну інформацію, аналізуючи зображення та відео. Це може включати розпізнавання об'єктів, відстеження руху, визначення особливостей сцен та інше.

  • gRPC - високопродуктивний фреймворк відкритого коду для виклику віддалених процедур (RPC), розроблений Google. Він використовує HTTP/2 для транспорту, Protocol Buffers як мову опису інтерфейсу, і забезпечує можливості, такі як аутентифікація, навантажувальне балансування, блокування і контроль доступу.

  • Message broker - посередник, який управляє передачею повідомлень між компонентами системи, забезпечуючи асинхронну комунікацію та розподіл навантаження.

  • Advanced Message Queuing Protocol (AMQP) - відкритий стандартний протокол для асинхронного обміну повідомленнями між системами. AMQP визначає механізми для маршрутизації, чергування та надійної доставки повідомлень, забезпечуючи сумісність та надійність у складних розподілених системах.

  • RabbitMQ - відкритий message broker, що слугує проміжною платформою для обміну повідомленнями між різними компонентами або системами в мікросервісній архітектурі. Він реалізує протокол AMQP та підтримує різноманітні меседжинг-патерни, включаючи роботу з чергами, публікацію/підписку, маршрутизацію та теми.

  • Secure Sockets Layer / Transport Layer Security (SSL/TLS) - криптографічні протоколи для забезпечення безпечної передачі даних через мережу, зашифровуючи інформацію між веб-сервером і браузером.

  • JSON Web Token (JWT) - відкритий стандарт для створення токенів доступу, що дозволяє безпечно передавати інформацію між сторонами у формі JSON-об'єкта, здатного бути підписаним і зашифрованим.

  • Хеш сіль - випадково згенерована додаткова інформація, яка додається до пароля перед його хешуванням. Використання солі робить кожен хеш унікальним навіть для однакових паролів і значно ускладнює використання райнбоу-таблиць для взлому паролів.

  • Rainbow table - пре-вирахована таблиця значень хешів для кожного можливого пароля. Ці таблиці дозволяють швидко знаходити відповідність між хешем та вихідним паролем, значно скорочуючи час, необхідний для взлому паролів. Використання солі при хешуванні паролів робить райнбоу-таблиці неефективними.

  • Brute-force attack - метод злому, при якому автоматизована система перебирає всі можливі комбінації паролів або ключів шифрування до знаходження правильного. Цей метод є дуже часозатратним і його ефективність зменшується зі збільшенням довжини пароля та складності алгоритму хешування.

  • Dictionary attack - метод злому, при якому зловмисник використовує список загальновідомих, часто використовуваних або потенційно можливих паролів (словник) для спроби вгадати пароль. В порівнянні з brute-force атаками, словникові атаки є швидшими, але менш ефективними проти складних, унікальних паролів.

  • bcrypt - криптографічний алгоритм хешування паролів, розроблений для забезпечення безпеки зберігання паролів. Він використовує сіль для запобігання атакам за допомогою райнбоу-таблиць та має можливість налаштування кількості ітерацій (коефіцієнт складності), що робить атаки методом грубої сили менш ефективними.

Зміст

Бізнес сценарії

Користувач без облікового запису

IDDC_1.1

НАЗВА

Реєстрація користувача

УЧАСНИКИ

Користувач, API Gateway, Auth Service

ПЕРЕДУМОВИ

Користувач не має облікового запису в системі

РЕЗУЛЬТАТ

Створений обліковий запис користувача

ВИКЛЮЧНІ СИТУАЦІЇ

DC_EX_1 (Тіло запиту не відповідає очікуваній структурі)

DС_EX_2 (Надані користувачем дані не відповідають встановленим вимогам)

DС_EX_3 (Користувач з вказаною електроною адресою вже існує в системі)

ОСНОВНИЙ СЦЕНАРІЙ

  1. Користувач надсилає HTTP запит до API Gateway на визначений endpoint з визначеною структурою тіла запиту.

  1. API Gateway надсилає відповідне повідомлення в чергу до Auth Service.

  1. Auth Service первіряє вміст отриманого повідомлення на відповідність встановленим вимогам.

Можливі виключні ситуації: DC_EX_1, DC_EX_2

  1. Auth Service створює нового користувача у відповідній таблиці бази даних.

Можливі виключні ситуації: DC_EX_3

  1. Auth Service генерує унікальне посилання для підтвердження електронної адреси користувача та надсилає його до API Gateway.

  1. API Gateway надсилає HTTP відповідь користувачу із сгенерованим посиланням та повідомляє про необхідність підтвердження електронної адреси.

  1. Користувач робить GET запит на отриманє посилання та підтверджує електрону адресу пов'язану із обліковим записом.

IDDC_1.2

НАЗВА

Аналіз зображення

УЧАСНИКИ

Користувач, API Gateway, Auth Service, CV Service

ПЕРЕДУМОВИ

Користувач не вказав JWT у заголовках HTTP запиту Користувач використав меньше трьох спроб для аналізу

РЕЗУЛЬТАТ

Користувач отримує опис зображення

ВИКЛЮЧНІ СИТУАЦІЇ

DС_EX_1 (Користувач не вказав необхідні параметри для аналізу зображення)

ОСНОВНИЙ СЦЕНАРІЙ

  1. Користувач надсилає HTTP запит до API Gateway на визначений endpoint з необхідними параметрами та бінарними даними (зображенням).

  1. API Gateway перевіряє наявність JWT у заголовках запиту.

  1. API Gateway перевіряє чи не вичерпав користувач ліміт запитів на аналіз.

  1. API Gateway надсилає бінарні дані до Computer Vision Service для аналізу.

  1. Computer Vision Service виконує аналіз зображення та зберігає результати у базу даних.

Можливі виключні ситуації: DС_EX_1

  1. Computer Vision Service надсилає відповідь до API Gateway.

  1. API Gateway повертає HTTP відповідь користувачу із описом зображення в тілі.

IDDC_1.3

НАЗВА

Вичерпання ліміту запитів

УЧАСНИКИ

Користувач, API Gateway

ПЕРЕДУМОВИ

Користувач не вказав JWT у заголовках HTTP запиту Користувач використав три спроби для аналізу

РЕЗУЛЬТАТ

Користувач отримує повідомлення про вичерпаний ліміт запитів

ВИКЛЮЧНІ СИТУАЦІЇ

ОСНОВНИЙ СЦЕНАРІЙ

  1. Користувач надсилає HTTP запит до API Gateway на визначений endpoint з необхідними параметрами та бінарними даними (зображенням).

  1. API Gateway перевіряє наявність JWT у заголовках запиту.

  1. API Gateway перевіряє чи не вичерпав користувач ліміт запитів на аналіз.

  1. API Gateway повертає HTTP відповідь з повідомленням про вичерпаний ліміт запитів.

Користувач із існуючим обліковим записом

IDDC_2.1

НАЗВА

Генерація JWT

УЧАСНИКИ

Користувач, API Gateway, Auth Service

ПЕРЕДУМОВИ

Користувач має підтверджений обліковий запис в системі

РЕЗУЛЬТАТ

Користувач отримує сгенерований JWT

ВИКЛЮЧНІ СИТУАЦІЇ

DC_EX_1 (Тіло запиту не відповідає очікуваній структурі)

DС_EX_2 (Тіло запиту містить некоректні дані)

ОСНОВНИЙ СЦЕНАРІЙ

  1. Користувач надсилає HTTP запит до API Gateway на визначений endpoint з визначеною структурою тіла запиту.

  1. API Gateway надсилає відповідне повідомлення в чергу до Auth Service.

  1. Auth Service перевіряє вміст отриманого повідомлення на коректність даних та наявність відповідного облікового запису в базі даних.

Можливі виключні ситуації: DC_EX_1, DС_EX_2

  1. Auth Service генерує JWT пов'язанний із акаунтом користувача та надсилає повідомлення до API Gateway.

  1. API Gateway повертає HTTP відповідь користувачу із сгенерованими токенами у тілі.

IDDC_2.2

НАЗВА

Оновлення JWT

УЧАСНИКИ

Користувач, API Gateway, Auth Service

ПЕРЕДУМОВИ

Користувач має дійсний Refresh Token

РЕЗУЛЬТАТ

Користувач отримує новий JWT

ВИКЛЮЧНІ СИТУАЦІЇ

DC_EX_1 (Термін життя Refresh Token`у закінчився)

DС_EX_2 (Некоректний Refresh Token)

ОСНОВНИЙ СЦЕНАРІЙ

  1. Користувач надсилає HTTP запит до API Gateway на визначений endpoint з визначеною структурою тіла запиту.

  1. API Gateway надсилає відповідне повідомлення в чергу до Auth Service.

  1. Auth Service перевіряє вміст отриманого повідомлення.

Можливі виключні ситуації: DC_EX_1, DС_EX_2

  1. Auth Service генерує новий JWT та надсилає повідомлення до API Gateway.

  1. API Gateway повертає HTTP відповідь користувачу із новими токенами у тілі.

Аутентифікований користувач

IDDC_3.1

НАЗВА

Аналіз зображення

УЧАСНИКИ

Користувач, API Gateway, Auth Service, CV Service

ПЕРЕДУМОВИ

Користувач вказав дійсний JWT у заголовках HTTP запиту

РЕЗУЛЬТАТ

Користувач отримує опис зображення

ВИКЛЮЧНІ СИТУАЦІЇ

DС_EX_1 (Термін життя Access Token`у закінчився)

DС_EX_2 (Користувач не вказав необхідні параметри для аналізу зображення)

ОСНОВНИЙ СЦЕНАРІЙ

  1. Користувач надсилає HTTP запит до API Gateway на визначений endpoint з необхідними параметрами та бінарними даними (зображенням).

  1. API Gateway надсилає відповідне повідомлення в чергу до Auth Service.

  1. Auth Service перевіряє наявність та валідність JWT у заголовках запиту.

Можливі виключні ситуації: DС_EX_1

  1. API Gateway надсилає бінарні дані до Computer Vision Service для аналізу.

Можливі виключні ситуації: DС_EX_2

  1. Computer Vision Service виконує аналіз зображення та зберігає результати у базу даних.

  1. Computer Vision Service надсилає відповідь до API Gateway.

  1. API Gateway повертає HTTP відповідь користувачу із описом зображення в тілі.

Адміністратор

IDDC_4.1

НАЗВА

Редагування запису у БД

УЧАСНИКИ

Адміністратор, СУБД

ПЕРЕДУМОВИ

Користувач має роль адміністратора в СУБД

РЕЗУЛЬТАТ

Оновлений запис в таблиці БД

ВИКЛЮЧНІ СИТУАЦІЇ

ОСНОВНИЙ СЦЕНАРІЙ

  1. Адміністратор підключається до БД.

  1. СУБД перевіряє облікові дані.

  1. Адміністратор вносить зміни в таблицю БД.

  1. Адміністратор робить коміт.

  1. СУБД збергіає внесені зміни.

Короткий огляд продукту

Intelligent Image Analyzer - це платформа для аналізу зображень, яка використовує технології computer vision для надання детального опису вмісту зображень. Цей проект розроблений для того, щоб допомогти користувачам отримувати інформацію про зображення автоматично, зменшуючи потребу в ручному аналізі та інтерпретації.

Платформа пропонує два режими користування:

  • для автентифікованих користувачів - надається безлімітний доступ до функцій аналізу зображень;

  • для неавтентифікованих користувачів - надається можливість провести до 10 аналізів зображень.

Це робить Intelligent Image Analyzer зручним як для індивідуальних користувачів, так і для організацій, які потребують масштабного аналізу візуального контенту.

Основні категорії користувачів платформи:

  • Розробники та інженери з даних - фахівці, які інтегрують Intelligent Image Analyzer у свої проекти або використовують його для автоматизації аналізу зображень та покращення візуального розпізнавання.

  • Компанії та бізнес-користувачі - організації, які потребують аналізу великих об'ємів зображень для досліджень ринку, контент-менеджменту або цілей маркетингу.

  • Наукові дослідники - особи, що займаються науковими дослідженнями та використовують аналіз зображень для збору даних, їх інтерпретації та аналізу в рамках своїх проектів.

  • Навчальні заклади - університети та школи, які включають Intelligent Image Analyzer у свої навчальні курси з комп'ютерного зору, штучного інтелекту та суміжних дисциплін.

Вимоги

Функціональність

  • Реєстрація: Процес реєстрації користувачів в системі Intelligent Image Analyzer є вступним етапом, що дозволяє отримати доступ до комплексного аналізу зображень. Потенційний користувач надає свої персональні дані (ім'я, прізвище, електронна адреса, пароль). Дані передаються до auth-svc, де вони зберігаються у базі даних для створення облікового запису користувача. Для завершення процесу реєстрації та підтвердження акаунту, на вказану електронну адресу надсилається лист із посиланням для активації аккаунта. Користувач має перейти за цим посиланням для завершення процедури реєстрації.

  • Автентифікація: Автентифікація користувачів здійснюється через введення електронної адреси та паролю. Ці дані перевіряються auth-svc на відповідність зареєстрованим у базі даних. У разі успішної верифікації користувач отримує JWT, що діє як цифровий ключ для доступу до функціоналу системи, зокрема до сервісу обробки зображень. JWT слугує механізмом забезпечення ідентифікації користувача та його прав на отримання необмеженого доступу до аналізу зображень для автентифікованих користувачів.

  • Завантаження зображення та отримання опису: Користувачам надається можливість завантажувати зображення для їх аналізу. Сервіс для маршрутизації перенаправляє запити на завантаження зображень до grpc-vision-svc, який використовує алгоритми сomputer vision для обробки та аналізу зображень. В результаті аналізу, користувач отримує текстовий опис вмісту завантаженого зображення.

Практичність

  • Ефективність обробки зображень: Сервіс забезпечує швидку та точну обробку зображень, мінімізуючи час від завантаження зображення до отримання результатів аналізу.

  • Широкий спектр розпізнавання об'єктів: Сервіс включає розширені можливості для розпізнавання широкого спектру об'єктів на зображеннях, від простих форм до складних сцен, щоб задовольнити потреби різноманітних категорій користувачів.

  • Доступність: сервіс є безкоштовним без необхідності підписки або оплати.

  • Зрозуміла та доступна документація: Детально структурована і охоплює всі аспекти використання сервісу, забезпечуючи легкий доступ до інформації для користувачів будь-якого рівня.

Надійність

  • Зашифроване з'єднання: SSL/TLS забезпечує безпеку між мікросервісами, зашифровуючи комунікацію між ними та перевіряючи їх аутентичність. Він працює шляхом створення зашифрованого каналу, обміну сертифікатами для перевірки ідентичності та генерації спільного ключа для шифрування даних.

  • Хешування паролів через bcrypt: Забезпечує зберігання паролів у безпечному вигляді. Bcrypt є так званим 'повільним' алгоритмом хешуваня, що значно ускладнює Brute-force та dictionary атаки. Bcrypt також включає в себе "сіль" (salt), яка змішується з паролем перед хешуванням, щоб ускладнити атаки з використанням "райдужних таблиць" (Rainbow table). Це означає, що навіть якщо двоє користувачів використовують один і той же пароль, їх хеші будуть різними через унікальну сіль для кожного користувача. Це допомагає забезпечити високий рівень безпеки паролів у системі.

  • Політика складних паролів: Визначені вимоги до паролів змушують користувачів вказувати складні паролі при реєстрації (паролі мають відповідати певним вимогам: мінімальна довжина, наявність символів різних регістрів, наявність спецсимволів та ін.), що суттєво ускладнює підбір паролів.

  • Надійність доставки: Використання протоколів gRPC та AMQP гарантує надійність обміну даними у системі. Обидва протоколи забезпечують цілісність даних, гарантовану доставку повідомлень, масштабованість та робустність системи. Вони також підтримують шифрування та аутентифікацію, забезпечуючи безпеку передачі інформації в мережі. Такий підхід забезпечує ефективну та надійну взаємодію між компонентами системи.

  • Безпека пам'яті: Для розробки найбільш складної та ключової частини системи (Computer Vision Service) було обрано мову програмування Rust, яка є надійним вибором через її вбудовані механізми безпеки та надійності. Rust відома своєю системою управління пам'яттю, яка надійно захищає від небезпечних ситуацій, таких як помилки доступу до пам'яті, нульові покажчики, переповнення буфера, витоки пам'яті тощо. Це допомагає уникнути багатьох типових помилок, які можуть призвести до вразливостей та непередбачуваної поведінки системи. Rust також використовує строгу систему типів для перевірки на стадії компіляції, що сприяє виявленню багатьох помилок ще до виконання програми, забезпечуючи надійність та стабільність роботи системи.

Продуктивність

  • Висока швидкість обробки зображень: Використання мови Rust для CV сервісу дозволяє отримати високу швидкість обробки завдяки низькорівневій природі мови програмування Rust і вбудованої підтримки асинхронних операцій. Використання gRPC для взаємодії між API Gateway та Computer Vision Service забезпечує ефективну передачу даних і зменшує накладні витрати у порівнянні з іншими механізмами, такими як REST (gRPC дозволяє передавати дані у 5-7 разів швидше).

  • Масштабування: Використання мікросервісної архітектури дозволяє гнучко масштабувати окремі компоненти системи незалежно один від одного. Це особливо важливо в області обробки зображень, де може знадобитися різна кількість ресурсів відповідно до навантаження на систему.

  • Низька латентність: Використання RabbitMQ для взаємодії між API Gateway та Auth Service дозволяє забезпечити низьку затримку завдяки асинхронній обробці запитів і можливості розпаралелювання обробки даних.

Last updated