З чого складається надійність
Я роблю максимум із того, що має сенс саме для вашої системи. Частина цього не обговорюється взагалі — вона є завжди, бо це не функції, а усталені інженерні практики. Те, що в професійній розробці повинно робитись за замовчуванням. Решта закладається лише, якщо у вашої системи є для цього потреба, або якщо це ваша вимога.
Шість контурів, які є завжди
Тут немає чого вибирати й немає за що доплачувати. Це не функції, які замовляють, а інженерні практики, які кваліфікований інженер закладає без окремого прохання.
Автоматичні тестиПравку бояться робити в п’ятницю. Руками перевіряють тільки те, що встигли згадати.
З цим контуромКожна зміна проходить прогін тестів. Зламану поведінку видно до того, як її побачить відвідувач.
Що ви отримуєтеСкільки перевірок, які саме, коли виконані.
Релізні гейтиРеліз їде, бо «начебто працює». Що саме перевірили перед публікацією — питання віри.
З цим контуромЗбірка не передається, поки не пройде перевірки швидкості, доступності, типізації й заголовків безпеки. Виняток зробити неможливо.
Що ви отримуєтеПерелік пройдених перевірок із датою й результатом кожної.
Моніторинг вразливостейПро вразливість у бібліотеці дізнаються з новин. Або від того, хто нею вже скористався.
З цим контуромЗалежності звіряються з відкритими базами вразливостей. Оновлення приходить як планова задача, а не як інцидент.
Що ви отримуєтеПерелік залежностей зі станом на дату — і окремим рядком те, що виправлено з попередньої звірки.
Заголовки й політики безпекиСторінку можна вбудувати в чужий ресурс, а браузер виконає будь-який підкладений скрипт.
З цим контуромПолітика вмісту, HSTS і решта заголовків увімкнені з першого дня. Безкоштовний рівень захисту, який зазвичай просто не вмикають.
Що ви отримуєтеПеревіряєте самі й без мене: відкритий сервіс securityheaders.com дає оцінку за адресою вашої системи.
Доступність за стандартомІнтерфейс перевіряють оком. Людина з екранною читалкою чи без миші до частини сторінок не дістається.
З цим контуромКожна сторінка проходить машинну перевірку за ДСТУ EN 301 549 і ручний прохід з клавіатури.
Що ви отримуєтеЗвіт машинної перевірки плюс перелік сторінок, пройдених вручну. Розділено, бо сканер бачить приблизно третину критеріїв.
Резервні копії та відновленняКопії начебто робляться. Коли їх востаннє розгортали і чи розгортаються вони взагалі — ніхто не пам’ятає.
З цим контуромКопія створюється за розкладом і лежить окремо від самої системи, а відновлення перевіряється, а не припускається.
Що ви отримуєтеПротокол навчального відновлення: дата, з якої копії розгортали, і скільки часу це зайняло.
Основу не можна зняти заради нижчої ціни. Я продаю надійність, а не години — і система без тестів, копій та перевірених оновлень уже не та робота, під якою я ставлю прізвище.
Що додається там, де це справді потрібно вашій системі
На відміну від основи, це не властивості коду, а функції вашої системи — і вони потрібні не всім. Позначте те, що впізнали, і внизу складеться перелік, який можна надіслати мені одним рядком. Біля кожної написано й те, коли її брати не треба.
Раджу майже завжди
Кожна зміна зберігає автора, час і попереднє значення. Спірне питання закривається за хвилину, а не нарадою.
Потрібно, якщоДані змінює більше однієї людини, і за помилку в них хтось відповідає.
Не потрібно, якщоДані вносить одна людина, історія змін нікого ніколи не цікавила, а самих даних майже немає.
Раджу майже завжди
Коротке повідомлення про стан приходить у месенджер — доступність, помилки, найближчі строки. Без панелей, у які ніхто не заходить.
Потрібно, якщоЄ людина, яка відповідає за систему перед керівництвом, і вона не має дізнаватись про збій від користувачів.
Не потрібно, якщоСистемою користуються двоє, і про будь-яку проблему ви дізнаєтесь за хвилину без жодних повідомлень.
Затверджена зміна потрапляє в робочу систему сама — без ручного завантаження файлів на сервер, без «а хто це виклав».
Потрібно, якщоЗміни виходять частіше, ніж раз на місяць, або над системою працює більше однієї людини.
Не потрібно, якщоСистему міняють двічі на рік — ручне розгортання дешевше й нічого не гальмує.
Повна копія системи на закритій адресі. Зміну спершу дивитесь і погоджуєте там, і лише потім її бачать люди.
Потрібно, якщоЗміни треба комусь показувати до публікації — керівнику, засновнику, замовнику.
Не потрібно, якщоРішення ухвалює одна людина, і зміни дрібні. Тоді це зайвий крок і зайва щомісячна вартість.
Система перевіряється кожні кілька хвилин ззовні. Якщо перестала відповідати — повідомлення приходить одразу, а не вранці від користувачів.
Потрібно, якщоПростій коштує грошей або репутації того ж дня: запис, оплати, звернення.
Не потрібно, якщоВнутрішній інструмент, яким користуються в робочі години, і година простою нічого не змінює.
Крім пароля потрібен одноразовий код. Викрадений пароль сам собою вже не відкриває доступ.
Потрібно, якщоУ системі персональні дані, гроші або документи, підміна яких має наслідки.
Не потрібно, якщоДоступ мають дві-три людини на закритій мережі, і дані не чутливі.
Дані переходять із системи в систему самі — бухгалтерія, CRM, платіжний провайдер, месенджер, державний реєстр.
Потрібно, якщоОдні й ті самі дані сьогодні вносяться руками у два місця.
Не потрібно, якщоДруга система міняється або її збираються замінити — інтеграцію робити рано.
Окремий вхід для клієнта, батька, працівника чи партнера: свої дані, свої статуси, свої документи.
Потрібно, якщоПідтримка щодня відповідає на однакові запитання про статус.
Не потрібно, якщоЗовнішніх користувачів десяток, і телефонний дзвінок їх влаштовує.
Дані виходять у файл тієї форми, яку просить бухгалтерія, керівництво чи контролюючий орган.
Потрібно, якщоЗвіт зараз збирається руками щомісяця й забирає день.
Не потрібно, якщоЗвіт потрібен раз на рік — дешевше вивантажити таблицю вручну.
Ціну називаю після оцінки. Вона залежить від того, що у вас уже є й на якому етапі розробка.Надішліть перелік — поверну оцінку.
ГейтАвтоматична перевірка, яка не пускає збірку далі, поки умову не виконано. Обійти її в останній день перед здачею неможливо.
Модель релізних гейтів я спершу описав у науковій роботі
Керування операційним ризиком у цифровому банкінгу через релізні гейти — тема моєї доповіді на 8-й Міжнародній науковій конференції «Інформаційні та інноваційні технології в XXI столітті». Те, що я тоді описав як модель, зараз працює як мій щоденний конвеєр збірки.
- 1
Максимум — це те, що має сенс саме тут
Основа не обговорюється: вона є в кожній системі, яку я передаю, і не додає ані строку, ані рядка в кошторис. Усе інше я закладаю там, де воно справді потрібне вашій системі, або там, де ви цього просите. Того, чим ви не скористаєтесь, я не продам: немає даних, які змінюються, — немає й журналу дій, і я скажу це прямо.
- 2
Планка стала, рухається обсяг
Під менший бюджет я не знімаю основу — я звужую обсяг першого етапу. Система з трьох екранів і повною основою чесна; система з тридцяти екранів без тестів і копій — ні, і саме вона починає сипатись без мене на дев’ятий місяць.
- 3
Різниця з’являється не в день запуску
У день здачі система без жодного з цих контурів виглядає так само добре. Різниця проявляється через місяці — коли треба щось терміново змінити, відновити дані чи довести, що сталося насправді.
Що лишаєтьсяЗаявку, яку нічим не перевірити, легко зробити. Тому до кожного контуру ви отримуєте річ, яку можна відкрити й подивитися без мене.
До кожного контуру лишається річ, яку можна перевірити
Контурів не видно на екрані — і це головна причина, чому їх легко пообіцяти й не зробити. Тому при передачі роботи до кожного йде звіт, протокол або екран, який лишається у вас.
- Автоматичні тестиСкільки перевірок, які саме, коли виконані.
- Релізні гейтиПерелік пройдених перевірок із датою й результатом кожної.
- Моніторинг вразливостейПерелік залежностей зі станом на дату — і окремим рядком те, що виправлено з попередньої звірки.
- Заголовки й політики безпекиПеревіряєте самі й без мене: відкритий сервіс securityheaders.com дає оцінку за адресою вашої системи.
- Доступність за стандартомЗвіт машинної перевірки плюс перелік сторінок, пройдених вручну. Розділено, бо сканер бачить приблизно третину критеріїв.
- Резервні копії та відновленняПротокол навчального відновлення: дата, з якої копії розгортали, і скільки часу це зайняло.
- Журнал дійЕкран історії змін у панелі керування — відкриваєте й бачите автора, час і те, що було до правки.
- Повідомлення відповідальній особіВи просто отримуєте це повідомлення й бачите його щодня — окремо показувати тут нічого.
Хочете побачити ці контури у своїй системі
Напишіть, що у вас за система і яка ваша роль у ній — власник чи уповноважена особа. Частину контурів видно ззовні: заголовки безпеки, доступність, стан платформи. Тести, резервні копії, журнали й розгортання видно тільки зсередини, тому їх дивимось уже в межах роботи за договором.
або напишіть туди, де зручно