Интервью с IT-директором JetBrains Сергеем Жуковым

Сергей Жуков в IT-индустрии с 1990 г. Работал главным системным администратором в компании AMI, которая выполняла заказы для игровых компаний Sierra, Blizzard, Papyrus, Impressions Games. В 2002 г. стал первым системным администратором компании JetBrains. Вся существующая IT-инфраструктура JetBrains была создана при его участии и силами созданного им IT-отдела.

Sergey Zhukov article 508

LinuxFormat: Расскажите о том, чем вы занимаетесь в JetBrains.
Сергей Жуков: Я работаю в компании практически с самого ее основания. Я был первым системным администратором JetBrains и потому успел позаниматься абсолютно всем, чем приходится заниматься системному администратору в IT-компании. В данный момент я — IT-директор компании JetBrains, руковожу IT-отделом из 7 человек, включая меня. Мы внедряем различные сервисы и системы, необходимые для работы компании, а также обеспечиваем бесперебойную работу нашей компании с точки зрения IT. Практически все публичные серверы и сервисы, которыми представлена наша компания в Internet, прошли через наши руки и находятся на нашем обслуживании. Также мы обеспечиваем IT-инфраструктуру наших офисов: LAN, Wi-Fi, системы виртуализации, телефония и видеоконференции. Разумеется, подготовка рабочих мест и поддержка наших внутренних пользователей — тоже наша работа.
LXF: Как вы познакомились с Linux, какие дистрибутивы использовали?
СЖ: Мое знакомство с Linux началось примерно в 1993–94 году, когда основной OS на доступных компьютерах была MS DOS. Мой друг принес пачку дискет 5,25” и сказал: «Это Linux, давай посмотрим, что это». Не скажу, что система мне сразу понравилась. В ней было непонятно все. Начиная с другого разделителя каталогов ‘/’ вместо привычного тогда ‘\’ и заканчивая невообразимыми требованиями к железу: не менее i386 и 2 МБ памяти. А если вы хотели пользоваться графической оболочкой, то было нужно 4 МБ памяти! Это мегабайты, не гигабайты, которые используются сегодня. Напомню, что в то время самым популярным компьютером был IBM PC 8086 с памятью 640 КБ. Конечно, все это осложняло изучение и использование Linux, т. к. было не ясно, зачем использовать непонятную, сложную и требовательную к железу систему Linux, когда есть привычный MS DOS и набирающий популярность Windows. Время шло, компьютеры становились все мощнее и дешевле, а коммерческие OS типа Windows все сложнее и дороже. Поэтому во многих случаях было удобно и дешево использовать Linux в качестве серверной OS: она была и остается бесплатной — это был аргумент против Windows NT, а ее надежность была явно выше, чем у Windows 9x. А когда в индустрию Linux пришла компания IBM, то стало ясно, что Linux — это хорошее решение для компании любого уровня. Именно в этот момент и началось победное шествие Linux по миру. Дистрибутивы я использовал разные, но исторически так сложилось, что начинал я с RedHat Linux, поэтому мне удобнее пользоваться дистрибутивами, построенными на его основе: RHEL, CentOS, Amazon Linux. Но я считаю, что тип дистрибутива не имеет значения. Гораздо более важным является его продолжительная поддержка со стороны майнтейнеров, если вы, конечно, не предпочитаете все программы и их новые версии собирать самостоятельно из исходников.
LXF: С какими технологиями в Linux (языки, среды разработки, прочее специализированное ПО) удалось поработать?
СЖ: В нашей компании 90–95% серверных OS — это Linux. Поэтому мы используем большинство технологий, которые нужны современным компаниям. В первую очередь, у Linux хороший сетевой стек; соответственно, большая часть сетевой инфраструктуры построена именно на Linux: VPN, маршрутизация, DHCP/DNS (не везде). Практически все серверы, где развернуты наши публичные, да и внутренние сервисы, тоже работают на Linux. Это удобно в первую очередь из-за простоты обслуживания таких серверов, а также в Linux проще видеть проблемы с производительностью приложений — видеть, чего приложению не хватает: процессора, памяти или скорости диска. Из современных технологий мне сейчас очень нравится Docker. Он очень прост, фактически это надстройка над возможностями Linux-ядра, но зато он устраняет зависимость приложения от конкретного дистрибутива — вы можете запускать на одной OS несколько программ, рассчитанных на разные дистрибутивы — и полностью разделяет OS с приложениями. Теперь вы можете обновлять OS независимо от приложения, практически не беспокоясь о том, что приложение станет несовместимо с OS. То же касается и приложения — вы обновляете контейнер с приложением, и вас не интересует, какая же OS запускает этот контейнер. Остается только зависимость от ядра Linux, но прикладных приложений, которым очень важна именно версия ядра, немного.
LXF: Какие дистрибутивы операционной системы Linux предпочитаете? Почему? А с какими работали?
СЖ: До недавнего времени мы использовали RedHat, CentOS и Amazon Linux, просто так сложилось исторически и не было никакой причины менять их на какие-то другие дистрибутивы. Сейчас, ориентируясь на Docker, мы используем CoreOS как максимально чистую систему, на которой стабильно работает Docker. А вот внутри Docker-контейнеров мы опять-таки используем CentOS, т.к. она просто более привычна. Контейнеры, которые мы используем в работе, вы можете найти на GitHub. Обратите внимание, что почти все они построены на основе CentOS.

О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ

«Практически вся инфраструктура JetBrains работает на Linux: дешевле и удобнее».

LXF: Расскажите о первых крупных проектах на Linux. Какие из них были запущены в JetBrains?

СЖ: Практически вся инфраструктура JetBrains работает на Linux. Большинство наших сервисов написаны на Java, для которой все равно, на какой OS работать. Но Linux дешевле и удобнее в обслуживании. Сейчас на сцену выходит Docker, который также работает только на Linux. Если говорить более подробно, то можно взять любой публичный сервис JetBrains, и это будет Linux:

  • www.jetbrains.com: Linux, Nginx, Tomcat, PHP, MySQL.
  • blog.jetbrains.com: Linux, Docker, Nginx, PHP, MySQL.
  • myjetbrains.com: Linux, Nginx, Java, YouTrack, HUB.

Каждый из этих проектов заслуживает отдельного и большого рассказа. Например, blog.jetbrains.com состоит из нескольких серверов, на каждом из которых работают контейнеры с Nginx, PHP и системой синхронизации данных между серверами.

ОБ ОРГАНИЗАЦИИ СЕРВИСОВ

«Мы стараемся разместить все наши сервисы в виде виртуальной инфраструктуры».

LXF: Расскажите о том, что представляет собой процесс хранения и обработки данных в JetBrains. Как организовано резервное копирование? В чем специфика этих процессов в зависимости от реализуемых проектов? Не могли бы привести интересные примеры?
СЖ: Наши данные можно разделить на несколько категорий:

  1. Данные, которые используются при разработке продуктов. Это в первую очередь различные системы контроля версий. Мы прошли длинный путь по практически всем этим системам и использовали большинство из них, начиная с MS Visual Source Safe и StarTeam, а заканчивая Perforce, Git, SVN и HG. У каждой системы есть свои особенности, а регулярный бэкап нужно было делать для каждой из этих систем.

    Также к данным для разработки относятся системы типа баг-трекера и Wiki. Для баг-трекера мы используем свой собственный продукт YouTrack, и, для примера, его база уже занимает около 100 ГБ.

  2. Другой тип данных — это различная статистика, которую мы собираем с наших публичных серверов. В основном это access-логи, которые обрабатывает отдел статистики и превращает в информацию, удобную для восприятия обычными людьми. Еще мы используем различные сторонние сервисы для сбора и обработки данных из наших сервисов. К примеру, это NewRelic и Logentries.
  3. И последний тип данных — это данные, необходимые для работы самой компании JetBrains: система продаж, бухгалтерия, Active Directory, IP-телефония и прочие многочисленные системы, которые делают возможным работу любой компании.

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

LXF: Вы упомянули о Docker, а тестировали ли его «под себя» в JetBrains? Планируете ли его внедрение? В каком объеме?
СЖ: Docker… Да, в течение последнего года мы в JetBrains используем Docker для различных задач. С точки зрения IT-администрирования мы разворачиваем новые сервисы с использованием Docker’a. Ведь невозможно понять, плоха или хороша новая технология, если не попробовать ее для решения реальных задач. Например, блоги нашей компании (blog.jetbrains.com) работают внутри нескольких Docker-контейнеров. Часть системы продаж наших продуктов также работает внутри Docker-контейнеров.

Операционную систему для Docker мы используем CoreOS, т.к. она показала себя гораздо лучше, чем OС Linux общего назначения (CentOS 6, Amazon Linux).

Разработчики в JetBrains также начинают использовать Docker для тестирования и сборки своих продуктов, т.к. Docker предоставляет им совершенно чистую OS для сборки и запуска продукта. По результатам использования Docker’а я могу сказать, что никаких претензий к самому Docker’у у меня нет. Он делает именно то, о чем заявляют его авторы: строит образы, запускает изолированные контейнеры и предоставляет средства распространения образов (Docker Registry). Причем делает это стабильно и предсказуемо. Претензии есть к подсистемам хранения у Docker: devicemapper в CentOS/Amazon Linux и btrfs в старых версиях CoreOS, но здесь это скорее проблемы не Docker’a, а самих хостовых OS. В overlayfs на новом CoreOS мы проблем пока не обнаружили.

LXF: Какие облачные сервисы используются в JetBrains? Для каких целей (разработка, управление, администрирование и т. п.)?
СЖ: Облачные сервисы… В JetBrains мы используем Amazon AWS для размещения наших публичных IT-ресурсов, т.е. в первую очередь для хостинга. Мы начали использовать AWS EC2 и S3, когда они только появились, и продолжаем использовать их до сих пор. За это время AWS добавил большое количество сервисов, частью которых воспользовались и мы. Например RDS, CloudFront.

Наши разработчики используют в первую очередь наше внутреннее облако на основе vSphere, т.к. оно находится максимально близко к ним. Также наши разработчики серверных продуктов используют Amazon AWS и Windows Azure для лучшей интеграции наших серверных продуктов с лидерами облачной индустрии. AWS — как крупнейший облачный провайдер, интеграцию с которым должны поддерживать все серверные продукты, а Windows Azure предоставляет очень гибкие возможности запуска приложений на Windows, что нам необходимо для тестирования наших Windows-продуктов.

Опубликовано в LinuxFormat.