Блог Слёрм

Почему Golang – лучшее решение для оптимизации рабочих процессов?

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


Чаще всего для разработки скриптов используют 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, поэтому первыми обновления выпускают именно на него.
Карьера в IT Kubernetes Golang