ПОДБОРКА
Архитектура ПО
Модульность, распределённые системы, данные и эволюция программ.
Что даст подборка
Сформировать практическую карту архитектурных принципов и компромиссов.
CAP-теоремаПри сетевом разделении распределенная система не может одновременно гарантировать строгую согласованность и доступность.Принцип сквозной реализацииФункцию, которую можно полностью гарантировать только на концах взаимодействия, следует обеспечивать прежде всего на этих концах.Теорема CALMСогласованные вычисления без координации возможны именно для монотонных программ.Высокая связность внутри, низкая междуСвязанная логика должна быть рядом, а модули - зависеть друг от друга минимально.Закон БруксаДобавление людей в опаздывающий программный проект может увеличить задержку.Закон ГаллаРаботающая сложная система обычно развивается из работающей простой системы.Закон КонвеяСтруктура создаваемой системы отражает структуру коммуникаций организации.Закон ХайрамаЛюбое наблюдаемое поведение API со временем становится зависимостью.Закон протекающих абстракцийАбстракции иногда раскрывают детали нижележащей реализации.Законы эволюции ПО ЛеманаДолгоживущая система усложняется без постоянного упрощения.Разделение ответственностиНезависимые причины изменений должны быть разделены.Сокрытие информацииМодуль должен скрывать решения, которые вероятнее всего изменятся.Эволюционная архитектураАрхитектура должна безопасно меняться вместе с требованиями.Эффект второй системыВторую версию часто перегружают всеми отложенными идеями.CRDTОперации или состояния сливаются без центральной координации.FLP-невозможностьВ полностью асинхронной системе консенсус нельзя гарантировать при одном отказе.PACELCПри partition выбирают между доступностью и согласованностью, а без partition - между задержкой и согласованностью.ИдемпотентностьПовторное выполнение одной операции не меняет результат после первого успешного выполнения.Итоговая согласованностьЕсли новые изменения прекратятся, реплики со временем сойдутся к одному состоянию.Проблема двух генераловНельзя добиться общего знания о доставке через ненадежный канал.Технический долгУскорение сегодня может создать дополнительную стоимость изменений и сопровождения завтра.Принцип наименьшей мощностиДля представления информации следует выбирать наименее мощный язык, достаточный для задачи.Slo свежести: конвейер данныхЭто измеримая цель по максимальному возрасту данных между источником, обработкой и доступным потребителю результатом.Клавиатурный контракт: дизайн-системаЭто явное и проверяемое поведение фокуса, порядка переходов, активации и выхода для управления без мыши.Контракт повторов: API-шлюзЭто явное правило числа, задержек, идемпотентности и прекращения повторных попыток для операции.Модель владения: портал разработчикаЭто явное распределение ответственности за изменение, эксплуатацию, поддержку и вывод компонента из использования.Политика обратного давления: потребитель событийЭто правило замедления, ограничения или отклонения входящей работы, когда downstream-компонент теряет способность безопасно её обрабатывать.Отложенная serializable-транзакцияSerializable-транзакция только для чтения, ожидающая безопасного снимка и затем работающая без риска serialization abort.Проверка двойной записиКонтроль совпадения данных, записанных одновременно в старую и новую системы во время миграции.Разрешение конфликтов репликацииПравила выбора результата при несовместимых изменениях или ограничениях на принимающей стороне репликации.Регрессионный тест архитектурного правилаАвтоматическая проверка, обнаруживающая повторное нарушение ранее принятого ограничения на зависимости, границы или данные.Совместимость данных при rollbackСпособность старой версии безопасно читать данные, созданные или преобразованные новой версией.Управление эволюционной архитектуройРегулярное управление направлением архитектуры через ограничения, метрики и обратную связь вместо фиксированного конечного дизайна.Экспорт согласованного снимкаПередача одной точки видимости нескольким транзакциям для согласованного параллельного чтения данных.Critical Rendering PathРесурсы CSS, DOM и JavaScript определяют путь до первого отображения.Same-Origin PolicyБраузер ограничивает доступ между разными origin.Slo свежести: DAG оркестрацииДля объекта «DAG оркестрации» это измеримая цель по максимальному возрасту данных между источником, обработкой и доступным потребителю результатом.Slo свежести: аналитическое событиеДля объекта «аналитическое событие» это измеримая цель по максимальному возрасту данных между источником, обработкой и доступным потребителю результатом.Slo свежести: каталог данныхДля объекта «каталог данных» это измеримая цель по максимальному возрасту данных между источником, обработкой и доступным потребителю результатом.Slo свежести: правило качества данныхДля объекта «правило качества данных» это измеримая цель по максимальному возрасту данных между источником, обработкой и доступным потребителю результатом.Slo свежести: таблица lakehouseДля объекта «таблица lakehouse» это измеримая цель по максимальному возрасту данных между источником, обработкой и доступным потребителю результатом.Slo свежести: хранилище признаковДля объекта «хранилище признаков» это измеримая цель по максимальному возрасту данных между источником, обработкой и доступным потребителю результатом.Аудит доступности: выбор файлаЭто систематическая автоматическая и ручная проверка интерфейса по критериям восприятия, управления и понимания.Аудит доступности: клиентский маршрутизаторЭто систематическая автоматическая и ручная проверка интерфейса по критериям восприятия, управления и понимания.Аудит доступности: модальный диалогЭто систематическая автоматическая и ручная проверка интерфейса по критериям восприятия, управления и понимания.Аудит доступности: офлайн-изменениеЭто систематическая автоматическая и ручная проверка интерфейса по критериям восприятия, управления и понимания.Аудит доступности: сценарий формыЭто систематическая автоматическая и ручная проверка интерфейса по критериям восприятия, управления и понимания.Аудит доступности: центр уведомленийЭто систематическая автоматическая и ручная проверка интерфейса по критериям восприятия, управления и понимания.Безопасность перебалансировки: saga-процессДля объекта «saga-процесс» это набор ограничений, сохраняющих владение, прогресс и корректность обработки при перераспределении работы между исполнителями.Безопасность перебалансировки: выбор лидераДля объекта «выбор лидера» это набор ограничений, сохраняющих владение, прогресс и корректность обработки при перераспределении работы между исполнителями.Безопасность перебалансировки: лента измененийДля объекта «лента изменений» это набор ограничений, сохраняющих владение, прогресс и корректность обработки при перераспределении работы между исполнителями.Безопасность перебалансировки: очередь заданийДля объекта «очередь заданий» это набор ограничений, сохраняющих владение, прогресс и корректность обработки при перераспределении работы между исполнителями.Безопасность перебалансировки: потоковый обработчикДля объекта «потоковый обработчик» это набор ограничений, сохраняющих владение, прогресс и корректность обработки при перераспределении работы между исполнителями.Безопасность перебалансировки: потребитель событийДля объекта «потребитель событий» это набор ограничений, сохраняющих владение, прогресс и корректность обработки при перераспределении работы между исполнителями.Бюджет мощности: CD-конвейерЭто зарезервированный предел нагрузки и ресурсов, отделяющий нормальную эксплуатацию от контролируемой деградации.Бюджет мощности: CI-конвейерЭто зарезервированный предел нагрузки и ресурсов, отделяющий нормальную эксплуатацию от контролируемой деградации.Бюджет мощности: preview-окружениеЭто зарезервированный предел нагрузки и ресурсов, отделяющий нормальную эксплуатацию от контролируемой деградации.Бюджет мощности: доставка секретовЭто зарезервированный предел нагрузки и ресурсов, отделяющий нормальную эксплуатацию от контролируемой деградации.Бюджет мощности: контроллер развёртыванияЭто зарезервированный предел нагрузки и ресурсов, отделяющий нормальную эксплуатацию от контролируемой деградации.Бюджет мощности: реестр артефактовЭто зарезервированный предел нагрузки и ресурсов, отделяющий нормальную эксплуатацию от контролируемой деградации.Бюджет производительности: браузерный кэшЭто измеримый предел размера, задержки или вычислительной работы, превышение которого блокирует выпуск или включает упрощение.Бюджет производительности: выбор файлаЭто измеримый предел размера, задержки или вычислительной работы, превышение которого блокирует выпуск или включает упрощение.Бюджет производительности: дизайн-системаЭто измеримый предел размера, задержки или вычислительной работы, превышение которого блокирует выпуск или включает упрощение.Бюджет производительности: интерфейс аутентификацииЭто измеримый предел размера, задержки или вычислительной работы, превышение которого блокирует выпуск или включает упрощение.Бюджет производительности: клиентский маршрутизаторЭто измеримый предел размера, задержки или вычислительной работы, превышение которого блокирует выпуск или включает упрощение.Бюджет производительности: модальный диалогЭто измеримый предел размера, задержки или вычислительной работы, превышение которого блокирует выпуск или включает упрощение.Бюджет производительности: таблица данныхЭто измеримый предел размера, задержки или вычислительной работы, превышение которого блокирует выпуск или включает упрощение.Бюджет тайм-аутов: API-шлюзЭто распределение общей допустимой задержки между последовательными и параллельными участниками запроса.Бюджет тайм-аутов: доставка webhookЭто распределение общей допустимой задержки между последовательными и параллельными участниками запроса.Бюджет тайм-аутов: доставка электронной почтыЭто распределение общей допустимой задержки между последовательными и параллельными участниками запроса.Бюджет тайм-аутов: ограничитель частотыЭто распределение общей допустимой задержки между последовательными и параллельными участниками запроса.Бюджет тайм-аутов: поисковый индексЭто распределение общей допустимой задержки между последовательными и параллельными участниками запроса.Бюджет тайм-аутов: фоновый workerЭто распределение общей допустимой задержки между последовательными и параллельными участниками запроса.Бюджет тайм-аутов: хранилище сессийЭто распределение общей допустимой задержки между последовательными и параллельными участниками запроса.Восстановление состояния: браузерный кэшЭто сохранение и безопасное возвращение пользовательского контекста после обновления, сбоя, отмены или повторного входа.Восстановление состояния: дизайн-системаЭто сохранение и безопасное возвращение пользовательского контекста после обновления, сбоя, отмены или повторного входа.Восстановление состояния: интерфейс аутентификацииЭто сохранение и безопасное возвращение пользовательского контекста после обновления, сбоя, отмены или повторного входа.Восстановление состояния: офлайн-изменениеЭто сохранение и безопасное возвращение пользовательского контекста после обновления, сбоя, отмены или повторного входа.Восстановление состояния: сценарий формыЭто сохранение и безопасное возвращение пользовательского контекста после обновления, сбоя, отмены или повторного входа.Восстановление состояния: таблица данныхЭто сохранение и безопасное возвращение пользовательского контекста после обновления, сбоя, отмены или повторного входа.Восстановление состояния: центр уведомленийЭто сохранение и безопасное возвращение пользовательского контекста после обновления, сбоя, отмены или повторного входа.Граница согласованности: API-шлюзЭто явное указание того, какие данные должны изменяться атомарно, а где допустима временная рассогласованность.Граница согласованности: доставка webhookЭто явное указание того, какие данные должны изменяться атомарно, а где допустима временная рассогласованность.Граница согласованности: доставка электронной почтыЭто явное указание того, какие данные должны изменяться атомарно, а где допустима временная рассогласованность.Граница согласованности: ключ идемпотентностиЭто явное указание того, какие данные должны изменяться атомарно, а где допустима временная рассогласованность.Граница согласованности: платёжный процессЭто явное указание того, какие данные должны изменяться атомарно, а где допустима временная рассогласованность.Граница согласованности: слой кэшаЭто явное указание того, какие данные должны изменяться атомарно, а где допустима временная рассогласованность.Граница согласованности: фоновый workerЭто явное указание того, какие данные должны изменяться атомарно, а где допустима временная рассогласованность.Доказательство происхождения данных: DAG оркестрацииДля объекта «DAG оркестрации» это запись источников, преобразований и версий, позволяющая проследить полученный набор данных до исходных входов.Доказательство происхождения данных: аналитическое событиеДля объекта «аналитическое событие» это запись источников, преобразований и версий, позволяющая проследить полученный набор данных до исходных входов.Доказательство происхождения данных: конвейер данныхДля объекта «конвейер данных» это запись источников, преобразований и версий, позволяющая проследить полученный набор данных до исходных входов.Доказательство происхождения данных: набор данных с персональными ограничениямиДля объекта «набор данных с персональными ограничениями» это запись источников, преобразований и версий, позволяющая проследить полученный набор данных до исходных входов.Доказательство происхождения данных: определение метрикиДля объекта «определение метрики» это запись источников, преобразований и версий, позволяющая проследить полученный набор данных до исходных входов.Доказательство происхождения данных: пакетное заданиеДля объекта «пакетное задание» это запись источников, преобразований и версий, позволяющая проследить полученный набор данных до исходных входов.Доказательство происхождения данных: хранилище признаковДля объекта «хранилище признаков» это запись источников, преобразований и версий, позволяющая проследить полученный набор данных до исходных входов.Клавиатурный контракт: выбор файлаЭто явное и проверяемое поведение фокуса, порядка переходов, активации и выхода для управления без мыши.Клавиатурный контракт: клиентский маршрутизаторЭто явное и проверяемое поведение фокуса, порядка переходов, активации и выхода для управления без мыши.Клавиатурный контракт: модальный диалогЭто явное и проверяемое поведение фокуса, порядка переходов, активации и выхода для управления без мыши.Клавиатурный контракт: офлайн-изменениеЭто явное и проверяемое поведение фокуса, порядка переходов, активации и выхода для управления без мыши.Клавиатурный контракт: сценарий формыЭто явное и проверяемое поведение фокуса, порядка переходов, активации и выхода для управления без мыши.