Играешь или играл когда-то в Dota? Тогда я уверен, что ты сможешь научиться DevOps и стать в нём одним из лучших. Включай внимание и вникай, если ещё не вкатился в IT, либо готовься опровергать мой спич.

Я, как, наверное, и большинство людей, своё знакомство с компьютерами начал через игры. Игры учат нас систематическому мышлению, определённым механикам. Каждая игра включает в себя обучение, например, как двигаться, как драться и, собственно, проходить уровни. В уровнях систематически встречаются маленькие проблемы, т. е. лёгкие враги, которых ты пачками бьёшь, если, конечно же, разобрался в управлении. Под конец уровня ты, скорее всего, встретишься с боссом этого уровня, которого будет достаточно трудно победить, и тебе непременно нужно будет применить для победы все выученные приёмы! Прошёл уровень? Держи новый, он будет достаточно сильно похож на предыдущий, но враги и твои проблемы становятся сложнее, и ты учишься новому, чтобы стать лучше и быстрее побеждать твоих врагов!

Уже начинаете понимать, к чему я клоню? Да, это очень похоже на реальную жизнь, в принципе: наши уровни — это как минимум наши годы, с течением которых мы становимся старше и встречаем «новые» проблемы. Мне нравилось играть, и я хотел с таким же интересом работать на своей будущей работе. Пока я учился, я узнавал новые приёмы и места, где их применять. Так я изначально и познакомился с компьютерными сетями: с тем, как общаются маршрутизаторы и коммутаторы, да и с тем, как вообще устроен интернет. За любой компанией стоит инфраструктура, где запущены серверы, а серверы соединены в локальную сеть благодаря сетевому оборудованию.

Это сетевое оборудование нужно настраивать и поддерживать. Первоначальная настройка — это как генерация игровой карты, которая должна соответствовать сеттингу твоей игры, то есть должны быть включены определённые параметры, а её вид и работоспособность не выбиваются из общей картины. А дальше ты занимаешься поддержкой, то есть когда твоя карта начинает ломаться: кто-то набросал туда мусора, или пара пикселей отвалилась, и карта уже выглядит непрезентабельно. Это часто и происходит с инфраструктурой: что-то вышло из строя, потому что много использовалось или, наоборот, вообще не использовалось, и время его жизни подошло к концу. А может, сработал человеческий фактор, и кому-то не понравился провод, ведущий к роутеру. Либо ты сделал лишь одну локацию, а потом тебе нужно ещё 10 таких локаций, и периодически при прохождении уровня твоя локация меняется, из-за чего уже первая локация совершенно нерабочая и не соответствует логике.

Так и начинается твоя игра в сетевого администратора — на самом деле, так же, как и в системного администратора (например, Linux), так и в DevOps. Твои проблемы или задачи — это твои игровые уровни, ты должен их пройти и победить все мелкие и не очень проблемы, появившиеся во время эксплуатации инфраструктуры. Каждая задача — это твой определённый уровень, например, лёгкой сложности: ты легко исправляешь конфиг какого-то сетевого оборудования, и определённый сотрудник всё же получает выход в интернет, или сайт компании снова становится доступным. Если ты легко справляешься с такими задачами, то ты углубляешься и получаешь новые квесты, более сложные уровни, решение которых может занимать кучу времени.

Инфраструктура состоит из сети (сетевого оборудования), серверов и сервисов, поддерживающих работу с серверами и сетью. Системный администратор настраивал железки с давних времён, чтобы ребята-программисты создавали свой код и запускали его на этих серверах. К 2008 году у программистов и системных администраторов образовалась куча конфликтов и проблем с обновлением кода на этих самых серверах, так и придумали методологию DevOps, которая могла помочь автоматизировать обновления кода и ускорить тем самым обновления для клиентов! Быстрее выпустить скидку на определённые товары, быстрее внедрить новую функцию в плеер музыки и так далее.

Так причём тут Dota 2? Игроки в Dota учатся работать в команде, делиться на роли и выполнять определённые задачи в игре. Каждый человек управляет своим персонажем, который обладает определёнными способностями. Эти способности могут быть использованы для атаки врагов или же для помощи союзников. В игре есть игровая карта, которая поделена на три линии, на которых встречаются игроки из противоположных команд. На каждой линии есть инфраструктурные постройки, которые важно в какой-то момент сообща защитить или, наоборот, разменять. Помимо этого, в каких-то определённых местах есть объекты, которые также нужно совместно захватывать, переигрывая врагов по карте. Всё это учит очень полезному мышлению нас, как DevOps.

В первую очередь, нам (DevOps’ам и Dota player’ам) нужно защитить наш Трон или же нашу инфру. В Dota 2 побеждает та команда, которая уничтожила достаточное количество строений, а главное — Трон. Представим, что каждая постройка на линии и Трон — это наша IT-инфраструктура. Первые башни — это простые сервисы, состояние которых нас не сильно интересует, но лучше, когда они работают! Иногда враги нападают на первую башню в то время, когда вы со своими союзниками заняты набором ресурсов или нападением на вражескую башню, и нам, как на работе во время инцидента, очень тяжело разорваться. И Dota player’ы принимают решение идти в размен и считают выбранное действие важнее, чем защита первой башни, — так и нам может быть важнее восстановить или создать определённую часть инфраструктуры вместо защиты сервиса, на который ничего не завязано.

В Dota 2 есть база команды; эта база в случае защиты начинает осаду с Т3 (tier 3) вышки и её бараков. И для Dota player’а это очень важный объект, который все стараются сохранить любой ценой, потому что после уничтожения этих объектов играть и защищать Трон будет очень сложно. В инфраструктуре, думаю, это можно приписать к Observability stack — это мониторинг, логирование и алертинг. То есть потерять эти сервисы — это значит потерять первоначальную защиту, скорее, наверное, уверенность в том, что наша инфраструктура полностью рабочая. Как и в случае с Dota 2, играть и существовать без Т3 и Observability в случае с DevOps возможно, но очень проблематично.

А Трон в данном случае, я думаю, будет считаться последним рубежом инфраструктуры — это могут быть как главные инфраструктурные серверы, на которых уже работают главные приложения компании, так и сетевое оборудование, которое позволяет всему миру видеть наше приложение. Если Трон упал, сервер недоступен — то мы проиграли. Для Dota 2 это значит, что можно лишь начать новую игру, а в мире IT, конечно же, мы можем быстро зафиксировать падение и как можно быстрее его восстановить в рамках нашего SLA.

Так получается, что Dota 2 воспитывает правильное мышление по защите инфраструктуры и выстраивает правильные ценности в выборе приоритетов управления своими ресурсами, а также взаимодействие в команде с отдельными ролями. Умеешь быстро реагировать на ганги? Можешь и быстро реагировать на инциденты.

Но самое главное… В доту можно играть до работы, после работы, но не вместо работы.