Статья Кристофера Тоцци со списком лучших языков программирования для разработки приложений (опубликована в этом же номере журнала. — Прим. ред.) вызвала бурную реакцию в социальных сетях в связи с отсутствием упоминания о популярном языке сценариев Microsoft PowerShell. В ответ на такие отклики автор уточнил, что при сравнении языков сценариев с языками программирования можно достаточно четко определить, что следует относить к каждой из категорий.

Цель Кристофера Тоцци в его статье была проста: объяснить, почему он считает Go, Python, Scala, Ruby и Си превосходными языками программирования в составе набора инструментов для тех, кто работает с DevOps. Напомню, что набор DevOps нацелен на активное взаимодействие разработчиков со специалистами по информационно-технологическому обслуживанию и взаимную интеграцию их рабочих процессов друг с другом.

Список был составлен на основе шести ключевых критериев:

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

Как отметил Тоцци после просмотра откликов в социальных сетях, PowerShell — это язык сценариев, и он не относится к категории языков программирования в формальном значении этого слова. «Я не хотел обидеть приверженцев PowerShell. Без сомнения, PowerShell — мощный язык сценариев, что, однако, не делает его инструментом программирования для разработки», — написал он. Однако, раз уж тема PowerShell возникла в ответ на статью Кристофера, давайте поговорим о преимуществах PowerShell как языка сценариев и о той пользе, которую могут извлечь из PowerShell те, кто работает с инструментами DevOps.

Недавно я побеседовал с Миком Плетчером, обладателем статуса Microsoft MVP в части «облака» и управления центрами обработки данных. Его сайт MickIT.com фигурирует под номером 30 в списке блогов Top 50 PowerShell на Feedspot.

Первым делом я спросил его о том, к какой, по его мнению, категории следует отнести PowerShell, если проводить сравнение между языками сценариев и языками программирования. Плетчер подтвердил, что PowerShell, безусловно, язык сценариев, очень мощный в своем качестве, однако Тоцци был прав, когда не стал упоминать его в числе языков программирования для DevOps.

Затем Плетчер добавил, что сценарии PowerShell могут быть скомпилированы как исполняемые файлы для распространения и использования, но при этом они остаются сценариями, выполняемыми внутри файла, а не какого-либо рода программами. Он также подтвердил, что основной целью PowerShell в свете потребностей DevOps, системных администраторов и ИТ-специалистов является автоматизация различных задач администрирования. Сегодня большинство продуктов и служб Microsoft имеют «зацепки», которые позволяют пользоваться преимуществами PowerShell. Кроме того, некоторые производители оборудования, такие как Cisco и VMware, добавляют аналогичные возможности в службы, позволяющие задействовать PowerShell для управления системами.

На вопрос, каковы, по его мнению, основные сферы применения PowerShell, Плетчер дал мне следующий список возможных сценариев:

  1. Автоматизация повторяющихся задач.
  2. Развертывание программного обеспечения.
  3. Управление серверами в домене.
  4. Управление учетными записями пользователей в Active Directory.
  5. Синтаксический анализ журналов и извлечение системной/статистической информации для отчетов.
  6. Управление образами операционной системы для развертывания.
  7. Работа с локальными службами, гибридным «облаком» и поставщиками «облачных» служб, таких как веб-службы Amazon, «облачная» платформа Google и Microsoft Azure.
  8. Выполнение ретроспективного анализа системных журналов с целью расследования нарушений, угроз и других проблем, связанных с доступом.

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

В завершение нашей беседы я вернулся к измеримым показателям, которые Тоцци использовал в оценке языков программирования при составлении своего списка для DevOps:

  • масштабируемость;
  • эффективность;
  • модульность;
  • высокая производительность;
  • узнаваемость;
  • переносимость.

Если посмотреть на список сценариев использования, составленный Плетчером, можно заметить, что каждое из перечисленных выше свойств может быть применено к этому списку возможностей.

Шесть критериев, изначально выделенных Тоцци применительно к языкам программирования, по-видимому, являются ключевыми аспектами, которые всегда следует учитывать при оценке любого инструмента с точки зрения целесообразности его применения в компании.