Интервью с автором Windows PowerShell Джеффри Сновером
Вступление
Мы поговорили с Джеффри Сновером (Jeffrey Snover), членом технического совета Microsoft и CTO по вопросам трансформации современных трудовых ресурсов. Сновер — автор Windows PowerShell, объектно-ориентированного скриптового языка, инструмента автоматизации и командной оболочки. Предлагаем вашему вниманию полный текст интервью.
Интервью
Evrone: Вот уже более 15 лет PowerShell помогает автоматизировать рутинные процессы и выполнять задачи в локальных и удаленных системах. Что было раньше, курица или яйцо? То есть стал ли документ Monad Manifesto отправной точкой для разработки PowerShell или наоборот — в документе отражены принципы уже созданной системы?
Джеффри: В создании PowerShell отчётливо просматриваются три «момента истины». Первый возник из-за уникального дизайна инструмента командной строки WMIC. Я разработал его специально, чтобы обойти некоторые безумные бюрократические процедуры выпуска новых продуктов в Microsoft. Это был конвейерный процессор XML-документов с XSLT-преобразованиями. Такая архитектура позволила мне без особых усилий добавить невероятное количество мощности . Я посмотрел на это и сказал: «Вау».
Второй момент случился, когда я пытался убедить команду, портирующую ksh на Windows, использовать основные идеи, которые я заложил в WMIC. Я хотел, чтобы они реализовали мои идеи с помощью .NET для создания оболочки общего назначения. Они смотрели на меня так, словно у меня изо рта торчал крысиный хвост, и ничего не понимали. В конце концов я просто ушёл в свой кабинет и через месяц написал 10 000 строк кода. Это был прототип, который включал все основные концепции того, что сейчас называется PowerShell. Как только я смог показать воплощение идеи, люди всё поняли и захотели пойти этим путём.
Мы получили финансирование, но основная часть разработчиков находилась в Индии. Это была катастрофа, поскольку никто из нас не знал, как вести распределённую разработку. Для меня проблема заключалась в том, что моя команда разработчиков не уяснила ни проблему, ни подход. Они не могли выдавать независимые решения, которые сложились бы в нечто единое и согласованное. Поэтому пришлось потратить время и написать Monad Manifesto, где я задокументировал суть идеи. Этот документ и перенос всей разработки обратно в США, в Редмонд, позволили проекту достичь успеха.
По-моему, мне приписывают слишком много заслуг в создании PowerShell. PowerShell классный, потому что у нас был целый ряд выдающихся инженеров, которые вложили в проект свою крутость. Моя заслуга в том, что Monad Manifesto создал концептуальную структуру, которая всё расставила по своим местам. Это позволило нашим гениям объединить свои IQ и создать когерентное решение. Как подсказывает опыт, такое редко случается.
Evrone: С 2016 года PowerShell доступен для Linux и MacOS. Между тем многие системные администраторы и разработчики мало осведомлены о возможностях его применения. Они продолжают использовать традиционные методы автоматизации и стандартные оболочки. Ты можешь уточнить, какие задачи идеально подходят для решения с помощью PowerShell в Linux и MacOS?
Джеффри: Меня не столько интересует продвижении PowerShell, сколько успех других людей. Если кто-то преуспевает с имеющимися у него инструментами, зачем что-то менять? С другой стороны, тем, кто просто заметает проблемы под ковер, было бы полезно попробовать PowerShell, чтобы заменить хрупкий, держащийся на танцах с бубном, парсинг текста конвейерами объектов (структурированных данных). Кому-то кажется, что использование PowerShell усложняет процесс, но на практике это кардинальное упрощение предметной области.
Тут возникает вопрос: зачем изобретать PowerShell, почему бы просто не использовать ksh или bash? Я давно работаю с Unix, поэтому это было моим первым порывом. Я попробовал и потерпел неудачу. Существует коренное различие в архитектуре между Unix и Windows. Linux — это ОС, ориентированная на работу с файлами, а Windows — это API-ориентированная ОС. В Linux, если вы можете изменить файл и запустить процесс, вы можете управлять чем угодно. Вот почему awk, sed и grep являются инструментами управления. В то время в Windows ничего не работало подобным образом. Все держалось на API, который возвращал структурированный объект. Вот почему awk не работает с WMI, sed не работает с Active Directory, а grep не работает с реестром. Чтобы управлять этой средой, мне пришлось изобрести новый инструмент.
Интересно то, что сейчас побеждает подход Windows, так что PowerShell становится лучшим инструментом для современного мира. Это парадоксально, но факт — большая часть мира переходит на REST API, которые возвращают структурированные объекты (документы JSON). Именно в этом случае PowerShell попадает прямо в яблочко.
Evrone: Для изучения PowerShell есть известная книга Mastering PowerShell доктора Тобиаса Велтнера (Dr. Tobias Weltner). Что ещё стоит прочесть?
Джеффри: Есть множество замечательных книг, но если бы мне нужно было добавить только три, я бы сказал, что PowerShell in a Month of Lunches Дона Джонса (Don Jones) — отличная книга для начинающих. Из книги PowerShell Cookbook Ли Холмса (Lee Holmes) вы узнаете, как использовать PowerShell для решения реальных задач. Брюс Пайетт (Bruce Payette) был одним из разработчиков языка и написал книгу, которую должен иметь каждый специалист — PowerShell in Action.
Evrone: Системные инженеры обожают разрабатывать забавные и иногда не очень-то безопасные проекты, такие как «Русская рулетка» на основе PowerShell. Встречались ли тебе из ряда вон выходящие вещи, сделанные с помощью PowerShell?
Джеффри: Да я каждые пару недель удивляюсь тому, как используют PowerShell. В этом и заключается удовольствие от создания технологии — никогда не угадаешь заранее, что произойдет, когда гениальные люди возьмут и применят к ней свои творческие способности. Ты просто сидишь и восхищаешься.
Evrone: Программистам и бета-тестерам приходится немало потрудиться, чтобы приложение работало стабильно. Одна из последних наиболее интересных вещей — открытая предварительная версия Azure Chaos Studio, платформы для симуляции хаоса. Не мог бы ты рассказать подробнее о том, как эта платформа поможет разработчикам совершенствовать код?
Джеффри: Я занимаюсь технологиями более 40 лет, и вот что я понял: программное обеспечение работает, когда работает, и терпит неудачу, когда терпит неудачу. Это звучит глупо, но происходит именно так. Большинство программистов сосредоточены на успехе, они тратят время, добиваясь, чтобы код успешно выполнялся. Они хорошо продумывают, как программа будет работать, если всё в порядке. И когда всё идёт штатно, их код работает.
Но они упускают из виду сценарии, в которых что-то пошло не так. Порой с API бывают проблемы. Многие инженеры наполовину проваливают обработку ошибок, и в массе случаев эта обработка ошибок не работает, и так далее. Когда происходит сбой, их код оказывается к нему не готов.
Систематическое внесение «хаоса» в систему — лучший способ выяснить, будет ли код работать при сбое. Было время, когда я выдергивал сетевой кабель или вилку из розетки, чтобы проверить, насколько всё надежно. Это направляло мои мысли в нужную сторону, но давало неустойчивые результаты и не подходило для применения в больших масштабах. Позже я стал симулировать ошибки по всему своему коду, чтобы можно было эмулировать отказ API. Это давало огромное преимущество. Теперь в нашей индустрии эта модель называется «хаос», и у нас есть стандартизированные инструменты для внедрения её в наши системы. Мне это нравится. Мало что повышает качество и надежность кода лучше, чем хаос.
Evrone: С каждой новой версией Windows Server все больше интегрируется в Azure. Заглянем в будущее: верно ли будет предположить, что все нагрузки смогут работать исключительно в облаке, а Windows Server станет лишь способом представления облачных ресурсов для инфраструктуры заказчика?
Джеффри: Для достижения правильного баланса между стоимостью, задержкой, производительностью, отказоустойчивостью и масштабируемостью гибридные вычисления необходимы. Так что вычисления будут происходить и в облачных дата-центрах, и в сетях, как внутри, так и на периферии, а также на пользовательских устройствах. Я придерживаюсь мнения, что программное обеспечение всё ещё находится в зачаточном состоянии, и мы, как отрасль, до сих пор не знаем, как писать важное программное обеспечение, которое будет хорошо работать со всеми этими факторами. Шаг за шагом нам удается разобраться с какими-то конкретными вещами, появляются более совершенные паттерны, но я считаю, что архитектуры, паттерны и антипаттерны будут развиваться ещё довольно долго.
Как всегда, Microsoft делает упор на разработчиков. Но теперь исторически сложившееся высокомерие сменилось эмпатией и скромностью. Наше партнерство с разработчиками сейчас теснее, чем когда-либо, и мы намного лучше умеем их выслушивать и решать проблемы вместе с нашими разработчиками и сообществом. В частности, мы стремимся дать разработчикам то, что им нужно и чего они хотят. Помимо инвестиций в Windows, мы вкладываем огромные средства в Linux, в другие проекты с открытым кодом и в сообщества. Когда мы начали запускать собственные сервисы, произошла настоящая революция, и кое-кто получил урок смирения. Как оказалось, когда вы звоните разработчику в 3 часа ночи, чтобы исправить ошибку, он начинает писать более качественные программы. Что ещё более важно, мы можем видеть, как наши клиенты на самом деле используют наше программное обеспечение; где оно хорошо работает, а где нет. Это позволяет нам вести более содержательные беседы с клиентами и обслуживать их лучше, чем когда-либо прежде.
Evrone: COVID-19 ясно дал понять, что оффлайновые компании могут разрушиться в любой момент, и может остаться только онлайновый бизнес. Как пандемия повлияла на архитектуру облачных сервисов Microsoft?
Джеффри: COVID-19 устроил стресс-тестирование всех наших разработок. Мне пришлось взять на себя обязанности исполнительного инцидент-менеджера, поскольку мы стремительно масштабировали сервис Microsoft Teams, ведь целые школьные системы и организации переходили на работу в режиме онлайн. Это был невероятный стресс-тест. Нам пришлось купить и установить столько серверов, сколько удалось достать, вывести из эксплуатации и уменьшить другие рабочие нагрузки, чтобы высвободить мощности, а затем с неслыханной скоростью снова наращивать новые мощности MS Teams. В какой-то момент мы даже зафрахтовали самолет и отправили сетевое оборудование в страну, чьи интернет-соединения не могли поддержать школы, перешедшие на онлайн-обучение. Самое удивительное, что всё это работало. Временами мы пробуксовывали, но всё работало. Это стало убедительным подтверждением ценности облачной архитектуры для бизнеса.
Пандемия не изменила нашу архитектуру облачных сервисов, но она подтвердила, насколько важны надежность и отказоустойчивость.
Evrone: Защита данных была и остается одним из главных приоритетов для большинства клиентов. На что следует обратить особое внимание при разработке безопасных приложений и развертывании их в облачной инфраструктуре?
Джеффри: Надо решить, важна ли для вас безопасность или нет. Если вы решите, что это важно, нужно выделить ресурсы и следовать устоявшимся шаблонам и практикам жизненного цикла разработки безопасного ПО. Нужно не болтать, а делать. Безопасность требует засучить рукава и выполнять тяжелую, часто непривлекательную работу. Если кто-то не использует многофакторную аутентификацию, то я говорю как раз о нём.
Обеспечение безопасности облачных и локальных приложений сильно различается. Я считаю, что повысить безопасность облачных приложений гораздо проще. Многие аспекты безопасности берёт на себя Microsoft, а Azure предоставляет богатый, всесторонний набор средств управления безопасностью и средств защиты. Вам остается их использовать.
Evrone: Наш мир стремительно меняется, и порой довольно сложно приспособиться к нему. Можешь поделиться секретами успеха ? Как тебе удается оставаться на гребне волны в сфере технологий и делать мир лучше?
Джеффри: Вот такая физика: чем больше растёт объем информации, тем больше сужаются экспертные знания. Когда меняются парадигмы, экспертные знания иссякают. У нас сложная отрасль, и мне постоянно кажется, что мне наступают на пятки, что я не могу идти в ногу со временем. Очень трудно, но необходимо для меня было признать, что мои знания могут стать недостаточными, и нужно сфокусироваться на «обучении». Звучит безобидно и просто, но когда ты в комнате самый старший и понятия не имеешь, о чём идёт речь, чувствуешь, что трон под тобой шатается. Я делаю глубокий вдох, собираюсь с духом, начинаю задавать «глупые» вопросы... и вдруг моя тревога сменяется радостным волнением. Оказывается, я не зря зарабатывал шрамы в нелегкой борьбе: я могу видеть закономерности, знаю, что важно, как и когда слушать клиентов, знаю, когда нужно быть осторожным, а когда смелым, как создать стратегию и тактику развития, и самое главное, как работать с широким кругом людей, чтобы достичь нужных результатов. Если есть сомнения, сосредоточьтесь на людях. Это всегда работает.
Заключение
Нам было интересно побеседовать с Джеффри и узнать о его взглядах и многолетнем опыте работы.
Мы также благодарим нашего друга Николая Рубанова из компании Selectel за помощь в подготовке вопросов для этого интервью.
Evrone предлагает индивидуальные решения по разработке программного обеспечения с учётом специфических потребностей наших клиентов. Если вам нужно помочь с реализацией проекта или идеи, или вы просто хотите узнать больше о наших услугах, отправьте нам сообщение через форму ниже, и мы с вами всё обсудим.