Никаких Кликов: Интервью С Джессикой Дин О Командной Строке, Автоматизации И Devops



Никаких кликов: интервью с Джессикой Дин о командной строке, автоматизации и DevOps

Мне нравятся горячие клавиши, псевдонимы, сценарии оболочки и другие способы повысить продуктивность использования клавиатуры.

Я сам не особо далеко прошёл по этому пути, но меня всегда впечатляют люди, которые действительно вникают в это, и мне хочется у них спросить.

Осенью она выступала на нашей конференции DevOops Джессика Дин .

Когда дело касается платформ, она удивительно разносторонний человек: она любит Linux, постоянно использует Mac, а также работает в Microsoft. И она очень любит автоматизацию, скрипты и отказ от мыши — настолько, что в ее точечные файлы уже сотни коммитов.

В эфире DevOops мы с Михаилом Дружининым ( ксомьякус ) спросил ее об использовании терминала и об объединении миров Windows/Linux/Mac, а так как это было на конференции по Devops, то ближе к концу разговор зашел и о Kubernetes. И вот, прямо перед новым онлайн DevOops , я хотел перевести это интервью на русский язык, чтобы оно было в текстовом формате.

Текстовая версия немного сокращена, если вы предпочитаете посмотреть оригинальное англоязычное видео, вот оно: Евгений Трифонов: Я изучал ваши точечные файлы на GitHub и был впечатлен.

Джессика Дин : Большое спасибо! Да, это интересный проект, и он продолжает развиваться, я постоянно добавляю в него что-то новое.

Я фанат автоматизации, вещей, которые упрощают любой процесс.

Мои точечные файлы как-то связаны с этим.

Их можно использовать и в Linux, и в подсистеме Windows для Linux (хотя бы WSL1, хотя бы WSL2) и в macOS. Они обращаются к 17 различным инструментам с открытым исходным кодом.

Основная причина, по которой я все это сделал, заключалась в том, чтобы упростить рабочий процесс как с точки зрения разработки, так и с точки зрения эксплуатации.

И последний раз я что-то добавил туда в качестве спикера, потому что мне тоже очень нравится показывать людям настоящие демо и код. Я использую VS Code, но зрителям в зале сложно что-либо разглядеть на темном фоне, а он у меня обычно включен, а удобного способа переключения между профилями не было.

Поэтому я написал две функции для переключения, чтобы было удобно кодить в темном режиме, а потом демонстрировать код со сцены в светлом.

В общем, ура автоматизации, когда ты пишешь одну функцию вместо того, чтобы набирать вручную 10 команд. Евгений: Эти идеи мне близки, но я чувствую пару проблем.

Первое: чем больше я все настраиваю на своем компьютере, тем сложнее становится, когда я пытаюсь использовать чужой, особенно с другой ОС.

Наверное, поскольку ваши дотфайлы переносимы между разными операционками, все проще, но все же: не было ли такой проблемы? Джессика : Многого не было.

Но вы дали мне идею, как еще я могу улучшить свои точечные файлы.

Если я запущу обычную установку, мне придется установить целый набор из 17 упомянутых инструментов.

Но есть еще вопрос, что мне нужно в системе.

Если речь идет о моей собственной системе, то я установлю все, что мне может понадобиться, со всеми зависимостями.

Но если я использую чужое, то мне нужен только удобный CLI с комфортным интерфейсом - я использую тему для zsh Powerlevel9k (да, я знаю, что Powerlevel10k уже появился), у меня на экране много полезной информации.

И вот я подумал, что мне нужен вариант установки, где можно установить только этот интерфейс без всех остальных зависимостей.

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

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

Здесь, вероятно, виден мой опыт DevOps. Евгений: Моя вторая проблема.

Кажется, что основная цель автоматизации — экономия времени, но если вовремя не остановиться, можно случайно написать операционную систему, а это противоположность «экономии времени».

Бывает ли у вас ощущение «падения в кроличью нору»? Джессика : Иногда это случается! у меня даже есть быстрый со словами «Вниз по кроличьей норе» в названии.

Я написал функцию включения и выключения часов в меню macOS. Потому что я провожу технические демонстрации на камеру, а им нужно спрятать часы.

Не хочется каждый раз заходить в настройки ОС и нажимать там, чтобы их включать и выключать.

Для меня это лишние шаги, которые я не хотел предпринимать.

И я провалился в очень глубокую кроличью нору, пытаясь написать функцию, решающую эту проблему.

Действительно, наступает момент, когда ты понимаешь, что решение заняло у тебя слишком много времени.

На macOS это оказалось сложно, и если вы начнете реализовывать это еще и для Linux с Windows, вы никогда не закончите.

Бывают моменты, когда вам нужно спросить себя: «Какую пользу я от этого получу? Сколько времени я сэкономлю, потратив 48 часов на написание чего-то, что каждый раз экономит три секундыЭ» Но есть и любопытство, ведь мы все инженеры: «Но я уже начал, я не могу сдаться!» Михаил Дружинин: А как вам удается себя остановить? Джессика : Иногда никак, иногда пишу до трёх ночи! В других случаях я ищу чужой код. Я много работал над открытым исходным кодом и думаю, что когда мы работаем вместе, мы становимся лучшими инженерами.

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

Но я добавил в свои точечные файлы еще 17 инструментов, отчасти потому, что уже были члены сообщества открытого исходного кода, у которых уже было то, что мне нужно.

Я смог использовать их код и добавить в него что-то свое, тем самым внеся свой вклад. Есть люди, которые разветвили мои точечные файлы.

И я изначально форкнул свой от кого-то другого, тот от кого-то другого.

Мы все вместе строим друг друга.

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

Евгений: У вас там целое сообщество людей, которые смотрят дотфайлы друг друга? Джессика : Это верно! На Reddit есть темы об этом, есть видео в Интернете.

Еще меня однажды упомянули в теме на Reddit как человека, который работает в Microsoft, пишет dotfiles для Linux и macOS, рассказывает о Linux, получил и сертификаты Apple, и звание Windows MVP. Это было собрано в теме под заголовком «Мы не понимаем».

Но мне просто нравится работать с другими инженерами, и мне все равно, на какой платформе кто-то работает! Я вношу свой вклад в сообщество точечных файлов, ранее проделав то же самое с PowerShell (до выхода PowerShell Core, поэтому это была только Windows).

Забавно, что теперь мне снова приходится писать сценарии PowerShell, различий так много.

Я просто обожаю тусоваться в разных сообществах, и dotfiles — одно из них.

Евгений: Интересно, что ты любишь Linux и работаешь в Microsoft. Противоречия в этом нет, но люди, наверное, часто удивляются? Джессика : Да! Потому что так было не всегда.

Я так или иначе связан с Microsoft уже более 10 лет. Сначала я работал у их подрядчика.

А тогда была совсем другая эпоха с совершенно другим руководством компании.

Когда я приехал в кампус, у меня были iPhone и Mac, и кто-то окликнул меня: «Вы случайно не один из тех людей, у которых есть Mac и iPhoneЭ» И я такой, пряча рюкзак и компьютер: «Кто-то! Срочно дайте мне Windows Phone! Бегите в музей! Я не хочу быть паршивой овцой!» Даже команда, с которой я работал, смеялась надо мной, потому что все знали меня как любителя Linux и Apple, хотя в то же время у меня был статус и сертификация Windows MVP. Тогда на работе я занимался примерно тем же, чем сейчас занимаюсь как адвокат, но тогда я делал это онлайн – мы называли это взаимодействием через социальные сети.

Моя работа заключалась в взаимодействии с сообществом популярных интернет-ресурсов в сфере ИТ, таких как Reddit и Spiceworks, общении с теми, у кого были технические вопросы.

Это было еще во времена Microsoft Deployment Toolkit и SCCM. Я помогал людям в этих сообществах, одновременно работая инженером по системной интеграции Linux и ремонтируя компьютеры Apple. Так что я всегда пересекал границы платформы.

Но тогда это было нетипично.

Сейчас я работаю в Microsoft уже почти 4 года, и то, как изменилось направление внутреннего и внешнего развития, каждый день поражает меня.

10 лет назад мне было полезно работать у подрядчика Microsoft, но из меня не получился бы очень хороший сотрудник непосредственно для Microsoft, потому что я любил работать над Linux и Mac и не собирался от этого отказываться.

А 4 года назад они наняли меня после того, как я выступил с докладом о веб-сервере Linux. Я такой: «Знаешь, я только что говорил о Linux, даЭ» Так что конфликта здесь больше нет, хотя определенное прошлое есть.

Это совершенно другой Microsoft! Евгений: Что означало появление подсистемы Windows для Linux для такого человека, как вы? Это изменило всю вашу жизнь? :) Джессика : Ну, моей основной системой разработки по-прежнему остается Mac. Но у меня дома есть Surface Book. И это действительно оказывает влияние – особенно сейчас, с появлением WSL 2 и терминала с открытым исходным кодом.

У меня могут быть и PowerShell, и Ubuntu, и Fedora, и любые другие дистрибутивы, и я могу настраивать разные профили.

Я работал с командой WSL с момента ее создания.

Мой коллега Скотт Хансельман пошутил, что он «проверил мой блог под нагрузкой», ретвитнув одну из моих публикаций пару лет назад, когда Windows 10 выпустила обновление Fall Creators Update с WSL. Шутка была в том, что у блога было так много читателей, что он упал, и мне пришлось его поднимать.

Это было быстрый о том, как можно использовать терминал, точечные файлы, о которых мы говорили, и сделать так, чтобы все в WSL выглядело идентично тому, что я запускаю на Mac и Ubuntu. Это взорвало умы людей.

И это до сих пор сводит меня с ума! Мне не пришлось вносить никаких изменений.

Код, который я использовал в Ubuntu, — это тот же код, который я использовал в WSL. Поэтому у моих дотфайлов теперь всего две ветки — одна из них называется «WSL», но тоже работает на Linux, а другая — на macOS. Я до сих пор влюбляюсь в свою работу, просто глядя на то, в каком направлении мы движемся.

Объединение разработчиков всех платформ.

Евгений: Иногда я ввожу поисковые запросы не в браузере, а в терминале с помощью ддгр .

Подозреваю, что такой человек, как вы, тоже делает в терминале что-то, что обычно делается по-другому? Джессика : Это действительно так, особенно что касается CI/CD-пайплайнов — я тоже работаю в DevOps-команде, занимаюсь автоматизацией скриптами, и там могу делать проверки типа «открывается ли такой-то URL».

И в мой отчет Здесь, на DevOops, есть пример использования Curl. Чтобы протестировать подобные вещи, я сначала запускаю их локально в терминале, прежде чем помещать в конвейер.

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

О своих точечных файлах я уже говорил, что я всегда хочу видеть в терминале определенную информацию, в том числе хочу знать свои внутренние и внешние IP-адреса.

Некоторые люди, чтобы узнать свой IP, заходят на сайт типа https://whatismyipaddress.com/ .

Но для меня это всего лишь часть терминала.

Когда-то я не был таким уж энтузиастом командной строки, и тогда я задал вопрос «Зачем тратить столько времени, печатая что-то на клавиатуре».

И тут я понял, что если однажды я что-то напечатал и это осталось в истории или было сохранено как функция, то вызвать это гораздо быстрее, чем кликнуть! Итак, теперь мой личный бренд — #noclickyclicky. Михаил: Как ты к этому пришел? Сколько времени вам понадобилось, чтобы понять, что печатать стало быстрее? Джессика : Примерно 5-6 лет. Работая одновременно с технологиями Linux и Microsoft, я разворачивал приложения как с IIS, где было много кликов, так и с Linux, где был непрерывный набор текста.

Каждый раз, когда я разворачивал его на Linux, все проходило без проблем, а вот на IIS все было гораздо сложнее.

В результате я начал писать скрипты в PowerShell — так я пошел еще дальше в автоматизацию.

В общем, это было долгое путешествие.

Михаил: Какую часть рабочего дня ты сейчас проводишь в терминале? Джессика : Терминал у меня всегда работает, он всегда открыт в фоновом режиме.

Я бы сказал, что как минимум 50% времени, а может и больше, именно в нем.

А поскольку я использую инструменты DevOps, код есть везде: в Codefresh и Azure DevOps Services — YAML, в Jenkins — Groovy… Поэтому у меня такое ощущение, что я всегда живу либо в командной строке, либо в VS Code, а терминал всегда открыт. Михаил: Еще один вопрос, чтобы закрыть тему.

Вим или Emacs? Джессика : Вим.

Я знаю некоторых людей, которые предпочитают Pico, Emacs, nano. Я не могу себе представить, почему вы хотите работать в nano. Я один из тех сумасшедших людей из Vim. А как у тебя дела? Вим или Emacs? А в tmux что вы используете: Ctrl+A или Ctrl+B по умолчанию? Михаил: Вим, Ctrl+B .

Евгений: Вим.

На вопрос об этом: другой спикер Себастьян Дашнер сказал нам сегодня, что он использует плагин Вимиум в браузере и ИдеяВим в IntelliJ IDEA. Используете ли вы что-то подобное? Джессика : Нет. Самая занудная вещь, которую я использую, — это плагин.

НЕРДтри .

Он добавляет файловый менеджер слева, и я могу нажать Ctrl+N, чтобы он появился или скрылся.

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

Кажется, я сейчас использую схему вомбата.

Ну это все в свободном доступе, можно сделать самому проверять .

Евгений: Я хочу как можно больше делать с помощью клавиатуры, но во многих случаях перехожу к мыши/тачпаду.

А когда вы идете по жизни с девизом #noclickyclicky, какие сценарии могут заставить вас оторваться от клавиатуры? Джессика: Мы уже говорили о DevOps. Если я демонстрирую Azure DevOps и показываю общую картину того, как он работает (по сути, это система запуска задач), я открываю то, что мы называем визуальным редактором.

Там список задач без всякого YAML, и я его показываю мышкой.

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

Михаил: Вчера на сессии BOF о будущем Kubernetes говорили о том, что происходит переход на клики в браузере, и с YAML возиться больше не нужно, «больше не нужно быть YAML-разработчиком» , Спасибо за это".

Джессика : Точно так же, как с табами и пробелами! Михаил: На GitHub тоже вышел GitHub Actions — он тоже визуальный с кликами.

Что вы думаете об этом направлении? Думаю, так люди забудут о клавиатуре.

Джессика : Возможно, это просто моя страсть к командной строке, но, учитывая, как все развивалось за последние 10-15 лет, я не думаю, что это куда-то денется.

Я думаю, что, хотя «щелчок» является точкой входа проще, командная строка является гораздо более мощным инструментом с точки зрения воспроизводимости.

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

Я не могу запрограммировать свою руку на выполнение одних и тех же повторяемых действий, но я могу запрограммировать те же действия GitHub, чтобы у меня были одинаковые последовательные шаги.

Михаил: Сделайте конфигурацию в пользовательском интерфейсе, затем экспортируйте ее в какой-нибудь код и продолжайте что-то с ней делать.

Джессика : Потому что таким образом я тоже могу это проверить.

Я могу опубликовать его вместе с моим исходным кодом, с моим приложением.

Михаил:.

см.

разницу.

Джессика : Да, особенно.

Если я собираюсь обновить свой конвейер, мне нужно увидеть разницу в том, что я изменил, особенно если конвейер сломается.

Мне нужна история.

Я не уверен, что мы когда-нибудь отойдём от кода.

Да, мы будем его улучшать и упрощать, это основная цель Kubernetes. Он был создан для упрощения.

Helm был создан, чтобы упростить задачу.

Существуют и другие инструменты, такие как Draft и Skaffold, которые также облегчают эту задачу.

В Microsoft у нас есть Azure Dev Spaces, которые, как предполагает план действий, в будущем будут работать даже за пределами Azure, и они созданы для работы на еще более высоком уровне абстракции, когда вам не придется беспокоиться о Docker или Kubernetes. У вас может быть изолированная песочница.

Как разработчику мне не нужно ничего настраивать и не приходится иметь дело с кодом.

Мы постоянно работаем над тем, чтобы сделать простые вещи проще.

Мне кажется, что мы продолжим двигаться в этом направлении.

Майкл: Как вы думаете, каким будет следующий конкретный уровень упрощения Kubernetes? На что бы вы поставили? Джессика : Я не такой уж и гадатель! Я не знаю.

Если мы вернемся в прошлое, виртуализация уже была первым шагом абстракции.

Больше не было необходимости в физических машинах; теперь среду можно виртуализировать.

Затем, используя контейнеры, они виртуализировали ядро и продвинули виртуализацию еще дальше.

Тогда оркестровка стала способом управлять и продолжать абстрагироваться.

У нас есть бессерверная технология.

Теперь у нас есть возможность объединить Serverless с оркестрацией.

Я думаю, что путь вперед — продолжать доводить эту абстракцию до большего упрощения, и это действительно очень просто, потому что чем больше абстракции мы получаем в Kubernetes, тем сложнее становятся вещи, верно? Сейчас у меня 10 разных микросервисов для одного приложения, в одном из них есть ошибка.

Как я могу отладить? Я могу сделать это, используя определенные инструменты и методы, но если мы сможем сделать это более доступным, то нам нужно двигаться именно в этом направлении.

Мы должны быть уверены, что чем больше мы абстрагируемся, тем полнее мы понимаем, почему нам следует это делать и почему нам не следует этого делать.

Не все нужно разбивать на такой маленький уровень.

Не все должно работать в Kubernetes. Люди говорят: «Куберенетес во всех областях!» За что? Келси Хайтауэр однажды написал в Твиттере, что лучшая часть понимания контейнеров и их будущего направления — это не понимание того, как их использовать, а понимание того, когда их не следует использовать.

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

Джессика : Не столько остановиться, сколько четко понять, когда это использовать, а когда нет. Все думают, что его нужно использовать всегда, потому что сейчас это хайповая тема.

Я призываю вас убедиться, что это именно то, что вам нужно.

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

Другой мой коллега, крупная фигура в сообществе Go, Рик Сент-Мартин, известен тем, что сказал: «Kubernetes — это не The Thing. Это то, что поможет нам достичь следующего, а затем это поможет нам перейти к следующему».

Это продолжается вечно.

Но мы сможем понять, как идти дальше, только если поймем, почему нам что-то нужно и почему нам это не нужно.

Евгений: Давайте на этом остановимся, потому что время интервью закончилось.

Спасибо за ответы!

Новая конференция стартует сегодня в 17:00. DevOops : на этот раз онлайн и на пять дней.

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

Теги: #Конференции #DevOps #интерфейсы #CLI #devoops
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.