Linux как рабочая ОС для разработчика

Операционная система - фундамент рабочего процесса.
Есть три основные ОС: Windows, macOS и Linux.

macOS прекрасна, но слишком закрыта и заключена в небольшом спектре премиумных устройств от единственного вендора, компании Apple. Тотальный vendor-lock приводит к нехватке плюрализма. Google, IBM, Samsung, Microsoft и др. профессионалы не могут предложить улучшения к macOS, освежить и доработать некоторые вещи, предоставить немного иной пользовательский опыт в любимой многими ОС и адаптировать ее к своим устройствам. Если бы macOS была открыта и дружелюбна разработчикам, она могла бы стать ОС #1, но замкнувшись в своей инфраструктуре и  единственном вендоре, она является лишь приятным экземпляром в премиальной нише. Построить на ней сеть рабочих мест задача посильная далеко не каждой компании и толку в этом в общем-то нет.

Windows - лидирующая ОС на десктопе, ее доля ~86%. Правда эта доля по большей части относится к домашним пользователям и рядовым офисным сотрудникам. В креативной среде преимущественно используют macOS, а изрядная доля разработчиков предпочитает Linux и далее я расскажу почему.

Если быть точным, то Linux - это ядро, а то, что мы привыкли называть ОС в мире Linux называется дистрибутивом. Их великое множество на любой вкус и цвет - от микроскопических сборок для IoT до полноценных настольных ОС “для домохозяек”.

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

Также если вам нужна ОС для собственных нужд, это скорее всего будет Linux:

  • Ваша Playstation 4 работает на дистрибутиве Linux.

  • Steam-Machine от Valve построена на базе Linux.

  • Электрокар Tesla со всеми своими автопилотами управляется Linux

  • Ваш домашний робот-пылесос и умный телевизор скорее всего тоже работают на Linux.

  • Кофейный автомат, который каждый день наливает вам чашку горячего кофе, тоже работает на Linux.

  • Все несколько миллиардов Android-устройств работают на Linux.

  • Спецэффекты ваших любимых фильмов с большой долей вероятности проходили рендеринг на огромных фермах под управлением Linux.

  • Практически вся модная облачная архитектура Amazon, Google, IBM, RedHat, Canonical и даже Microsoft работает на Linux.

Попробуйте организовать ферму из 200 000 серверов для своего стартапа или кластер для вашего предприятия или вычислительный комплекс для вашей лаборатории. В случае с Linux это просто инженерная задача. В случае с Windows и macOS еще и катастрофическая финансовая нагрузка, не беря во внимание сами по себе преимущества Linux.

Итак, мы выяснили важность Linux на серверах и специализированных ОС.

В нашей компании 90% разработчиков используют Linux. Но чем же она хороша для разработчика? Что это дает?

Всё дело в архитектуре и философии.

Общение с системой в  Linux происходит совсем не так как с другими ОС.

Стоит упомянуть, что Linux и macOS во многом родственны, обе они Unix-like системы и многие вещи работают в них одинаково, например, консольные утилиты. Но все же macOS далеко позади Linux в плане генезиса. Кто пробовал конфигурировать macOS, меня поймет. Я работаю одновременно со всеми тремя системами и достаточно хорошо их узнал.

Экосистема Linux это фактически тоже модный blockchain.

Множество серверов (репозиториев) поддерживает для вас связный реестр программного обеспечения, который на основе цифровых подписей и хэш-сумм контролирует хранимые в нем пакеты.

Мне не надо качать exe-файлы из интернета, не надо ходить по сайтам и файлообменникам, весь софт хранится в репозитории, все зависимости прописаны, все версии доступны. Практически всё устанавливается в пару коротких движений.

Например, мне нужен браузер Firefox, я пишу:

$ apt install firefox

apt - пакетный менеджер, я дословно говорю: "Менеджер пакетов, установи мне Firefox"

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

Сейчас в тренде голосовые помощники.

Вы говорите “ОК, Google, установи Firefox” и помощник делает это - wow-эффект!

В Linux это работает десятилетиями в виде общения с командной строкой.

Итак, первый пункт - удобная экосистема ПО.

Окей, скажите вы, но Linux - это система для гиков, ее сложно установить и сложно обслуживать.

Так было пару десятилетий назад. С тех пор прогресс не стоял на месте и сегодня установить систему вроде Ubuntu проще, чем Windows. Вы несколько раз нажимаете “Далее” и.. готово. Ваше оборудование, даже очень старое, скорее всего имеется в базе драйверов и вам не потребуется ничего устанавливать, всё подхватится автоматически. Никаких инсталляторов, никаких дисков с драйверами - вы просто пару раз жмете “далее” и получаете дружественную ОС с набором базовых приложений вроде офиса и браузера.

Второй пункт - доступность, простота установки и поддержка оборудования.

Третий пункт - безопасность. В Linux нет вирусов. Точнее не совсем так. Linux устроен так, что вирусам, попав в систему, в 95% случаев будет нечего делать благодаря прекрасной системе прав. Конечно человек может превзойти себя и здесь, настроив систему так, что дыры в безопасности будут катастрофичны, но таланты отдельных индивидов мы оставим за скобками.

Четвертый - производительность. Linux позволит выжать из вашего железа максимум. Во-первых, он сам по себе требует существенно меньше ресурсов, чем другие системы, а отдельные дистрибутивы могут уместиться и в 100 мб оперативной памяти. Во-вторых, с течением времени он не меняется. Как работал ваш компьютер сразу после установки ОС пару лет назад, так и сегодня он работает. Дело в реестре.

В Windows реестр представляет собой бинарное хранилище. Приложения и сама система постоянно записывают в него информацию, с течением времени он разъедается и цена чтения/записи всё больше возрастает. Вдобавок к этому реестр требует корректного открытия и закрытия, поэтому после аварийных завершений, например, при выключении света, Windows может больше не подняться.

В Linux все построено на файлах, всё есть файл. И это дает не только равномерность производительности, но и практически безграничную масштабируемость. Стоит отметить, что весь список ТОП-500 суперкомпьютеров мира работает под управлением Linux.

Пятый - инструменты разработки. Если вы Python-разработчик, просто откройте терминал и начинайте выполнять команды. Если вы разработчик на C, делайте то же самое, всё уже готово к исполнению и компиляции.

Если вы PHP-разработчик, установите клиент PHP и делайте то же самое.

То же самое для Java, Ruby, Go, Rust и т.д.

Все инструменты разработки буквально на кончиках ваших пальцев.

Вам нужна база данных? Просто попросите систему установить из репозитория MySQL, PostgreSQL, SQLite или другую БД - она скорее всего тоже есть в репозитории.

И вы можете начинать работу.

Нужен мощный поисковый движок? Ставим ElasticSearch или Sphinx.

Нужно поднять веб-сервер? Ставим Apache или Nginx (а можно и оба).

Практически все существующие инструменты разработки, кроме самых закрытых vendor-lock решений, доступны в репозиториях Linux в пару движений.

Грань между вашей рабочей машиной и промышленным сервером очень мала.

Шестой - автоматизация. Linux изначально заточен под нее. Всё, что вы можете сделать “руками”, вы можете поручить сценарию, система сообщения между программами и инструкциями прекрасно продумана. И это так же просто как попросить репозиторий установить для вас программу. Достаточно лишь немного освоиться и система начинает служить вам.

Это очень важно! Не вы обслуживаете систему, а система обслуживает вас.

Седьмой - виртуализация и контейнеризация. Это то, что закопало всех конкурентов Linux вроде FreeBSD и OpenSolaris. Linux выдал резкий старт в этом направлении и за ним уже сложно было успеть. Пытались делать Jails и Zones, но кроме собственной узкой ниши этим инструментам ничего занять не удалось и на серверах Linux стал владычествовать практически единолично. А, как мы уже говорили, что доступно северу - доступно и десктопу.

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

И здесь на сцену выходит такой первоклассный инструмент как Docker.

Это плоть от плоти Linux-решение и все другие ОС используют слой виртуализации для работы с Docker, в то время как сам Linux работает с контейнерами нативно, без потерь производительности. Эта технология произвела по-настоящему бум в разработке. Работая с Linux, вы используете мощь контейнеризации в полном объеме и это потрясающе! Мы обязательно расскажем подробно об опыте использования контейнеров в наших производственных процессах.

Восьмой - сеть. Linux создан в сети и для сети. Точнее не так - он прекрасно будет работает и без сети, но с ней вы по настоящему оцените его потенциал. И это не пустые слова! С сетевой подсистемой Linux могут поспорить только BSD-системы, это почти единственный участок, где они могут конкурировать в 2018, но подсистемы Linux развиваются такими силами и таким темпом, что говорить об этом всерьез не имеет смысла. Речь о стабильности и скорости передачи/приема пакетов по сети. И если в Windows кажется перестали даже пытаться что-то делать в этом направлении с изрядным отставанием, то борьба Linux и BSD за единички в тестах на этом направлении довольно интересное противостояние в узких кругах.

Девятый - оно же для многих и первое - доступность. Linux бесплатен и открыт. Лицензия GPL (General Public License) позволяет использовать и модифицировать Linux как угодно даже в коммерческих целях в ответ на открытие своих исходников. Многие подвергают эту лицензию критике как слишком консервативную и сдерживающую в противовес той же MIT, но нельзя отрицать, что она стала мощным драйвером развития экосистемы Linux на принципе “Используешь - делись!”.

Развернуть десяток-другой рабочих мест может стать серьезным препятствием для стартапа или студенческого кружка или независимой лаборатории или инди-разработчика из небогатой семьи. Linux позволяет использовать современную развитую операционную систему на легальной основе.

Среди платиновых партнеров Linux Foundation (свыше 500 000 $ в год) такие гиганты как Google, Cisco, HP, IBM, Microsoft, Intel, Oracle, Samsung и другие.

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

Веб браузеры:

Облачные утилиты:

IDE \ IDLE:

Двухпанельные менеджеры:

RDP и VPN клиенты:

Общение:

Графика:

Виртуализация:

Офис:

С недавних пор и 1С:Предприятие имеет полноценную Linux-версию.

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

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


Алексей Андросов
Руководитель отдела веб-разработки