Базы данных NoSQL очень гибкие, но это не лучший выбор для транзакционных приложений, пишет на портале Information Age вице-президент поставщика РСУБД Yugabyte в регионе EMEA Мартин Гафни.

Несмотря на то, что пандемия коронавируса еще не угасла, предприятия медленно, но верно выходят из под ее влияния. Например, Всемирный банк считает, что мировая экономика готовится к самому быстрому выходу из рецессии, наблюдавшемуся за последние 80 лет. В то же время глобальный кризис здравоохранения навсегда изменил бизнес, причем эти изменения выходят за рамки перехода на удаленную работу. Фундаментальный и необратимый переход к использованию цифровых технологий для достижения цифровой трансформации начался во время COVID и продолжает ускоряться. McKinsey сообщает, что многие компании, рассчитывавшие завершить цифровые проекты в ближайшие семь лет, осуществили их за считанные месяцы.

«То, что привело вас сюда, не приведет туда»

CIO обращаются ко все более и более агрессивному использованию облака, потому что во многих отношениях цифровая трансформация осуществляется с его помощью — облако предоставляет вычислительные мощности и, в значительной степени, услуги клиентам. Однако проблема заключается в том, что, цитируя бизнес-гуру Маршалла Голдсмита, «то, что привело вас сюда, не приведет туда, где вы хотите оказаться». Если бизнес действительно хочет использовать облако для выхода на новый уровень цифровой экономики, ему придется признать, что управление бизнес-системами в киберпространстве столкнулось с проблемами.

Что имеется в виду? Хорошо известно, что первое поколение облачной миграции было направлено на превращение капитальных затрат в операционные. И это было здорово, но вскоре мы обнаружили, что нельзя взять большую базу данных IBM или Oracle и перенести ее в облако. Перенос в любом случае сопряжен с риском, а для больших монолитных приложений это просто технически невозможно.

Первое поколение инженеров корпоративного облака пыталось обойти эту проблему, разбив эти большие системы на множество маленьких деталей — отсюда возникли виртуализация (она позволяет разместить все, что можно, на нелокальных серверах в ЦОДах) и контейнеризация (вместо того, чтобы устанавливать каждую часть ПО в ОС на виртуальном сервере, вы можете поместить ее в контейнер, в первую очередь это касается виртуальных машин, а затем перенести в Docker и т. п.). Вероятно, большинство предприятий сейчас занимаются именно этим — они используют такие технологии, как Kubernetes, для объединения множества оркестрируемых контейнеров. Большинство людей сейчас также являются более или менее убежденными пользователями Agile, что является действительно проверенным способом заставить всю эту сложную комбинацию работать.

NoSQL был великолепен, но он не довел нас до финиша

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

Блестящим ходом было разделить их на более мелкие части при помощи микросервисов. У каждого из них есть обслуживающая база данных, и в итоге у вас на руках имеется множество баз данных NoSQL. Почему это проблема? Когда вы что-то покупаете или переводите деньги из пункта А в пункт Б, это должно работать в обоих местах и в одно и то же время. Если вы кладете что-то в свою онлайн-корзину и оно теряется, это создает неудобства, но не является настоящей катастрофой. Но когда вы просите банк оплатить доставку заказа, он должен это выполнить и мгновенно сбалансировать счет. Такая возможность считалась само собой разумеющейся в транзакционных системах до тех пор, пока не началась революция облачных вычислений, и тогда пришлось писать огромное количество дополнительного кода, тысячи строк кода, со всеми сложностями, обновлениями и затратами на обслуживание, тогда как десять лет назад эту работу могла идеально проделать одна строка SQL.

Транзакции уровня мэйнфрейма в облаке

Призыв к размышлению над тем, какими базами данных пользоваться бизнесу, связан с тем, что по мере того, как предприятия будут наращивать темпы выполнения множества операций на цифровой скорости в постковидную эпоху, будет появляться все больше и больше сценариев использования, которые они не смогут реализовать только с помощью виртуализации, микросервисов и NoSQL. С одной стороны мы не можем вернуться к большим устаревшим решениям Oracle и IBM, которым нужны все эти огромные вычислительные машины и кондиционеры в углу. С другой, будучи серьезным игроком в электронной коммерции, вы не можете от них отказаться (что связано с бóльшим риском, бóльшей задержкой и в целом бóльшими расходами). Решение должно представлять собой облачный, распределенный, Low-code подход к транзакционным данным, который может предоставить то, что не смогла предоставить NoSQL: простую, надежную, мгновенную и масштабируемую поддержку транзакций.

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