Если вы администратор баз данных и испытываете двойственные чувства по поводу SQL Azure (реляционная база данных Microsoft в «облаках»), то вы не одиноки: промышленные аналитики тоже еще не пришли к согласию относительно облачных вычислений в целом. В отчете «Рекламный цикл облачных вычислений, 2009» (Hype Cycle for Cloud Computing, 2009) говорится: «Облачные вычисления находятся на пике ожиданий. Идея заманчивая, чрезвычайно запутанная и вводящая в заблуждение».

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

Построенная на базе SQL Server, платформа SQL Azure (известная ранее как SQL Data Services), представляет собой часть платформы Windows Azure. Она расширяет возможности SQL Server веб-службами, в результате чего Microsoft становится провайдером служб баз данных в «облаках». Лучше это или хуже, но вы не контролируете физические аспекты SQL Azure — она выполняется в центрах обработки данных Microsoft, на аппаратных средствах, которые играют роль хостов, эти средства принадлежат и обслуживаются Microsoft.

«Если действительно SQL Azure является предметом продажи, который уже доступен, — назовем это услугой баз данных или DBaaS, чтобы отличать от PaaS (платформа как услуга), — то это удача для компаний-разработчиков, в которых нет администраторов баз данных или опытных системных администраторов», — заключает Мишель Пуле, редактор журнала SQL Server Magazine, соучредитель компаний Mount Vernon Data Systems и Six Sigma Uptime из Огайо в США.

«Одно дело установить SQL Express или SQL Developer на собственном ноутбуке и использовать его как персональную платформу разработки и совершенно иное — пытаться воспроизвести среду настоящей инфраструктуры Web на ноутбуке. Слишком часто разработка, которая проходит на ноутбуке, терпит неудачу при запуске в производственной среде из-за того, что эти среды существенно различаются, — продолжает Пуле. — Сейчас отдельно предлагается SQL Azure, или DBaaS. Теперь за цену, соизмеримую с продолжительностью времени, которое вам, как разработчику, необходимо потратить на создание этого нового, управляемого веб-приложения с базой данных, вам остается лишь несколько раз щелкнуть мышью и пожалуйста — вот ваше окружение SQL Server/Web, готовое к запуску. Это не просто здорово, это грандиозно».

Михаэль Кэмпбелл, консультант с опытом администрирования баз данных SQL Server и разработки, соглашается: «SQL Azure обеспечивает превосходное средство для инструкторов, разработчиков, всех, кто ищет тестовую среду, и т. д. Для инструкторов: они в принципе могут отказаться от потребности в установке лабораторных сред, могут лишь создать все тестовые разработки в «облаках». Аналогично для разработчиков — им могут быть предоставлены ресурсы для работы, и если они строят новые системы, то можно утверждать, что в их распоряжении будут очень мощные возможности масштабирования».

SQL Azure и администраторы баз данных

Все это хорошо для разработчиков, скажут администраторы баз данных, а что это дает нам? «Не ориентирована ли SQL Azure в большей степени на разработчиков? Да, она предоставляет глобально доступную базу данных для прикладных приложений, и вы можете обратиться к ней, применяя тот же самый код ADO.NET, который используете сейчас. Надо сказать, что в ней, безусловно, должен быть аспект для администратора базы данных, — утверждает Майкл Оти, технический директор журналов Windows IT Pro и SQL Server Magazine и соавтор книги Microsoft SQL Server 2008 New Features. — Кто-то должен спроектировать архитектуру базы данных, создать индексы, ограничения, триггеры, представления и все то, что сделал бы администратор баз данных».

Блогер Брент Озар из Quest Software еще яснее формулирует позицию администратора баз данных: «Если бы администраторы баз данных создали список функций SQL Server, которыми они пользуются ежедневно, то они представили бы там такие вещи, как резервное копирование, планы выполнения запросов или, быть может, запуск процедуры sp_who2 для определения того, кто в данный момент работает с сервером. Azure не предлагает ничего из этого, следовательно, администраторы баз данных пожимают плечами и интересуются, кто же в конечном счете будет это делать? Если бы разработчики представили свои списки функций, возможно, они и нашли бы поддержку со стороны Azure существенной, однако неполной — в плане привычных возможностей. Когда разработчик создает новое приложение с фундамента, можно решиться с самого начала использовать лишь ту часть свойств, которая поддерживается SQL Azure. Если это так, то разработчики смогут развертывать свои базы данных либо на Azure, либо на SQL Server».

«Проблема в том, что все наши приложения были созданы без учета ограничений Azure, — полагает Озар. — Перед тем как мы сможем рассуждать об использовании Azure для существующего приложения, нам следует провести детальный анализ каждой функции SQL Server, используемой нами, и, если мы применяем что-то, что не поддерживается в Azure, нам придется искать обходной путь. В качестве примера возьмем такое приложение, как Microsoft SharePoint, которое хранит файлы в базе данных, чего до некоторой степени не хватает Azure. Переработки для обхода этого ограничения потребуют значительных затрат времени и средств».

Архитектор программного обеспечения Кевин Хаззард пишет в своем блоге Brain Spigot: «С точки зрения системного администратора, имеется радикальное различие между SQL Server и SQL Azure. Как мы собираемся жить в этом мире без команды BACKUP или команды KILL STATS JOB, в конце концов? При проектировании SQL Azure разработчики Microsoft бросили пристальный взгляд на список свойств, которые со временем выросли в SQL Server, и поняли, что есть уже много физических свойств, которые стали «затвердевать» в языке T-SQL и которые не имеют смысла для чего бы то ни было, выполняемого в конфигурации сети с тысячами других активных баз данных. Мне кажется, это хорошо, так как заставляет Microsoft подумать о том, какие физические и логические активы реально составляют базу данных, с точки зрения администратора и с точки зрения разработчика».

Протестировав недавно SQL Azure для журнала SQL Server Magazine, Майкл Оти повторяет вопросы Хаззарда: «Как без резервного копирования обеспечить восстановление базы данных после ошибки пользователя или возврат к более раннему состоянию базы данных в случае необходимости? Такой путь должен быть предоставлен, но при тестировании мне не удалось это сделать».

А вопрос Дерека Комингора, SQL Server MVP, озвучивается многими администраторами баз данных: «Как Microsoft собирается доказать, что мои данные не будут «сливаться» или теряться?». Как отметил Озар, когда разговор заходит об Azure, администраторам баз данных следует задаться вопросом о требованиях приложения в плане безопасности, надежности, резервном копировании и исполнении запросов».

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

Озар соглашается: «Перемещение существующих приложений с SQL Server в «облака» не имеет смысла с точки зрения администраторов баз данных». Однако он добавляет: «Мы должны быть готовы объяснить причины нашим менеджерам, в понятиях, имеющих смысл для бизнеса». Озар выводит четыре пункта, которые администраторы баз данных должны обсудить со своими менеджерами до того, как сделать шаг в «облака»:

  1. «Я не могу гарантировать безопасность нашим данным в облаках. Я не могу следить за тем, кто имеет доступ к SQL Server, на котором «живут» наши данные. Я не говорю, что это не находится под контролем, однако это находится вне МОЕГО контроля. Администраторы баз данных любят контролировать, и руководство ожидает, что администраторы держат все под контролем, однако здесь — то место, где контроль в Azure становится слегка размытым».
  2. «Я не могу гарантировать надежность наших услуг. Если ночью службы Azure отказали, то я могу получить сообщение и поместить заявку на устранение в Microsoft, но это не отличается от звонка в электроэнергетическую компанию, если напряжение в сети упало. Многие превозносят высокую изначальную отказоустойчивость Azure, но тем не менее и эта платформа «падает».
  3. «Я не могу контролировать/оптимизировать производительность. Если запрос исполняется медленно, я не могу определить, какие пользователи еще обращаются к той же базе данных, или просмотреть план запроса, чтобы найти пути для его более быстрого выполнения. Нельзя сказать, что никто не может настроить сервер на более быструю работу, но ответственная сторона — не администратор баз данных, а Microsoft. Если бы я был администратором баз данных, я вручил бы разработчикам номер телефона команды Azure и сказал бы: «С этого момента вы можете обращаться туда за поддержкой всякий раз, когда столкнетесь с проблемой».
  4. «У меня нет простого решения для резервного копирования. Расценки Azure не включают стоимость (и даже возможность) создания резервных копий. Если пользователь удалил запись или разработчик уничтожил таблицу, то у нас нет журнала транзакций, с помощью которого мы могли бы восстановить эти данные. Это наша задача — понять, как вести хронологические архивы наших данных, чтобы избегать случайных удалений или намеренных хакерских действий».

Озар говорит: «Только раскрывая пункты списка, подобного этому, администратор баз данных может подготовить руководство, чтобы все понимали: Azure — это очень специфическое решение».

Будет ли это летать?

«SQL Azure, вероятно, начнут воспринимать не сразу», — считает Комингор. А Кэмпбелл добавляет: «Я думаю, что Azure будет безумно сложно продавать администраторам баз данных, системным администраторам и сообществу ИТ в целом. И я вполне понимаю почему. ИТ-профессионалы весьма настороженно относятся к размещению их интеллектуальной собственности, базовых бизнес-процессов и, если честно, то и всего бизнеса, в «облаках», в особенности когда речь идет о версии 1.0 от Microsoft».

«Как разработчик, я уже начал поглядывать на Azure, но все еще вижу слишком много ограничений, вопросов и индивидуальных особенностей, чтобы предлагать кому-то использовать его», — продолжает Кэмпбелл, хотя он и допускает использование служб Amazon в собственных проектах и находит их «потрясающими», — компания-производитель продолжает работать над сглаживанием некоторых шероховатостей. «Как раз такого доверия у меня нет в отношении Azure, так как она опоздала к началу игры, это решение типа ‘я — тоже’, и первая версия нового класса предложений Microsoft. Все это не позволяет вам чувствовать себя уверенно, чтобы рекомендовать продукт большинству клиентов, как платформу, на которую им следовало бы переносить части своего бизнеса».

«В то же время, несмотря на вопросы о безопасности, надежности и резервном копировании, SQL Azure будет отличным решением в определенных ситуациях и для определенных нужд компаний, — заключает Озар. — Не для каждого приложения требуется хранение шифрованных данных кредитных карточек, уровень работоспособности состояния «24 на 7» или анализ планов запроса. В таких случаях SQL Azure и другие SQL-решения, такие как Amazon EC2, могут иметь смысл».

«Вопросы, которые поднимают специалисты относительно SQL Azure, не означают, что продукт нехорош, но лишь то, что мы должны разворачивать наши приложения иным способом, помня о некоторых ограничениях, — говорит Озар. — Например, мне не требовались безопасность, надежность и резервное копирование, когда я разрабатывал сайт SPWho2.com, для анализа данных пользователей StackOverflow.com. Эти данные открыты для широкой публики, с лицензией от некоммерческой организации Creative Commons, и все, что мне было нужно, — это SQL Server для нарезки данных ‘ломтиками и кубиками’ по-новому. Данные поступали раз в месяц, таким образом, мне была нужна лишь вычислительная мощность SQL Server на короткий период времени. «Облачное» решение оказалось идеальным для меня».

И, несмотря на сомнения относительно принятия продукта миром бизнеса, Майкл Оти придерживается следующего мнения относительно возможностей применения SQL Azure: «Поработав с SQL Azure, я обнаружил, что лично мне платформа понравилась значительно больше, чем я предполагал, и я нахожу ее на удивление легко осваиваемой и практичной».

«Если Microsoft сможет убедить руководителей бизнеса, что платформа безопасна, опыт разработки великолепен и цены оправданны, то SQL Azure могла бы стать популярной на рынке, — пишет Хаззард в своем блоге. — Только время покажет».

Продукт со временем будет совершенствоваться, и Озар считает, что по мере того, как основанные на «облачных» вычислениях решения SQL Server станут лучше, они будут все более широко применимы: «Больше баз данных будут размещаться в «облаках», хотя существующие приложения все-таки вряд ли будут переделаны на «облачные» технологии из-за дороговизны разработки».

Хаззард добавляет: «Я искренне надеюсь, что кое-что из того, чему Microsoft учится на SQL Azure, привьется и проявится в SQL Server 2011». Произойдет это или нет, но SQL Azure — определенно не та технология, которую следует отвергать, несмотря на некоторые расплывчатые аспекты.

Каролин Марвиц (cmarwitz@windowsitpro.com) — редактор Windows IT Pro, SharePointPro Connections и SQL Server Magazine, специализируется на тематике Active Directory, групповой политике и SharePoint