Як менеджеру обговорювати архітектуру з розробником

Як менеджеру обговорювати архітектуру з розробником

21 April 2023

  • Автор: Олександр Кононенко

  • Складність: Средне

  • Час: 7 хв

Одна з головних функцій менеджера на проєкті — правильно пояснювати та ставити завдання команді спеціалістів. Для цього Project або Product Manager повинен мати хоча б базове уявлення, як технічно реалізується IT-продукт, знати основні особливості кожного етапу розробки. Враховуючи високу важливість архітектури для будь-якого продукту, PM потрібно вміти правильно її обговорювати з девелоперами. Про це і поговоримо у статті, але для початку визначимо саме поняття software architecture.

Що таке архітектура ПЗ

Что такое архитектура ПО

Архітектура програмного забезпечення – скелет будь-якого IT-продукту, при побудові якого враховують усі його структури та елементи, їх взаємозв’язки між собою, поєднання з бізнес-процесами та бізнес-цілями. По суті, це креслення для ПЗ та процесу розробки — саме на його основі багато в чому визначають завдання для фахівців. Помилка на цьому етапі може викликати проблеми на всіх наступних кроках роботи над проєктом, а також при функціонуванні вже готового продукту.

В ідеальному світі в кожній команді є Software Architect, який створює майбутню структуру на основі бізнес-вимог та існуючих ресурсів без зайвого «головного болю» для менеджера. На практиці це не завжди здійснено, тому PM важливо знати, чим характеризується архітектура ПЗ, основні терміни — це допоможе зробити спілкування з розробниками конструктивним, полегшує постановку і контроль завдань.

Основні характеристики архітектури

Наявність великої кількості стейкхолдерівКожен з них має своє бачення бізнес-процесів і бізнес-результатів, і завдання архітектури імплементувати всі ці потреби — так звані «драйвери архітектури».
Поділ інтересів/понятьНаявність “драйверів” призводить до появи різних уявлень архітектури з різних точок зору. Наприклад, ви розробляєте складну бізнес-платформу. Її побудову можна розглядати із боку сейлзів, техпідтримки, фінансового відділу. Відповідно під кожне бачення формують окремі архітектурні верстви, які в результаті взаємодіють між собою та об’єднуються в єдину систему.
Орієнтованість на якістьЦей пункт про нефункціональні вимоги до будь-якого продукту: захист від помилок, розширюваність, надійність, юзабіліті, розширюваність тощо. Архітектура без подібних якостей — це просто принципова схема, яка не може гарантувати виконання бізнес-вимог.
РекористуванняІдея полягає в тому, що при створенні будь-якого артефакту закладається можливість повторного використання його складових вимог і технічних патернів різного рівня. Наприклад, якість “надійність” застосовується практично до всіх елементів архітектури ПЗ.
Концептуальна цілісністьЦя характеристика гарантує єдине об’єднувальне бачення майбутнього продукту всіх етапах розробки. Припустимо, стоїть завдання створити масштабний health care product, завдяки якому буде можливість зустрічатися з лікарями з відеозв’язку безпосередньо та вирішувати безліч медичних питань. Відразу створити таке складно, але поступово додавати нові фічі на різних кроках розробки – не проблема. Концептуальна цілісність гарантує наступність всіх елементів структури кожному етапі, що дозволяє їй без проблем зростати і адаптуватися під нові бізнес-потреби.
Когнітивне обмеженняНасправді це відтворення і повторення архітектурою поведінка реальних систем. Наприклад, Amazon на своїх складах використовує роботів для сортування товарів. Незважаючи на те, що вони автономно здійснюють певні операції, всі процеси засновані на поведінці людей з адаптацією під роботу машин.

Терміни для конструктивного спілкування з девелоперами

Одна з найчастіших проблем новачків у проєктному та продуктовому менеджменті — відсутність знання та розуміння термінології, якими оперують розробники. У результаті PM і Developer можуть говорити про те саме, але не розуміти один одного. Щоб такого не відбувалося, є сенс вивчити основні поняття та жаргонізми, які використовують девелопери.

Терміни для полегшення спілкування з розробниками:

  • Прототип, патерни, послуги.
  • MVP, домени.
  • NFR – нефункціональні вимоги.
  • Roadmap.
  • Frontend, backend.
  • Метрики, логи, дебаг.
  • DevOps, реліз, регресія, UAT.
  • Інстанси.
  • Git, бранчі, репозиторії, мерж.
  • Docker, Kubernetes, скейлінг групи.
  • Сервер, API, Swagger, апі-гейтвей.
  • JSON, кукі, OAuth.
  • Ключі, сертифікати, поліси.
  • Юніт тести, and-to-end, моки.

Список можна продовжувати, але знання перерахованих термінів та їх значення у 90% випадках достатньо для взаєморозуміння з розробниками. Не соромтеся уточнювати якесь поняття у девелопера з команди або досвідченіших колег, наприклад, експертів курсу Delivery Mind — це значно спростить роботу над будь-яким проєктом. Також буде не зайвим знати основні види архітектури під різні типи додатків.

Варіанти архітектури для mobile, web, desktop

Архитектура для mobile

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

Архітектура для mobile

Архитектура для mobile

Типова архітектура мобільного додатка зазвичай складається з двох частин: внутрішньої та зовнішньої. У локальній є чотири великі блоки:

  • Presentation — відповідає за візуальне подання для користувача та взаємодію з ним.
  • Business — включає в себе бізнес-логіку програми.
  • Data — зберігає локальні дані на пристрої
  • Common — містить компоненти Configuration, Security, Communications.

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

Внешняя часть приложения

Якщо розглянути реалізацію архітектури (імплементацію), її можна подати у вигляді будинку. Перший поверх – це мобільна операційна система та «залізо», другий – нативний фреймворк, який пов’язує перший поверх з третім – web-блоком, де відображається основна інформація для користувача через HTML, CSS та JavaScript. Можлива варіація без використання поверху-прошарку, але тоді web-частина має складнішу реалізацію.

Найпопулярніші інструменти для написання програми: Flutter (Dart), Ionic (JS), React-native (JS), Xamarin (.NET), Kotlin (Swift).

Архітектура для web

Для web-додатків існує кілька основних видів архітектури: Server-Side HTML, JS generation Widget, Service-oriented single-page Web apps. Кожна має свої переваги, що дозволяє знайти оптимальне рішення навіть під специфічні завдання. Пропонуємо ознайомитись з базовими особливостями всіх трьох варіантів архітектури для web, а також таблицею основних характеристик.

Server-Side HTML

Server-Side HTML

Server-Side HTML – найпростіша реалізація архітектури для web. Дозволяє генерувати сторінки на сервері. Умовно бекенд містить як бізнес-логіку, і формування думки для користувача. Головний мінус такого рішення — постійне звернення в backend при завантаженні кожної сторінки, що негативно впливає на швидкість роботи програми та user experience.

JS generation Widget

JS generation Widget

JS generation Widget – логічна еволюція попередньої архітектури. Основна особливість — не весь HTML генерується в бекенд і наявність вкраплення Javascript. JS при формуванні сторінки робить запит до бази даних, що знижує навантаження на Backend та прискорює процес завантаження. Добре це відображено при роботі фідів у соцмережах — користувачам буквально відразу відображається зовнішня оболонка HTML з якоюсь красивою заставкою або анімацією, хоча дані ще підвантажуються. У результаті user experience зростає. З мінусів подібного рішення — дуже низька тестованість, SEO та складності роботи офлайн.

Service-oriented single-page Web apps

ervice-oriented single-page Web apps

Service-oriented single-page Web apps — архітектура, в якій вся візуальна логіка web-програми знаходиться в Javascript та HTML підпорядкований JS. У такому додатку зазвичай існують базові індекси HTML, які завантажують командні бандли, а вони вже займаються формуванням сторінки. Головні мінуси – можливі проблеми з безпекою, низькі показники SEO та Linkability.

Оцінка основних характеристик різних видів архітектур для web-додатків (від погано 0 до 5):

ХарактеристикаServer-Side HTMLJS generation WidgetService-oriented single-page Web apps
Responsiveness/Usability135
Likability521
SEO521
Speed of development432
Scalability345
Performance345
Testability413
Security441
Conversion: website — mobile or desktop application005
Offline work215

Архітектура backend

Архитектура backend

Це приблизна архітектура backend, яка може мати складніший або спрощений вигляд. Основне завдання бекенда — виконувати «чорнові» завдання, спрямовані на підтримку стабільної швидкості, високої безпеки та надійності роботи програми.

Архітектура для desktop

Архитектура для desktop

Десктопна архітектура дуже схожа на мобільну з погляду компонентів, але з’являються особливості імплементації у трьох важливих моментах: UI Development Technology, Deployment Strategy та Installer. Якщо web-додаток просто завантажується в браузер, то для десктопу необхідні інструменти та механізми для написання та відображення інтерфейсу на різному залізі з урахуванням відмінностей існуючих операційних систем.

Основні інструменти імплементації архітектури на desktop:

  • UI Development Technology – Electron, UWP, JavaFx/Swing/Kotlin, Qt.
  • Deployment Strategy – Store, Squirrel, Chocolatey, Custom.
  • Installer – Inno, Wix, InstallShield.

Якщо хочете більше вивчити технічну складову розробки для кращої взаємодії з командою, зверніть увагу на курс для PM Delivery Mind — практикуючі експерти з досвідом роботи у великих міжнародних компаніях максимально повно розкриють цю тему.

Як менеджеру обговорювати архітектуру з розробником

Як вибирати інструменти?

Как выбирать инструменты?

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

Для зручності оцінювання можете вибрати шкалу значень від -5 до +5:

5 – супер фіча, яка дуже потрібна;

4 – велике поліпшення;

3 – трохи збільшує user experience;

2 – приємний бонус;

1 – нейтрально;

0 – ніяк не впливає до певної “червоної лінії”;

-1 – Мінімальне зниження можливостей;

-2 – прийнятне зниження можливостей;

-3 – злегка вплине на user experience (tech debt);

-4 – Потрібна компенсація або оптимізація в майбутньому.

-5 – Фіча, якої немає або блокує розробку.

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

Як приклад давайте подивимося порівняння кількох HTML шаблонизаторів:

сравнение нескольких HTML шаблонизаторов

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

Як обговорювати та перевіряти архітектуру

Well-Architected Framework від Amazon — у певному сенсі це одна з найкращих збірок рекомендацій щодо оцінки та розробки архітектури для високотехнологічних продуктів. У WAF ви знайдете питання, які потрібно ставити собі та фахівцям-архітекторам.

Якщо коротко, Well-Architected Framework базується на п’яти ключових категоріях нефункціональних вимог: Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization. Виконання перерахованого гарантує якість системи. Загалом у WAF добре показано, які патерни існують при проєктуванні різних навантажень та видів завдань, чому і коли потрібно використовувати певні рішення, як вони реалізуються на прикладі Amazon.

Как обсуждать и проверять архитектуру

Для перевірки архітектури менеджер обов’язково має знайти відповіді на три запитання:

  1. Чи покриті всі частини життєвого циклу розробки програмного забезпечення – SDLC?
  2. Чи проведено cost-analysis, складено роадмап основних фаз розробки продукту: POC, MVP, Prod?
  3. Визначено та чи враховано NFR у дизайні?

Для зручності та систематизації створіть докладну таблицю з кожного питання. Як і у разі визначення потрібного інструменту, такий підхід значно полегшить перевірку архітектури.

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

Олександр Кононенко

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