Антон Косенко: «Работа SRE — это про нежность к инфраструктуре»
Кто такие SRE‑инженеры и чем они отличаются от системных администраторов или разработчиков? Рассказывает SRE‑инженер Антон Косенко.
Colowgee для Skillbox Media
Антон Косенко
об эксперте
SRE-инженер. Работал системным администратором в Медицинском университете им. И. И. Мечникова. Увлекается медиафилософией, в том числе философией компьютерных игр, Unix и Open Source.
Сейчас многие специалисты избегают термина «сисадмин». Потому что в классическом понимании системный администратор — это «универсальный солдат». Он одновременно администрирует все устройства в серверной, поддерживает работу ПО, настраивает сетевое оборудование и обеспечивает информационную безопасность. Часть этих обязанностей сегодня выполняют так называемые DevOps- или SRE-инженеры.
Я считаю, что профессия «системный администратор» уходит в прошлое. И в этом нет ничего плохого. Просто в России, Европе и даже в Америке не знают, как правильно назвать эту универсальную должность. Поэтому в той же Европе чаще всего ищут специалистов по конкретной технологии: Linux-администратора, cloud-инженера или инженера CI/CD.
Как найти первую работу
В 14 лет я стал увлекаться компьютерами — тогда же поставил себе первый Linux. С тех пор я стремился заставить систему всегда работать так, как мне нужно. И до сих пор радуюсь, когда программа или устройство, которые долго капризничали, запускаются и работают как часы.
Если у вас нет знаний и образования, войти в профессию можно через первую линию техподдержки. Обычно туда берут тех, кто знает, какой стороной нужно подключать память в разъём и чем материнская плата отличается от сетевой карты. Когда освоитесь на первой линии, можно брать более сложные задачи, чтобы получить повышение.
Когда я искал первую работу, то жил в небольшом городе. У нас публиковали вакансии в местной группе во «ВКонтакте». Там я и нашёл сисадминскую должность: парень увольнялся и искал кого-нибудь себе на замену.
Потом переехал в Питер и два года проработал во второй линии — решал пользовательские проблемы, которые требовали личного присутствия инженера. На второй линии работают толковые инженеры, но там сильная текучка: работёнка не пыльная, но и не самая интересная. Тех, кто сумел отличиться, часто забирали на должность системного администратора — там тоже постоянно не хватало рабочих рук.
Чем занимается системный администратор
Последние пять лет я работал сисадмином в Медицинском университете им. И. И. Мечникова. Там я поддерживал инфраструктуру: занимался DNS-именами публичных сайтов, дебажил системы мониторинга, администрировал образовательный портал, построенный на базе Moodle LMS, а также рабочие машины преподавателей, работал с базами данных и развёртывал виртуальные машины VMware.
В серверной часто приходилось работать руками. Например, если вышел из строя blade-сервер, вытаскивал его и заменял модули памяти. Я был настоящим фулстеком и занимался всем: от групповых политик на компьютере пользователя до кондиционеров и других устройств в серверной.
Несмотря на то, что я разбирался в разных системах, расти в профессии было довольно сложно. С одной стороны, я знал очень много, а с другой — мало. При этом в некоторые вещи погружался довольно глубоко. Например, чтобы развернуть Network File System, приходилось подробно читать RFC.
Каково быть сисадмином-бюджетником
На собеседованиях я столкнулся со стереотипом, что админы в бюджетных организациях — это ребята, которые носят мешковатые свитеры и только меняют картриджи в принтерах. Но это не так. У нас была очень крутая инфраструктура с интересными проектами и задачами. Всё строилось на RFC и best practice: от планировки серверной до настройки софта.
Например, в самом первом проекте я разворачивал систему тонких клиентов на базе Linux для пользователей со слабым железом. Нужно было собрать отказоустойчивое хранилище конфигурации и мониторинга. Для этого я создал веб-кластер и сделал репликацию базы данных. Также я кластеризировал образовательный портал, с помощью NFS, Memcached, HAProxy и написал собственную систему аудита пользовательских рабочих станций на PowerShell, PostgreSQL и стеке ELK.
Будучи админом в университете, можно писать скрипты, шаблоны для мониторинга и выкладывать код на GitHub. Но создать универсальный скрипт, который автоматизирует всё на свете и получит миллион звёзд на том же GitHub, конечно, не получится. В отличие от программистов, администраторы и SRE создают не продукт, а инфраструктуру, поэтому их работа часто остаётся незамеченной.
Сейчас для государственных учреждений ввели кучу ограничений по закупке оборудования и технологиям, которые можно использовать. Слышал, что планируют работать через единое «гособлако». Но где государство и где то самое «облако»?
Многие бюджетные организации не могут купить технику Cisco и Huawei. Но не потому, что она дорогая, а потому, что Cisco — это зарубежная компания. А ведь они постоянно совершенствуют технологии и выпускают новые интересные продукты.
Бюджетники обязаны соблюдать требования регулятора и использовать только отечественное оборудование. При этом частные компании, у которых нет таких ограничений, используют современный стек с зарубежными технологиями. А в государственных — железо заметно отстаёт.
Сейчас я работаю в крупной компании на должности SRE-инженера, и там совсем другой стек и масштабы. Это гораздо интереснее, чем работать в маленьком стартапе или бюджетной организации. Пожалуй, пик карьеры для SRE-инженера — спроектировать и собрать с нуля свой проект, придумать структуру, которая работает сама по себе при минимальных усилиях со стороны IT-команды.
Soft skills для SRE и сисадмина
Сисадмину и SRE-инженеру приходится много работать с людьми. Поэтому советую развивать мягкие навыки.
Стрессоустойчивость и максимальная честность
Честность — это когда вы не скрываете свои косяки. Надо принять простую истину: все ошибаются. Но если возникла проблема — лучше рассказать о ней тем, кого она может затронуть. Чаще всего крупные факапы случаются, когда люди обманывают и что-то недоговаривают.
Например, в прошлом я администрировал сеть из семи аптек с единой учётной системой. Когда она в первый раз упала, была довольно нервозная атмосфера. Рядом со мной сидел гендиректор и каждые 10 минут повторял, что компания несёт огромные финансовые потери. Я жутко стрессовал — но нужно уметь работать и в такой обстановке.
Готовность постоянно учиться
Нужно быстро осваивать новые технологии, потому что админский стек постоянно меняется. Это как в двух известных шутках года 2013-го: о том, что требуется разработчик с десятилетним опытом работы с Ansible, хотя она появилась только в 2012 году, и о том, что нужны программисты с пятилетним опытом в Kotlin и Rust.
Новые технологии появляются часто. Например, базы данных, системы управления конфигурацией и другие утилиты. Всегда нужно изучать, что в них интересного и как это можно использовать в работе.
Некоторые системные администраторы перестают развиваться и просто действуют по накатанной — так можно потерять интерес к профессии и выгореть. Поэтому советую всегда анализировать свою работу и искать процессы, которые можно автоматизировать.
Сейчас я дополнительно прохожу курсы по DevOps. Там я осваиваю теоретическую и практическую базу, которую дают в некоторых технических университетах. Параллельно изучаю новые технологии и автоматизирую рутину на работе.
Коммуникабельность
На предыдущей работе у меня буквально разрывался телефон — я мог говорить по пять часов в сутки. Ко мне постоянно обращались за доступами, кто-то даже пытался выбить их жалобами и мольбами. Такое лучше сразу пресекать.
Нужно уметь строить коммуникацию с коллегами, в том числе с другими инженерами. Если вы не можете объяснить, что произошло и как лучше решить проблему, работать будет практически невозможно.
Что должен знать SRE
Сейчас я работаю SRE-инженером. Разница между сисадмином и SRE в подходе к инфраструктуре.
Админ всегда находится внутри инфраструктуры. Он строит план аварийного восстановления, думает о том, чтобы система работала 24/7, и мыслит в единицах техники.
SRE-инженер всегда находится вне инфраструктуры. Она для него — как код, который всегда можно переписать и который не зависит от технических компонентов. SRE-инженер может развернуть сервис практически на любой технике и ПО — с его точки зрения, они не привязаны друг к другу. А для админа важно, с какой аппаратурой он будет работать, так как на уровне его обязанностей у каждой боевой единицы есть свои особенности.
Вот что нужно знать SRE-инженеру:
Unix и Linux. Машины с Linux сейчас распространены — особенно в государственных организациях. Есть и отечественные альтернативы, но так или иначе это линуксовые системы. Они требуют знания Linux и Unix хотя бы на уровне пользователя.
Solaris и FreeBSD. Некоторые компании до сих пор используют Solaris. Хорошая была система, но её эпоха закончилась, когда Oracle купила Sun Microsystems. FreeBSD тоже ещё популярен.
Bash и PowerShell. Если вы сисадмин, то всё равно нуждаетесь в автоматизации, а значит для *nix-систем пригодятся bash-скрипты. Windows и язык PowerShell тоже желательно знать на продвинутом уровне.
Языки программирования. Нужно знать хотя бы Python. А в идеале — ещё и Go, PowerShell и Bash. Но для сисадмина в бюджетной организации достаточно владеть только PowerShell и Bash.
Понимание работы устройств. Любому инженеру полезно знать, как работает техника в его парке. Нужно уметь диагностировать проблему по дампам — моментальным снимкам процесса во время его создания.
Коллеги-разработчики часто спрашивают, не хочу ли я уйти в программисты. Я отвечаю «нет», потому что у нас совершенно разные задачи и подходы. Задача SRE-инженера — создать и поддерживать стабильную и отказоустойчивую инфраструктуру. А программисты, даже инфраструктурные, заботятся о ней гораздо меньше — они думают о продукте и его оптимизации. Говорят, многие разработчики испытывают нежность к своему коду. Так вот, SRE-инженеры испытывают её к инфраструктуре.