Хімічна тамп; Матеріалотехніка
Як використовувати рефакторинг для мінімізації Downtime в критичних інженерних системах
Table of Contents
Висока вартість варію в критичних системах
У секторах, як аерокосмічний, енергетичний, транспортний та охоронець, програмні збої не є неспроможними - це може призвести до катастрофічних результатів. Наприклад, 2015 рік, вихід Нью-Йоркської фондової біржі, вартість мільйонів у втрачених торгівлі, а програмне забезпечення, що кидає в інфузійному насосі лікарні, може захищати життя пацієнта. Навіть короткий час в критичних інженерних системах може каскад в небезпеку безпеки, нормативні штрафи та репутаційні пошкодження. Рефакторинг - рефрутний код без зміни його зовнішньої поведінки - це дисциплінований підхід, щоб зменшити технічний борг і підвищити стійкість системи, але не варто виконувати нові ризики, що стосуються прецизії.
Принципи рефакторингу ядра для мінімізації Downtime
Ефективне рефакторинг в місійно-критичних середовищах способливається на трьох стовпах: Побереження бджіл], , збільшувальні зміни], а ]]defensive test]. Поведінка збереження забезпечує, що кожен рефакторинг крок залишає за собою системні спостережні виходи ідентичні. Незмінні обмеження зміни вибухового радіусу будь-якої одномодової модифікації. Визначені перевірки виправи, які не мають регресія на кожному етапі рефакторингу. Після цього знизу.
Основні стратегії безпечного рефакторингу
Паралельні ходові та тіні режими
У тіньовому режимі рефакторований компонент працює поряд з оригінальною системою, обробки тих же вхідних даних, але мовно відхиляється від його виходу. Інженери порівняють результати виявлення відмінностей без впливу живих операцій. Як тільки впевненість висока, тіньовий компонент може бути пропагований до основного стану. Ця техніка особливо корисна для основних алгоритмів або технологічних трубопроводів обробки даних, де корегування є параmount.
Спеціальний букмекер
Особливістю окуляри (або прапорів) дозволяють заблокувати рефакторований код за допомогою перемикача конфігурації. Рефакторний шлях залишається неактивним, поки явно не вимкнено, дає командам можливість ввімкнути його поступово або розгортати назад миттєво, якщо виникають проблеми. У критичних системах, окуляри повинні бути статичними (постановити час розгортання) а не динамічними, щоб уникнути несподіваної поведінки від часових змін.
Канарські релізи
Канарський випуск безпосередньо відображає невеликий відсоток трафіку до рефакторованої системи, коли більшість продовжується на стабільній версії. Цей підхід забезпечує реальну перевірку світу під виробничим навантаженням. Якщо канар показує підвищені коефіцієнти помилок або затримки, трафік може бути відремонтований відразу. Для інженерного програмного забезпечення, яке контролює фізичне обладнання, канарні релізи можуть вимагати виділені тестові середовища, які дзеркальне виробництво, але ізольовані від живих операцій.
Синьо-зелене розгортання
Синьо-зелене розгортання підтримує дві ідентичні середовища: «блакитний» (поточна стабільна) і «зелена» (рефакторована). Після ретельного затвердження зеленого середовища трафік перемикається з синього до зеленого в одноатомній експлуатації. Чи повинні проблеми з'являються, зворотний зв'язок з синім відбувається так само швидко. Ця стратегія ефективний для беззаперечних додатків і може бути адаптована для синхронізованих систем з використанням ретельної синхронізації даних.
Планування обслуговування Windows
Незважаючи на найкращі зусилля, деякі рефакторинги не можуть бути прозоро введені. У таких випадках зміни розкладу при визначених вікнах технічного обслуговування — переважно при мінімальному завантаженні системи. Спілкування вікна чітко зацікавленим сторонам, і забезпечення того, що процедури зворотного зв'язку перезаряджаються і задокументовані. Ніколи не розгортати зміни рефакторингу під час пікових операційних періодів або відразу перед критичними термінами.
Будівництво трубопровідної труби Robust
Тести та інтеграційні установки
Комплексний тестовий набір не є невід'ємним для критичних систем. Блок тестів перевіряють індивідуальні функції, при цьому тести інтеграції підтверджують, що рефакторовані модулі взаємодіє правильно з існуючими компонентами. Використовуйте test-cover Instrument] для визначення нетестованих шляхів коду. Для забезпечення безпечної роботи програмного забезпечення, розглянемо formalвірування або моделі тестування для математично довести, що залишається незмінною. Рефакторинг, що повинен бути на прикладах Мартіна Fprepressssssssss, що забезпечуються класичного перетворення [[FLT[FLT
Тестування та безперервна інтеграція
Автоматизовані регресії, що працюють на кожному комісії, що падає на рано. Безперервна інтеграція (CI) трубопроводів повинні виконувати повний регресійний пакет протягом декількох хвилин. Для критичних систем також запустіть продуктивність регресії тестів для забезпечення рефакторингу не деградує час або ресурсне використання. Регресійний тестовий люкс технічне обслуговування є важливим - якщо ви зафіксуєте помилку, додайте тест, який відтворює його перед рефакторуванням фіксації.
Інженерія хаосу для перевірки стійкості
Інженерні системи Chaos навмисно вводять збійи в систему, щоб спостерігати, як вона поводиться під стрес. Застосовуються для рефакторованих компонентів, це може виявити припущення, які змінилися або нові режими збою, внесені реструктуризацією. Інструменти, такі як Chaos Engineering]] може імітувати мережеві перегородки, ресурсне виснаження або раптові лопці трафіку. Ця дисципліна була прийнята організаціями, такими як Netflix і Amazon, щоб забезпечити стійкість в системах, які не можуть дозволити собі час.
Етапи реалізації для рефакторингу критичних систем
Оцінка та планування
Починається з ретельним аналізом системної архітектури. Визначають модулі, які добре визначені, мають високий рівень тестування та виділяються з безпечних кліматичних шляхів. Використовуйте графіки залежностей], щоб зрозуміти вплив. Ранг рефакторинг кандидатів за ризиками та бізнес-цінкою. Залучайте експертів домену — енженери, які знають апаратні обмеження, умови експлуатації та нормативні вимоги— для перевірки плану.
Контроль версій та роз'яснення
Кожна зміна рефакторингу повинна бути здійснена до окремого відділення з чітким повідомленням, що описує трансформацію. Таг стійкий реліз перед початком роботи. План зворотного відключення повинен детально не тільки перевернути код, але і будь-які міграції бази даних або зміни конфігурації, які повинні бути неоновими. Практика процедури відключення в середовищі стічних вод, тому вона стає другим характером при інциденті.
Стипендія навколишнього середовища
Виконується стимуляція, що відображає виробництво в апаратній, мережевій топології та об'єм даних є важливим для безпечного рефакторингу. Запустіть повну тестову люкс і показники продуктивності тут. Для програмного забезпечення, які інтерфейси з фізичним обладнанням (наприклад, робототехнічні контролери, силові монітори), staging повинні включати імітаційні петлі, які реплікують реальні світові вводи і виходи. Тільки після закінчення переходить всі критерії повинні змінити переміщення до виробництва.
Моніторинг та спостереження
Після рефакторингу слід відстежувати як функціональну правильність, так і оперативне здоров’я. Налаштовувати для спійок про помилку, підвищення затримки та зміни споживання ресурсів. Використовуйте розподілене відстеження, щоб слідувати запитам через рефакторовані методи коду. У критичних системах моніторити не тільки програмне забезпечення, але і будь-які підключені апаратні засоби для аномалії. Поставити панель, яка порівнювати до і післярефакторингові метрики принаймні один цикл нормальної роботи.
Загальні методи рефакторингу для критичного коду
Не всі рефакторингові техніки однаково безпечні. Виконайте ті, які є механічними і реверсійними:
- Extract Method] – Перемістити блок коду в новий метод для поліпшення читабельності. Забезпечити вилучення методу не додає побічних ефектів.
- Rename Variable або Функція – Покращення чіткості без зміни виконання. Використовуйте рефакторинг IDE, щоб зловити всі посилання.
- Замінити Magic Number з Символічною констанцією] – Усунути жорсткий дисковий літри, які можуть викликати плутанність під час технічного обслуговування.
- Simplify Кондиціональні вирази – Комплекс декомпозицій, якщо-else каскади в захисні пункти або вимикачі, але тільки після виснаження тестування всіх гілок.
- Introduce Parameter Об'єкт – Групові суміжні параметри в єдиний об'єкт для зменшення складності підпису метода.
Кожна техніка повинна застосовуватися в ізоляції, перевірених і скоєних до наступного. Програма підвищення якості на білому аркуші Групи на рефакторингах систем безпеки забезпечує практичне керівництво щодо вибору правого підходу до екологічно чистої середовища.
Збір і управління ризиками
Огляди та пороги
Кожен рефакторинговий комісію необхідно ознайомитися принаймні двома інженерами, знайомими з системою. Програма Pair під час рефакторингу може запобігти передачі даних про дрібні помилки та фокусування. Відгуки повинні зосередитись на збереженні поведінки, тестовому покритті та дотримання плану рефакторингу.
Експертна перевірка
У критичних доменах залучають фахівців з предметами (МСБ), які розуміють фізику, хімію або оперативну логіку, яка кодує програмне забезпечення. МСП може помітити, що перейменована змінна зараз конфлікти з широко використовуваним скороченням в області, або що видобувний метод неперевершено повторює операції в часово-чутливій послідовності.
Зміна Радників
Для програмного забезпечення, що входить до складу більшої сертифікованої системи (наприклад, івіоніки, ядерні реактори), будь-які зміни коду можуть вимагати затвердження з плати керування змінами. Дошка перевіряє план рефакторингу, оцінку ризику, стратегію зворотного зв'язку та докази перевірки. Здійснення рефакторингу раціонального та тестового результату у форматі, що відповідає галузевим стандартам (наприклад, DO-178C, IEC 61508) забезпечує аудитабельність.
Висновок
Рефакторинг не є закінченням самостійно, - це засіб для забезпечення критичного інженерного програмного забезпечення безпечною, безпечною і пружною. За допомогою застосування нездійснених змін, суворого тестування та стратегій розгортання, які мінімують ризик, інженери можуть зменшити технічний борг без виклику. Ключ полягає в тому, щоб лікувати рефакторинг з такою ж дисципліною, як будь-які інші зміни в умовах безпечної дії: план ретельно, тестувати обсесивно, і завжди мати зворотний зв'язок готовий. При виконанні правильно рефакторинг трансформує хабарильний код в надійний код без перервування систем, які суспільство залежить.