Скрипты автоматизации. Что это и с чем их едят?
Большинство из читающих этот текст, безусловно, знает о скриптах. С их помощью автоматизируют повседневные задачи, настройку инфраструктуры, разворачивают софт, накатывают матрицы, работают с метриками… Скрипты облегчают жизнь и дают возможность не выполнять одну и ту же рутинную задачу каждый раз, когда она нужна. Штука, в общем-то, классная.
Чаще всего для разработки скриптов используют Bash, Python или Perl. У этих решений, безусловно, есть как свои преимущества, так и свои недостатки. Разбираем по порядку:
Bash
Bash – самый распространенный инструмент для автоматизации задач. У него довольно-таки много плюсов: с его помощью удобно работать с консольными программами, он предназначен именно для вызова системных приложений. Bash, сам по себе, не является языком программирования, и поэтому с ним легко начинать работу тем, кто уже знаком с Linux – им не потребуется никаких специальных навыков и инструментов. Bash также идеально подходит для небольших задач по автоматизации. На этом, правда, бочка меда заканчивается.
Для новичков Linux изучение Bash будет сложным – он тяжело читается, не интуитивен и на нем легко допустить дорогостоящую ошибку. Он медленнее, чем аналоги, часто падает и сильно зависит от используемой системы. Bash также не подойдет для решения более комплексных задач – в нем просто не хватит инструментов для настройки.
Perl
Perl, в отличие от Bash – полноценный язык программирования. С его помощью можно не только написать скрипт, но и, например, разработать приложение. Среди преимуществ Perl – большое количество инструментов работы с текстом, удобная настройка обработки текстовых данных любого вида и их деплоя. Он лучше остальных, после Bash, подойдет для вызова системных приложений. Также, несмотря на весьма небольшое комьюнити Perl, его часто используют компании, которые работают с легаси-кодом, доставшимся по наследству от предыдущих разработчиков.
Главный минус Perl – его многословность. Из-за этого, этот язык программирования довольно сложный в освоении и контр интуитивный - у начинающих работать с ним может рябить в глазах от количества объемных конструкций. В целом, Perl, как и Bash, довольно медленный, его тяжело поддерживать, и он требует интерпретаторов и IDE. Perl морально и технически устарел – несмотря на то, что он был любимчиком разработчиков в 2000 е годы, сегодня его изучение не становится приоритетом у новичков. Компания, которая ищет специалистов Perl, рискует тем, что их команда будет полностью состоять из специалистов возрастом 50+.
Python
Большинство компаний, которые сегодня нанимают DevOps, работают именно с Python. У питона много преимуществ - это альтернатива PhP, также полноценный и мультифункциональный язык программирования, у которого множество сценариев использования – от разработки скриптов до написания сайтов и приложений. Он невероятно распространен - любой, кто начинает работать с Python, найдет поддержку и получит ответы на все вопросы благодаря активному комьюнити.
Но и недостатков у Python хватает. Чтобы начать с ним работать, нужно установить множество дополнительных поддерживающих библиотек и настроить их так, чтобы они не мешали друг другу. Также, на первый взгляд простой и понятный в изучении, Python требует особых навыков для написания и поддержки элегантного кода, на освоение которых уйдет много времени. В нем легко запутаться и допустить неприятные ошибки - например, присвоить двум разным переменным одну и ту же цифру.
Другая неизбежная боль Python – сегодня у него существуют и поддерживаются сразу две ветки. Некоторые скрипты работают на обеих, но есть и такие, которым обязательно требуется новейшая версия. Python, безусловно, быстрее, чем Bash и Perl, но все равно проигрывает по скорости компилируемым языкам и Java.
Почему будущее скриптов за Golang?
За последние несколько лет механика и инфраструктура использования скриптов претерпела большие изменения. Если раньше разработчикам приходилось отдельно разворачивать, настраивать и мониторить сервера для каждого сценария использования скриптов, то сегодня все происходит под одной крышей. Многие разработчики и программисты перешли на использование облачных сервисов и докеров. Появился Kubernetes, железо которого мониторится отдельно. Внутри Kubernetes находятся докер контейнеры, в которых мы запускаем различные сервисы. Основная проблема таких контейнеров -– они работают на ограниченном количестве ресурсов, а значит требуют особой регулировки и распределения нагрузки.
Мониторинг, в идеале, не должен использовать больше ресурсов, чем приложение, однако при использовании стандартных скриптов автоматизации именно так и может произойти. Это повышает стоимость обслуживания, замедляет работу и сильно усложняет поддержку.
Поэтому, вместе с распространением докер контейнеров, появились и современные способы решения подобных проблем. Одно из таких решений – использование языка Golang для работы с новыми скриптами для Kubernetes.
Go максимально прост в освоении – он состоит всего из двадцати ключевых слов, не использует сложные концепции и позволяет полностью контролировать весь процесс разработки напрямую, что также упрощает процесс отлаживания и дебага. С ним легко начать работать – не нужно устанавливать никакие дополнительные библиотеки и настраивать их взаимодействие. В Go есть множество нативных инструментов, которые помогут вам дебажить, мониторить и профилировать программу, что отлично подойдет современным разработчикам и девопсам – благодаря строгой типизации и оптимизированной работе с памятью, Go более производительный и отказоустойчивый, чем упомянутые выше Bash, Python и Perl. Поэтому он отлично подходит для работы с облачными решениями.
На Go написано уже довольно много софта – в основном это инструменты для DevOps от Google, среди них – сам Kubernetes, Prometheus, докер Helm, и Cockroach DB, а еще роутеры и веб-серверы.
У Go есть и свои проблемы – из-за небольшого количества ключевых слов он стал довольно многословным (при этом остался хорошо читаемым). В нем есть множество ненужных разработчикам функций, и он требует компилятора, который, правда, легко настроить под любую систему.
Как Golang может облегчить жизнь инженерам и разработчикам?
Самое главное -– Go позволяет безопасно и с минимальными усилиями писать максимально производительные скрипты -– он чистый, лаконичный, прозрачный, интуитивно понятный и сразу подсвечивает ошибки. С его помощью проще распараллелить несколько задач, и он также дает возможность обеспечить нативную работу с Kubernetes API и поддерживать инфраструктуру на самом актуальном уровне – Kubernetes написан на Golang, поэтому первыми обновления выпускают именно на него.
Как мы можем помочь в изучении Golang?
Golang прост в изучении, однако требует структурированного и внимательного подхода. Освоить его самому возможно, но на это уйдет больше времени, чем хотелось бы. Поэтому мы в Слёрме запускаем новый курс «Go для инженеров», который призван помочь всем желающим начать успешно работать с Golang.
На курсе два спикера: Всеволод Севостьянов, Tech Lead в немецком проекте vene.io, архитектор и разработчик решений для обеспечения очень высокой пропускной способности и Тигран Ханагян – Team Lead и Backend Developer в Citymobil, архитектор высоконагруженных сервисов на Go с нуля.
«Go для инженеров» подойдет тем, кто стремится автоматизировать повседневные и надоевшие рабочие процессы – администраторам, разработчикам, лидам команд, и многим другим. Для успешного прохождения необходимо лишь владеть базовыми навыками администрирования Linux, знать и понимать основные конструкции и подходы программирования и иметь опыт работы с git.
Большинство из читающих этот текст, безусловно, знает о скриптах. С их помощью автоматизируют повседневные задачи, настройку инфраструктуры, разворачивают софт, накатывают матрицы, работают с метриками… Скрипты облегчают жизнь и дают возможность не выполнять одну и ту же рутинную задачу каждый раз, когда она нужна. Штука, в общем-то, классная.
Чаще всего для разработки скриптов используют Bash, Python или Perl. У этих решений, безусловно, есть как свои преимущества, так и свои недостатки. Разбираем по порядку:
Bash
Bash – самый распространенный инструмент для автоматизации задач. У него довольно-таки много плюсов: с его помощью удобно работать с консольными программами, он предназначен именно для вызова системных приложений. Bash, сам по себе, не является языком программирования, и поэтому с ним легко начинать работу тем, кто уже знаком с Linux – им не потребуется никаких специальных навыков и инструментов. Bash также идеально подходит для небольших задач по автоматизации. На этом, правда, бочка меда заканчивается.
Для новичков Linux изучение Bash будет сложным – он тяжело читается, не интуитивен и на нем легко допустить дорогостоящую ошибку. Он медленнее, чем аналоги, часто падает и сильно зависит от используемой системы. Bash также не подойдет для решения более комплексных задач – в нем просто не хватит инструментов для настройки.
Perl
Perl, в отличие от Bash – полноценный язык программирования. С его помощью можно не только написать скрипт, но и, например, разработать приложение. Среди преимуществ Perl – большое количество инструментов работы с текстом, удобная настройка обработки текстовых данных любого вида и их деплоя. Он лучше остальных, после Bash, подойдет для вызова системных приложений. Также, несмотря на весьма небольшое комьюнити Perl, его часто используют компании, которые работают с легаси-кодом, доставшимся по наследству от предыдущих разработчиков.
Главный минус Perl – его многословность. Из-за этого, этот язык программирования довольно сложный в освоении и контр интуитивный - у начинающих работать с ним может рябить в глазах от количества объемных конструкций. В целом, Perl, как и Bash, довольно медленный, его тяжело поддерживать, и он требует интерпретаторов и IDE. Perl морально и технически устарел – несмотря на то, что он был любимчиком разработчиков в 2000 е годы, сегодня его изучение не становится приоритетом у новичков. Компания, которая ищет специалистов Perl, рискует тем, что их команда будет полностью состоять из специалистов возрастом 50+.
Python
Большинство компаний, которые сегодня нанимают DevOps, работают именно с Python. У питона много преимуществ - это альтернатива PhP, также полноценный и мультифункциональный язык программирования, у которого множество сценариев использования – от разработки скриптов до написания сайтов и приложений. Он невероятно распространен - любой, кто начинает работать с Python, найдет поддержку и получит ответы на все вопросы благодаря активному комьюнити.
Но и недостатков у Python хватает. Чтобы начать с ним работать, нужно установить множество дополнительных поддерживающих библиотек и настроить их так, чтобы они не мешали друг другу. Также, на первый взгляд простой и понятный в изучении, Python требует особых навыков для написания и поддержки элегантного кода, на освоение которых уйдет много времени. В нем легко запутаться и допустить неприятные ошибки - например, присвоить двум разным переменным одну и ту же цифру.
Другая неизбежная боль Python – сегодня у него существуют и поддерживаются сразу две ветки. Некоторые скрипты работают на обеих, но есть и такие, которым обязательно требуется новейшая версия. Python, безусловно, быстрее, чем Bash и Perl, но все равно проигрывает по скорости компилируемым языкам и Java.
Почему будущее скриптов за Golang?
За последние несколько лет механика и инфраструктура использования скриптов претерпела большие изменения. Если раньше разработчикам приходилось отдельно разворачивать, настраивать и мониторить сервера для каждого сценария использования скриптов, то сегодня все происходит под одной крышей. Многие разработчики и программисты перешли на использование облачных сервисов и докеров. Появился Kubernetes, железо которого мониторится отдельно. Внутри Kubernetes находятся докер контейнеры, в которых мы запускаем различные сервисы. Основная проблема таких контейнеров -– они работают на ограниченном количестве ресурсов, а значит требуют особой регулировки и распределения нагрузки.
Мониторинг, в идеале, не должен использовать больше ресурсов, чем приложение, однако при использовании стандартных скриптов автоматизации именно так и может произойти. Это повышает стоимость обслуживания, замедляет работу и сильно усложняет поддержку.
Поэтому, вместе с распространением докер контейнеров, появились и современные способы решения подобных проблем. Одно из таких решений – использование языка Golang для работы с новыми скриптами для Kubernetes.
Go максимально прост в освоении – он состоит всего из двадцати ключевых слов, не использует сложные концепции и позволяет полностью контролировать весь процесс разработки напрямую, что также упрощает процесс отлаживания и дебага. С ним легко начать работать – не нужно устанавливать никакие дополнительные библиотеки и настраивать их взаимодействие. В Go есть множество нативных инструментов, которые помогут вам дебажить, мониторить и профилировать программу, что отлично подойдет современным разработчикам и девопсам – благодаря строгой типизации и оптимизированной работе с памятью, Go более производительный и отказоустойчивый, чем упомянутые выше Bash, Python и Perl. Поэтому он отлично подходит для работы с облачными решениями.
На Go написано уже довольно много софта – в основном это инструменты для DevOps от Google, среди них – сам Kubernetes, Prometheus, докер Helm, и Cockroach DB, а еще роутеры и веб-серверы.
У Go есть и свои проблемы – из-за небольшого количества ключевых слов он стал довольно многословным (при этом остался хорошо читаемым). В нем есть множество ненужных разработчикам функций, и он требует компилятора, который, правда, легко настроить под любую систему.
Как Golang может облегчить жизнь инженерам и разработчикам?
Самое главное -– Go позволяет безопасно и с минимальными усилиями писать максимально производительные скрипты -– он чистый, лаконичный, прозрачный, интуитивно понятный и сразу подсвечивает ошибки. С его помощью проще распараллелить несколько задач, и он также дает возможность обеспечить нативную работу с Kubernetes API и поддерживать инфраструктуру на самом актуальном уровне – Kubernetes написан на Golang, поэтому первыми обновления выпускают именно на него.
Как мы можем помочь в изучении Golang?
Golang прост в изучении, однако требует структурированного и внимательного подхода. Освоить его самому возможно, но на это уйдет больше времени, чем хотелось бы. Поэтому мы в Слёрме запускаем новый курс «Go для инженеров», который призван помочь всем желающим начать успешно работать с Golang.
На курсе два спикера: Всеволод Севостьянов, Tech Lead в немецком проекте vene.io, архитектор и разработчик решений для обеспечения очень высокой пропускной способности и Тигран Ханагян – Team Lead и Backend Developer в Citymobil, архитектор высоконагруженных сервисов на Go с нуля.
«Go для инженеров» подойдет тем, кто стремится автоматизировать повседневные и надоевшие рабочие процессы – администраторам, разработчикам, лидам команд, и многим другим. Для успешного прохождения необходимо лишь владеть базовыми навыками администрирования Linux, знать и понимать основные конструкции и подходы программирования и иметь опыт работы с git.
Почему Golang – лучшее решение для оптимизации рабочих процессов?
Скрипты автоматизации. Что это и с чем их едят? Большинство из читающих этот текст, безусловно, знает о скриптах. С их помощью автоматизируют повседневные задачи, настройку инфраструктуры,...
habr.com