С2010 года я организовывал мероприятия Tech Outbound SQL Cruise — недельные учебные курсы с погружением, охватывающие всю платформу Microsoft Data целиком: Azure, машинное обучение, Power BI и, конечно, SQL Server на предприятии. Модель проста: обучение под руководством инструктора во время морского круиза. На стоянках в портах — развлечения, экскурсии; во время «офисных часов» предоставляются бесплатные консультации специалистов, присоединившихся к нам в роли технических лидеров. Структура недельного курса такова, что между «участником» и «инструктором» нет границ. Это распространяется и на классные занятия, которыми руководит инструктор (http://www.techoutbound.com/view-events.html); занятия проходят в форме обсуждения, так как за 20 лет в роли специалиста по обработке данных я понял, что ни у кого нет ответов на все вопросы и мы все учимся друг у друга.
В последнем круизе с нами была замечательная группа технических лидеров, и я пригласил их побеседовать о ходе внедрения «облака», новшествах T-SQL и оптимизации производительности SQL Server на предприятиях. В дискуссии участвовали Джес Борланд, главный инженер по эксплуатации в Microsoft; Ицик Бен-Ган, инструктор по T-SQL в компании SolidQ; Кевин Клайн, главный менеджер программы в компании SentryOne, и Джейсон Холл, президент по продуктам SentryOne. Для начала я предложил участникам беседы немного рассказать читателям о себе.
Ицик Бен-Ган. Я работаю в компании SolidQ, провожу большую часть времени в разъездах по миру, обучаю T-SQL. Работаю с SQL и базами данных с начала 90-х.
Джес Борланд. Я работаю с SQL Server более 10 лет. Начинал как автор отчетов, работая с SSRS в SQL Server 2005, затем стал администратором баз данных, после занялся консультированием, а теперь я главный инженер по эксплуатации в Microsoft. Мне нравится работать с разнообразными клиентами в различных отраслях. В основном я занимаюсь настройкой производительности, как локально, так и баз данных SQL Azure. С удовольствием наблюдал за тем, как совершенствовалась база данных SQL за последние пять лет, от версии v11 с ограниченной функциональностью до недавно выпущенной Managed Instances.
Кевин Клайн. Моя ИТ-карьера началась в 80-х. Я работал с Oracle и операционной системой VAX/VMS на мейнфреймах через интерфейсы с текстовым режимом. В начале 90-х я написал свою первую книгу о продуктах разработки Oracle для первого поколения операционных систем с графическими интерфейсами. Я был членом ИТ-команды, выполнявшей бета-тестирование SQL Server при переносе на Windows NT. Поскольку NT в общем доступе не было, бета-тестирование приходилось выполнять c операционной системой IBM OS/2 Warp. С тех пор я углубленно занимаюсь SQL Server.
Джейсон Холл. Я начинал с SQL Server 6.5 как системный администратор и унаследовал финансовое приложение с хранилищем данных на основе SQL Server. Очень скоро я убедился, что база данных — опорный элемент системы. Если пользователи были недовольны системой, то обычно причиной была производительность базы данных. Это было в 1998 году, и с тех пор я перепробовал почти все роли на каждой стороне сервера базы данных, пока не оказался в компании SentryOne (в то время SQL Sentry).
Тим Форд. Начнем с мониторинга производительности. Отличаются ли проблемы, которые были актуальны в прошлом, от сегодняшних? Согласны ли вы с тем, что твердотельные накопители, виртуализация, стоимость оборудования и «облако» заметно смягчили одни проблемы, но обострили другие?
Кевин Клайн. Во времена, предшествовавшие появлению «облака», основной акцент при настройке систем корпоративного класса делался на настройку оборудования сервера и подсистемы ввода-вывода. Когда оборудование и ввод-вывод приведены в порядок, мы углубляемся в структуру базы данных, индексацию и код приложений, в том числе код SQL. Трудоемкость настройки оборудования и ввода-вывода в последнее время снизилась, с распространением виртуализации, сетей SAN и устройств SSD, и это даже не учитывая «облачных» поставщиков. Но в любом сценарии возникают узкие места из-за качества структуры базы данных, индексации и кода приложений. В действительности, при использовании Azure и AWS код SQL с низкой производительностью и плохое проектирование повышают затраты, поскольку вы платите за ресурсы процессора, хранилища, а также входящий и исходящий трафик.
Джейсон Холл. Я вижу три основных аспекта, в следующем порядке:
- Виртуализация. Сегодня виртуализация повсюду, и у многих специалистов по обработке данных нет возможности оценить производительность на виртуальном уровне. Многие добиваются результатов, но в этой области все еще остаются недоработки.
- Флеш-накопители. Стоимость флеш-массивов сейчас ниже, чем когда-либо раньше, и цены продолжают падать. Рабочие характеристики доставляют меньше проблем, чем 10 лет назад. К сожалению, во многих случаях некоторые забывают следить за флеш-накопителями. Общее положение дел улучшилось, но все же необходимо обратить внимание на производительность хранилища.
- «Облако» и платформа как служба (PaaS). Многие компании двигаются к «облаку» и PaaS. Отслеживаемые параметры и средства, используемые для повышения производительности, смещаются в сторону проектируемого нами кода и стратегий, пригодных для использования внутри базы данных, замещая настройку на уровне служб и оборудования.
Тим Форд. Отсюда как раз вытекает мой следующий вопрос: что говорят ваши клиенты и коллеги о различиях в проблемах настройки производительности локально и в «облаке»?
Джейсон Холл. В «облаке» у нас меньше контроля над доступными ресурсами и способами их использования. Акцент сдвигается на запросы и индексацию. Кроме того, в силу важности миграции в течение нескольких следующих лет нам потребуется разобраться в том, какие объекты подлежат миграции, какими должны быть способы миграции и как эффективно управлять расходами в «облаке».
Джес Борланд. Самые большие различия мы наблюдаем в автоматизации и мониторинге. Инструментарий автоматизации глубоко укоренен на многих предприятиях и обеспечивает автоматизацию в широком спектре продуктов. Для освоения нового набора инструментов, возможно, придется приложить дополнительные усилия. Могут также возникнуть трудности при подготовке к работе существующих инструментов мониторинга или поиске новых с той же функциональностью. Оба названных направления могут быть сопряжены с изменениями, но трудности преодолимы.
Кевин Клайн. Смена парадигмы определенно происходит. Однако я постоянно сталкиваюсь с тем обстоятельством, что освоить основы профессии в сфере обработки данных по-прежнему трудно. В отрасль приходит множество новых людей без опыта, с очень слабыми практическими навыками. В результате у нас никогда не будет недостатка в базах данных с неэффективной структурой, которую необходимо исправлять, неудачной индексацией, которую нужно корректировать, и огромном количестве кода SQL, который требуется настраивать. Эти аспекты настройки производительности всегда будут актуальны как в «облаке», так и в локальных приложениях.
Тим Форд. Поскольку разговор пошел в этом направлении, поговорим о внедрении «облака». Считаете ли вы, что сдвиг в «облако» наконец ускоряется? Достигнута ли точка перелома?
Джес Борланд. Думаю, большинство компаний уже видят преимущества «облачных» служб и понимают, что инфраструктура и безопасность здесь надежны. Я не замечаю, чтобы компании целиком переходили на «облачные» службы, но многие аспекты «облака» помогают решать задачи бизнеса. Для многих компаний оптимален гибридный подход. Количество инструментов для переноса существующей инфраструктуры и приложений в «облако» сейчас больше, чем когда-либо раньше. Устраняя необходимость в управлении инфраструктурой, мы помогаем компаниям сосредоточиться на решении своих задач.
Джейсон Холл. В 2018 году я впервые получил сведения о крупных компаниях, принимающих решение о полном переходе в «облако» к концу 2019 года.
Тим Форд. И последний вопрос об «облаке», прежде чем перейти к другим темам: можете ли вы дать какие-либо рекомендации читателям, обдумывающим переход в «облако»?
Джес Борланд. Общий совет: перенос существующих приложений предпочтителен, если используется инфраструктура как служба (IaaS), а новые приложения, спроектированные в соответствии с заданными параметрами, будут лучшим вариантом в случае PaaS. Современные приложения часто проектируются для использования всей функциональности SQL Server и настроены для работы с традиционным физическим или виртуальным оборудованием. То же относится к SQL Server в виртуальной машине. Однако варианты PaaS, такие как база данных SQL, обеспечивают ограниченный набор функций, поскольку они проектировались как хранилища данных, а не полноценные серверы.
Самое интересное — это новые функции, объединяющие перечисленные варианты, такие как управляемые экземпляры базы данных SQL. Управляемые экземпляры позволяют восстановить базу данных SQL Server и обеспечивают почти стопроцентное соответствие функциональности. Кроме того, у PaaS есть такие преимущества, как автоматическое резервное копирование, полностью интегрированные функции высокой доступности, удобное масштабирование и первоочередная «облачная» разработка. Здесь соединяются достоинства обоих подходов.
Джейсон Холл. Мне приходилось слышать от многих, что финансовые преимущества от перехода в «облако» становятся полностью очевидными только после того, как задействованы особые возможности PaaS. Если стоимость — важный фактор при переходе, не ограничивайтесь простым переносом, иначе вас может ожидать неприятный сюрприз. Позаботьтесь о правильном выборе величины рабочих нагрузок и приспособьте архитектуру приложений к узкоспециализированным службам, чтобы добиться максимального выигрыша.
Тим Форд. Мы пока еще не рассмотрели язык Microsoft SQL Server, T-SQL. Ицик, вы признанный эксперт по T-SQL. Какие особенности этого языка вызывают у вас интерес?
Ицик Бен-Ган. Мне нравятся головоломки, а задачи запросов, в сущности, те же логические головоломки. Учтите и то обстоятельство, что задача T-SQL состоит не только в получении правильного результата, но и в оптимизации производительности. Это еще более затрудняет ее. Совершенствовать решения можно в течение многих лет. В этой области важна постоянная практика. И плюс большое пространство для творчества и самовыражения.
Выдающимся улучшением я считаю оконные функции. Их значение гораздо больше, чем полагают многие. Они не только обеспечивают вычисления при анализе данных, это, по сути, универсальный инструмент для решения задач, связанных с запросами, и альтернатива традиционным решениям на основе предикатов. В настоящее время оконные функции используются во многих моих оптимизированных решениях. Если вы еще не используете оконные функции, обязательно изучите их. Поработав с ними в течение нескольких лет, я все еще обнаруживаю новые, креативные способы их применения.
В частности, многие задачи можно решить с помощью нарастающих итогов как косвенного средства. Например, вы можете решить многие задачи темпоральных запросов с применением интервалов с нарастающими итогами. Кроме того, необходимо понимать, как оптимизировать оконные функции. В этой области наблюдаются заметные улучшения благодаря недавней оптимизации пакетного режима в SQL Server 2016 и пакетного режима на таблице хранилища строк в SQL Server 2019.
Тим Форд. Мы только что затронули аспект производительности оконных функций, и каждый из вас так или иначе упомянул о мониторинге. В чем, на ваш взгляд, будущее мониторинга производительности?
Джейсон Холл. Определенно в машинном обучении и сложной аналитике. Речь не идет об удобной кнопке. Не думаю, что в ближайшем будущем мы выйдем на уровень «запускаем, и оно работает быстрее», но следующий рубеж — устранить анализ, выполняемый специалистами по данным вручную. Технические средства определят, что является нормой и, самое важное, что в последнее время не соответствует норме. У специалистов по данным есть необходимые знания для устранения проблем. Будущее мониторинга производительности в том, чтобы подводить их к корню проблемы быстрее или даже прежде, чем проблема проявится.
Кевин Клайн. Отрасль делится надвое: с одной стороны — люди, понимающие цену правильного ведения бизнеса, с другой — те, кто не понимает. Большинству здравомыслящих людей не придет в голову начинать новый бизнес без страховки или покупать дорогостоящее оборудование без гарантии и договора об обслуживании. Некоторые так поступают, но почти все в конечном итоге жалеют об этом. Системы мониторинга производительности играют ту же роль, что страховка и гарантии, но для приложений и баз данных. Ситуация, которую редко приходилось видеть в прошлом, но которую я встречаю по нескольку раз в год в настоящее время: администраторы баз данных и администраторы, которые не реализовали мониторинг производительности, подвергаются риску увольнения, когда их компания сталкивается с серьезными простоями без предупреждения из-за отсутствия мониторинга. Компании действительно рискуют потерять огромные деньги в результате простоя. Предприятия, желающие опередить конкурентов и защитить себя от неоправданного риска, всегда используют мониторинг производительности.
Тим Форд. Похоже, пора перевести разговор с аппаратного и программного обеспечения в нашей отрасли и сосредоточиться на самом важном аспекте: людях, которые работают с тем, что производим мы. Иногда мне приходится выполнять функции администратора баз данных. Это моя вторая карьера. Какой совет вы бы дали тем, кто начинает свою карьеру на платформе данных Microsoft?
Ицик Бен-Ган. Данные становятся все более критичными для успеха большинства компаний. Юваль Ной Харари хорошо описывает это явление в книге Homo Deus. Выбор этой сферы деятельности — уже неглупый ход.
Мне бывает трудно ответить на просьбу дать совет по выбору карьеры, поскольку я не знаю, насколько хорошо для других то, что принесло успех мне. Я учился у многих, но были среди моих наставников двое выдающихся. Мой начальник на моей первой работе в роли специалиста по данным, Гилад Гордон, научил меня многим техническим хитростям, но особенно меня впечатлило, насколько бескорыстно он это делал. Другим наставником был Йехуда Пантанович. Я занимался годзю-рю (разновидность карате, зародившаяся на Окинаве), и он был моим тренером. Я восхищался его целеустремленностью и ясностью взгляда на различные задачи. Помню, я рассказал ему, как нервничаю, когда приходится выступать перед большими аудиториями, и он посоветовал перед выходом на сцену сказать себе: «Это обычный разговор в офисе». На первый взгляд совсем простой прием, но он оказался действительно полезным для меня.
Тим Форд. Кевин, в сообществе SQL Server вас глубоко уважают как лидера, учителя и наставника. Можете ли вы назвать один-два нетехнических аспекта, в которых было бы полезно совершенствоваться специалисту по обработке данных?
Кевин Клайн. Могу сразу же назвать две вещи. Во-первых, целенаправленная практика. Многие из нас любознательны, поэтому мы много учимся, читаем статьи и следим за новостями об SQL Server. Но я понимаю под словом «целенаправленная» нечто иное. Лучшей аналогией будет подход спортсменов мирового уровня. Современные спортсмены тщательно анализируют свои сильные и слабые стороны. Шлифуйте свои навыки в каждой из этих категорий; следите за своими достижениями, ставя перед собой конкретные, поддающиеся объективной оценке цели. Добивайтесь совершенства многократным повторением. Второй совет — найдите наставника. Это должен быть человек, которому вы хотели бы подражать, как в профессиональном отношении, так и в плане межличностного общения. Он должен не только владеть техническим мастерством, но и эффективно взаимодействовать с коллегами и руководством. В большинстве случаев люди получают работу благодаря профессиональному мастерству, но для продвижения по служебной лестнице нужна «мягкая» сила. Ищите людей, у которых есть чему поучиться в обоих направлениях. А если вы далеко продвинулись по карьерной лестнице, попробуйте сами стать наставником. Именно обучая других, нам удается особенно ясно и глубоко усвоить ранее приобретенные знания.