Вибір засобів для забезпечення життєвого циклу рішень

Всім привіт! Мене звуть Стас, і я працюю на позиції Cloud Solutions Architect. Мені часто доводиться ініціювати старт проектів. При цьому важливо вибрати засоби забезпечення життєвого циклу рішення. Необхідно вирішити, які саме кошти команда буде використовувати для створення, підтримки та розвитку рішення.

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

З причини того, що потрібно щораз витрачати час на пояснення членам команди, що і чому буде використано в конкретному проекті, я вирішив написати цю статтю.

Коли пропонуєте використовувати які-небудь засоби на конкретному проекті, будьте готові нести персональну відповідальність.

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

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

Основні поняття

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

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

Категорії засобів

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

Area Role
Auth Централізована аутентифікація і авторизація користувачів, сервісів і додатків.
Всі інші засоби інтегруються з цим.
Communication Комунікації всередині команди.
Комунікації на основі чатів з можливістю проведення відеодзвінків та їх записом, індексуванням та пошуком за ключовими словами.
Knowledge Sharing Расшаріваніє знань про проект між всіма учасниками команди.
На основі де-факто індустріального стандарту Markdown .
Вимога Management Управління та візуалізація вимогами.
Наприклад Scrum backlog і Kanban board.
Repos Зберігання вихідних і контроль версій.
Наприклад, реалізація Git .
Pipelines Складання і управління випусками.
Artifacts Зберігання артефактів і робота з ними.
Наприклад, Debug Symbols , NuGet , NPM , Maven і т. д.
Test Функціональне тестування.
Load Test Навантажувальне тестування.
Monitor Моніторинг рішення і предиктивне аналітика.
Feedback Збір відгуків про використання рішення.
IDE Середовище розробки.
З коробки інтегрована з усіма системами.

Розміщення

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

Розглянемо наступні варіанти розміщення:

Розміщення на стороні виконавця (on-prem)

Плюс:

Мінуси:

Розміщення на стороні замовника (on-prem)

Плюси:

Мінуси:

Розміщення на третій стороні (service)

Плюс:

Мінус:

Змішані варіанти не виключені, але, як правило, вони мають мінусами всіх вищеперелічених.

Особисто я завжди намагаюся просунути варіант використання хмарних сервісів і тільки у виняткових ситуаціях — розміщення на стороні замовника.

Кошти

Є два варіанти отримання набору засобів:

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

Увага! У цій статті я розглядаю саме ті кошти і в тій комбінації, які мені найбільше зустрічалися і з якими у мене є реальний досвід роботи.

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

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

Наступна таблиця описує, які конкретно кошти і за якою вартістю в місяць входять у перелічені вище варіанти:

Area Option A Tool Cost Option M Tool Cost
Auth G Suit ??? Active Directory free: basic
extra: $1/user
Knowledge Sharing Atlassian Confluence <10 users: $10
>10 users: $5/user
Wiki free: 5 users
extra: $6/user
Вимога Management Atlassian Jira <10 users: $10
>10 users: $7/user
Boards Included
Repos Atlassian Bitbucket <5 users: free
>5 users: $5/user
Repos Included
Pipelines Jenkins *1 Pipelines free: 1
extra: $40/pipe
Artifacts MyGet 5 feeds: $40 Artifacts free: 5 users
extra: $4/user
Test Gurock TestRail $30/user Test Plans $52/user
Load Test Load Impact $300 Load Tests free: 20k
extra: $36/100k

Деякі Area не описані, це зроблено з метою спрощення. Тому вибір тих же Communication коштів — це тема ще однієї статті.

Порівняння варіантів

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

Area Option A Option M
Auth Інтеграція продуктів з централізованою системою аутентифікації вимагає додаткових витрат. Інтеграція з коробки з Active Directory і реалізує B2B Collaboration .
Compliance Atlassian заявляє про відповідність наступним вимогам: GDPR, ISO 27001, SOC 2 Type 1, CSA STAR Level 1. Microsoft заявляє про відповідність наступним вимогам: GDPR, ISO 27001:2013, SOC 1 Type 2, SO 2 Type 2, HIPAA, BAA, EU Model Clauses.
Legal Потрібно прийняти різні політики від кожного постачальника. Потрібно прийняти тільки одну політику від одного постачальника.
Service Management Хоч більшість сервісів керовані, деякі, такі як Jenkins, вимагають додаткової інфраструктури, налаштування та підтримки. Всі сервіси керовані.
Traceability Потрібні додаткові витрати на покупку і інтеграцію плагінів. Доступна з коробки.
Price & Payment Окрема покупка кожного сервісу у різних постачальників.
Окремі рахунки-фактури в кінці місяця.
Сукупна вартість володіння більше, ніж рішення «все в одному».
Всі послуги придбаваються у одного постачальника у вигляді пакета.
Один рахунок-фактура в кінці місяця.
Сукупна вартість володіння менше, ніж у окремих систем.

Порівняння систем по функціональності систем тут не проводимо, бо в цілому системи +/- володіють однаковою функціональністю і, наприклад, порівняння Jira з Boards — це також окрема тема.

Якщо ваш проект в регульованому домені, наприклад Healthcare, то бажано, щоб абсолютно всі сервіси, які ви використовуєте, відповідали вимогам, специфічним в цьому домені. Наприклад, якщо ваш проект в домені Healthcare і територіально в USA, то вам краще використовувати тільки HIPAA Compliant кошти.

Сценарії використання

Щоб дати уявлення про приблизну вартість володіння, нижче наведено кілька сценаріїв використання.

Scenario 1Команда малого розміру: 3 stakeholders, 5 developers, 1 tester.

Options&Tools 3х stakeholder 5х dev 1х test Total
Option A $350
Confluence $10
Jira $30 $50 $10 $90
Bitbucket Not Required $25 $5 $30
MyGet Not Required $40
TestRail Not Required $150 $30 $180
Option M $58
Wiki Included Included Included $0
Boards Included Included $6 $6
Repos Not Required Included Included $0
Artifacts Not Required Included Not Required $0
Test Plans Not Required Included $52 $52

Scenario 2Команда середнього розміру: 5 stakeholders, 20 developers, 5 тестерів.

Options&Tools 5х stakeholder 20х dev 5х test Total
Option A $1422
Confluence $25 $100 $25 $150
Jira $35 $140 $35 $210
Bitbucket Not Required $100 $25 $125
MyGet Not Required $117 Not Required $117
TestRail Not Required $820
Option M $520
Wiki Included Included Included $0
Boards Included $150 Included $150
Repos Not Required Included Included $0
Artifacts Not Required $110 Not Required $110
Test Plans Not Required Included $260 $260

Висновок

Я не хочу нав'язувати комусь свою думку. Хіба що додам, що перед тим як вибирати засоби, добряче подумайте, проаналізуйте і порівняйте кілька варіантів.

P. S. Сподіваюся, ця стаття підштовхне людей з досвідом до написання своїх матеріалів, що розкривають інші аспекти засобів забезпечення життєвого циклу. Наприклад, особисто я б почитав порівняння Azure DevOps з GitLab Cloud.

Опубліковано: 20/12/18 @ 11:11
Розділ Різне

Рекомендуємо:

DOU Hobby: Косплей — гра у костюми та образи улюблених персонажів
PHP дайджест #18: автори РНР виходять з проектом, реліз 7.3
Путівник по сертифікації проектного менеджменту
Підсумки 2018 року і плани на 2019
«У мене був кращий старт, ніж у випускників Стенфорда, бо в мене багато досвіду». Розповідь Senior software engineer з LinkedIn Марії Панютіної