«Человеку свойственно ошибаться, но чтобы действительно все испортить, нужен компьютер».

-Пол Р. Эрлих

Многие существующие сегодня бизнес-процессы родились из старомодных процессов, управляемых бумагой/формами. Это потому, что бумага была изобретена до того, как были изобретены компьютеры. Если бы компьютеры были изобретены первыми, вы могли бы представить себе совершенно другой мир, в котором вы размещаете заказ в Интернете, чтобы купить что-то, и ваш браузер вращается, пока посылка не прибудет к вашему порогу.

Я шучу, типа.

Многие корпоративные программные системы представляют собой менее преувеличенные версии этого. В некоторых случаях я видел, как кнопки «отправить» обычно заставляют пользователя ждать завершения основной транзакции в течение нескольких минут.

Почему планка упала так низко? И как мы можем это исправить? В этом посте мы углубимся именно в это.

История не повторяется, но часто рифмуется

Большинство современных способов ведения дел можно проследить до исторической проблемы, которая решалась по пути наименьшего сопротивления. От значков на вашем телефоне до расположения клавиш на клавиатуре — эти непреходящие пережитки прошлого окружают нас.

Когда миром управляли на бумаге, изменение части информации могло означать перемещение гигантского, тяжелого картотечного шкафа. Гораздо разумнее было взять новую форму и заполнить ее с намерением заменить исходную форму позже. Это очень интуитивная практика, потому что кабинет тяжелый и медленный, и нет существенных последствий для обновления исходной формы по вашему усмотрению. И если финансовый отдел хочет выполнить процесс завершения квартала, который занимает несколько дней и зависит от этих форм, вы можете позволить им делать свое дело, не беспокоясь о том, что все хотят обновить свою информацию. Многие процессы, подобные этому, существуют, потому что они кажутся естественными.

Перенесемся в эпоху цифровых технологий. Наше первое (и правильное) предположение состоит в том, что компьютеры работают быстро. Предположение об обратном означало бы упущенную возможность разработать более простую систему с адекватными характеристиками. В отрасли эта дилемма известна как «преждевременная оптимизация». В типичном жизненном цикле программной системы первым шагом является создание рудиментарной проверки концепции, которая постепенно модифицируется, чтобы соответствовать возросшим требованиям, предъявляемым к ней.

Простейшая компьютерная информационная система представляет собой CRUD-подобную конструкцию. CRUD расшифровывается как Create/Read/Update/Delete, что относится к способу хранения данных в системе. В системе такого типа каждый объект в системе отражает свою последнюю запись. Если возникает необходимость поддерживать согласованное состояние нескольких объектов или зафиксировать состояние системы в определенный момент времени, применяется темная магия, известная как транзакции ACID. Дизайн CRUD фактически такой же, как бумажный процесс, за исключением того, что вашим лицом, вводящим данные, является The Flash, который способен немедленно обновлять информацию по прибытии, а также может генерировать любой тип отчета, который вам нужен, когда он вам нужен.

К сожалению, реальность такова, что даже у Флэша есть свои пределы. Скорость ЦП не менялась десятилетиями, а требования к данным продолжают расти в геометрической прогрессии. И, как оказалось, ACID-транзакции — это не волшебство. Обычно они полагаются на комбинацию блокировок (которые снижают доступность системы) или на оптимистичный параллелизм (который снижает надежность и согласованность). Эти эффекты становятся все более выраженными по мере масштабирования системы. Изменяемое состояние, масштабируемость и согласованность — заклятые враги.

Подобно тонкому слою грязи (грязи?), который медленно скапливается на ваших линзах, может быть трудно заметить, что вы постепенно сдвинули планки на отзывчивость системы. Заманчиво обвинить теорему CAP в своих бедах и согласиться потратить недели времени разработчиков на восстановление незначительного количества утраченных позиций. Любой прогресс может показаться впечатляющим, когда вы достаточно отчаянны. Но не бойтесь, для всего этого есть решение, просто вы не видели его очень, очень давно.

Встречайте новый процесс, такой же, как старый процесс

Мне было бы легко бросить разработчиков программного обеспечения под автобус за то, что они не отстаивают решение этой проблемы. Реальность такова, что владельцы бизнес-процессов в равной степени виновны. В конце концов, ранние владельцы бизнес-процессов смогли решить эти проблемы, используя самые медленные и подверженные ошибкам компьютеры — людей.

Основное различие между медленными бумажными процессами прошлого и «быстрыми» сегодняшними компьютерными процессами заключается в том, что называется «временностью». Эта идея заключается в том, что у вас может быть несколько версий информации, каждая из которых действительна в соответствующие моменты времени. Включив измерение времени, система может вспомнить, каким было ее точное состояние в любой данный момент времени.

Ранние информационные системы обладали элементами темпоральных систем в силу того факта, что проще всего было версионировать хранящиеся в них данные. Намеренно используя эту концепцию в цифровых информационных системах, мы можем достичь совершенно нового уровня масштабируемости, быстродействия, надежности, тестируемости и простоты. Мне не терпится показать вам, как просто спроектировать такую ​​систему. Быть в курсе.

продолжение следует…