Skip to main content

Chapter 9. Simplicity

"The price of reliability is the pursuit of the utmost simplicity." (C.A.R. Hoare, Turing Award lecture)

Софт будет стабилен лишь тогда, когда его код не будет изменяться (изменения вызывают ошибки) и перестанет масштабироваться (не будут приходить новые пользователи).

The Virtue of Boring (скучность как добродетель)

Задача SRE - баланс между гибкостью и стабильностью

Если говорить о ПО, то скучность (его предсказуемое поведение) - это достоинство. Нам не столько важно, чтобы наш сфот был спонтанным и интересным, сколько важно, чтобы он работал по сценарию и предсказуемо решал бизнес задачи.

"В отличи от детективной истории, желательно, чтобы исходный код не давал повода для волнения, беспокойства и загадок. Сюрпризы в продакшене - злейшие враги SRE" (Роберт Мут)

I Won’t Give Up My Code!

Нельзя эмоционально привязываться к своему коду, если его разумно отрефакторить.

  • "Что если этот код понадобиться в будущем?"
  • "Почему бы его просто не закомментировать?"
  • "Почему бы нам не пометить его флагом на удаление?"

Ответ - VCS.

  • При ревью нужно убедиться что код выполняет бизнес-цели
  • Регулярно удалять мертвый код.
  • Внедрение методов позволяющих обнаружить разбухание кода (DRY, helm и etc.)

Minimal APIs

"Совершенство достигается не тогда, когда уже нечего прибавить, но когда уже ничего нельзя отнять" (Антуан де Сент-Экзюпери)

Пользователям API нужно предоставлять ровно столько методов, сколько им минимально нужно для работы. Небольшое простой API также является признаком хорошо проработанного проекта.

Modularity

DRY / ООП - это наши друзья, это все применимо и к распределенным системам. Хорошо спроектированная распределенная система содержит взаимодействующие объекты, каждый из которых имеет четкую цель.

Концепция модульности применима и к формату данных -> для того чтобы поддерживать обратную совместимость

Release Simplicity

В релизе должно быть минимальное количество изменений, так будет проще отлавливать баги.

Key Insights

note

Основная идея: простота ПО - необходимое условие надежности