Стабільні межі важливіші за назви інструментів
Довговічна система починається з модулів, які мають зрозумілу відповідальність і невеликий публічний контракт. Бізнес-правило не повинно знати, який вебфреймворк обробив запит, а механізм зберігання — диктувати структуру всього продукту. Це не означає створювати абстракцію для кожного класу. Межа потрібна там, де частини системи змінюються з різною швидкістю або мають різних власників. Якщо контракт описаний тестами й прикладами, реалізацію можна замінювати поступово, не перетворюючи оновлення бібліотеки на переписування основних сценаріїв.
Дані потребують власної стратегії змін
Схема бази, формати подій і правила сумісності зазвичай живуть довше за прикладний код. Кожна міграція має враховувати стару й нову версію сервісу, тривалі операції та можливість повернення. Видаляти поле безпечно лише після того, як усі читачі перестали від нього залежати. Резервна копія не є стратегією, доки команда не перевірила повне відновлення й час, потрібний для нього. Корисно мати власника даних, журнал змін схеми та автоматичні перевірки сумісності перед розгортанням. Довговічність системи залежить також від того, як команда керує індексами PostgreSQL, і від розуміння, де WebAssembly справді корисний поза браузером.
Зовнішні інтеграції мають завершуватися адаптером
Платіжний сервіс, поштовий постачальник або пошуковий рушій змінюють API незалежно від продукту. Якщо їхні об’єкти й помилки проходять крізь усі рівні коду, навіть невелика міграція зачіпає десятки місць. Вузький адаптер переводить зовнішню модель у поняття продукту й зберігає деталі автентифікації, повторних спроб та обмежень в одному місці. Він не повинен приховувати важливу поведінку, але має дати змогу тестувати основну логіку без реального стороннього сервісу та перейти на іншу реалізацію без зміни всіх споживачів.
Операційна простота є архітектурною властивістю
Система має бути зрозумілою команді, яка чергує, розгортає зміни та відновлює роботу після збою. Для кожного сервісу потрібні власник, ключові метрики, журнал із корисним контекстом і короткий сценарій діагностики. Додаткова черга, кеш або рівень оркестрації виправдані лише тоді, коли розв’язують вимірювану проблему. Інакше вони збільшують кількість станів, які потрібно пояснювати під час інциденту. Архітектурне рішення варто оцінювати не тільки за чистотою коду, а й за тим, наскільки швидко інша людина може знайти й безпечно виправити несправність.
Еволюція потребує малих кроків і записаних причин
Велике переписування рідко зупиняє розвиток старої системи, тому нова версія постійно наздоганяє рухому ціль. Надійніший шлях — визначити межу, перенести один сценарій, порівняти поведінку й поступово розширювати частку трафіку. Короткі записи архітектурних рішень зберігають контекст: яку проблему бачили, які варіанти відхилили та за якої умови рішення потрібно переглянути. Це захищає команду від бездумного повторення старих дискусій і дає змогу змінити напрям, коли вихідні обмеження більше не діють.




Коментарі
Щоб залишити коментар, увійдіть через Google або Facebook.