Статья Кристофера Тоцци со списком лучших языков программирования для разработки приложений (опубликована в этом же номере журнала. — Прим. ред.) вызвала бурную реакцию в социальных сетях в связи с отсутствием упоминания о популярном языке сценариев 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, Плетчер дал мне следующий список возможных сценариев:
- Автоматизация повторяющихся задач.
- Развертывание программного обеспечения.
- Управление серверами в домене.
- Управление учетными записями пользователей в Active Directory.
- Синтаксический анализ журналов и извлечение системной/статистической информации для отчетов.
- Управление образами операционной системы для развертывания.
- Работа с локальными службами, гибридным «облаком» и поставщиками «облачных» служб, таких как веб-службы Amazon, «облачная» платформа Google и Microsoft Azure.
- Выполнение ретроспективного анализа системных журналов с целью расследования нарушений, угроз и других проблем, связанных с доступом.
Плетчер также добавил, что в гибридном «облаке» или полностью «облачной» среде PowerShell позволяет снизить затраты, поскольку для задач управления проще запустить сценарий PowerShell, чем вручную выполнять рабочие операции, сидя за компьютером с удаленным подключением к «облачному» сервису. Если за время подключения приходится платить, то очевидно, что чем меньше это время, тем ниже общие затраты.
В завершение нашей беседы я вернулся к измеримым показателям, которые Тоцци использовал в оценке языков программирования при составлении своего списка для DevOps:
- масштабируемость;
- эффективность;
- модульность;
- высокая производительность;
- узнаваемость;
- переносимость.
Если посмотреть на список сценариев использования, составленный Плетчером, можно заметить, что каждое из перечисленных выше свойств может быть применено к этому списку возможностей.
Шесть критериев, изначально выделенных Тоцци применительно к языкам программирования, по-видимому, являются ключевыми аспектами, которые всегда следует учитывать при оценке любого инструмента с точки зрения целесообразности его применения в компании.