Было время, когда мир информационных технологий делился на ряд четко очерченных областей, в каждой из которых господствовала своя операционная система: Linux, Windows, OS X, Solaris, разные версии BSD и т. д. Это время прошло. Сегодня, с появлением виртуализации, контейнеров, «облака» и других новаторских разработок, технические границы между различными операционными системами и программными средствами, которые выполняются под их управлением, стираются.
И в этой связи возникает вопрос: должны ли специалисты в сфере информационных технологий по-прежнему специализироваться на той или иной операционной системе? Или их квалификацию следует считать, так сказать, универсальной? Давайте рассмотрим эти вопросы в контексте современного мира ИТ, шагнувшего в «послеоперационную» эпоху.
Если десять с небольшим лет назад вы занимались управлением серверами или рабочими станциями, то вы, вероятно, специализировались на одном типе операционных систем. Это было логично: набор навыков, необходимых для администрирования, скажем, системы Windows Server 2003, разительно отличался от тех, которые требуются для управления Red Hat Enterprise Linux (RHEL).
И дело не только в том, что в каждой системе реализованы абсолютно не похожие на другие файловая система, система контроля доступа, средства управления программным обеспечением и сетевой топологией. Подавляющее большинство программ, устанавливаемых на одной системе, не могут выполняться на другой. В системе Windows, например, вам придется иметь дело с веб-серверами IIS, тогда как в RHEL вы, скорее всего, будете работать с Apache, если вам потребуется развертывать веб-сайты.
Кроме того, с разными системами ассоциировались разные языки программирования. Если вы писали приложения для Windows, то вы, вероятно, работали с. NET. Разработчики Linux, скорее всего, специализировались на языках PHP, Python или Си. И хотя эти языки были кросс-платформенными, каждый из них, как правило, был более популярен среди специалистов по какой-либо одной операционной системе.
Аналогичные различия имели место вне зависимости от того, какие операционные системы сопоставлялись друг с другом. Самые горячие споры о том, какая система лучше, шли вокруг Windows и Linux, но те, кто имел дело с одной из этих систем, редко хорошо знали другие, такие как OS X или Solaris. А между тем они, хотя и относятся к числу Unix-подобных систем, имеют относительно мало общего с Linux в том, что касается диспетчеров пакетов, средств системной настройки и т. д.
А теперь перенесемся в наше время, когда вследствие ряда технологических перемен, начавшихся примерно десять лет назад, различия между операционными системами стали намного менее важными с точки зрения специалистов по информационным технологиям.
Самым очевидным нововведением стало широкое распространение виртуализации. Средства виртуализации стирают грань между операционными системами, поскольку с их появлением мы научились не только размещать одну операционную систему поверх другой, но и с легкостью распространять готовые образы операционных систем. Когда вы можете загрузить и запустить образ предварительно настроенного виртуального диска с помощью VMware, KVM или иного гипервизора, уже не так важно знать все тонкости операционной системы, с которой вы работаете, ведь вам уже не приходится вручную выполнять значительную часть операций по настройке.
Точно так же очевидно, что значение операционных систем уменьшилось благодаря распространению практики «облачной» обработки данных. Работая в «облаке», оператор может несколькими щелчками мышью запустить виртуальный сервер, функционирующий под управлением практически любой версии той или иной распространенной операционной системы. Кроме того, часто возникает возможность установить любое необходимое приложение с помощью готовых сценариев. Наконец, с появлением новейших «облачных» технологий, таких как внесерверная обработка данных (serverless computing), операционная система вообще исчезает — по крайней мере, с точки зрения пользователя.
И в самом деле, сегодня иметь опыт и знания, относящиеся к определенному типу «облачных» платформ, таких как AWS, Azure или Rackspace, пожалуй, важнее, чем быть экспертом по той или иной операционной системе.
С появлением контейнеров Docker вопрос о значимости операционных систем несколько усложняется. Изначально они выполнялись только в среде Linux. В этом, собственно, состояло ключевое различие между контейнерами Docker и традиционными средствами виртуализации. Однако ныне это различие не столь важно, так как после реализации проекта Docker Moby и выпуска средства LinuxKit мы получили возможность запускать помещенное в контейнер приложение под управлением любого типа операционной системы. Кроме того, сегодня Docker располагает собственными средствами для работы под управлением определенных версий Windows.
Мобильные вычисления, рабочие станции и безопасность
Таким образом, в целом значение специализации на одном типе операционных систем сегодня имеет гораздо меньшее значение, нежели десять лет назад. С точки зрения специалиста по информационным технологиям, разбираться в тонкостях управления популярными «облачными» платформами и средствами виртуализации полезнее, чем знать, как компилировать ядро Linux из исходного кода или восстанавливать дефектную файловую систему NTFS.
С другой стороны, все еще существуют причины изучать ту или иную конкретную операционную систему. Одна из них состоит в том, что различия между платформами по-прежнему играют важную роль в мире мобильных вычислений. Если вы разработчик мобильных приложений или управляете мобильным программным обеспечением, вам известно, что различия между iOS и Android по-прежнему разительны. Эти операционные системы спроектированы на разных принципах, реализованные в них средства управления кардинально отличаются друг от друга, а языки программирования, используемые при работе с каждой системой, в большинстве случаев не совпадают.
Различия между операционными системами по сей день важны и для пользователей настольных компьютеров. Приверженцам Mac непросто признать это, но факт остается фактом: рабочие станции в большинстве компаний по-прежнему функционируют под управлением системы Windows. Если ваша деятельность связана с администрированием рабочих станций, вам, вероятно, придется узнать о Windows гораздо больше, чем специалисту, который имеет дело с серверами или «облачными» приложениями.
Наконец, дополнительные знания, касающиеся того или иного типа операционных систем, будут весьма полезны, если важную часть вашей работы составляет обеспечение информационной безопасности. Многие нарушения в этой сфере совершаются в среде конкретной операционной системы. Разбираться в нюансах различных операционных систем, в том, как они работают с модулями коррекции для системы безопасности, какими инструментами располагают для уменьшения риска атак с переполнением буфера, как можно заблокировать контроль доступа для пользователей и файловых систем и т. д., вы и сегодня должны обязательно, если ваша задача состоит в том, чтобы защищать пользователей от кибератак.
Таким образом, для большинства из нас квалификация эксперта по той или иной операционной системе уже не столь важна. Но на некоторых участках работы ИТ-специалистов она просто необходима. Если вы хотите добиться успеха на одном из таких участков, найдите время и изучите все тонкости соответствующих операционных систем. Это может стать для вас большим подспорьем.