В шоу «Согласен — не согласен» два человека из IT, но с разным бэкграундом разбирают спорные тезисы. Этот выпуск очень хотелось назвать «инженеры vs железо», потому что обсуждаем надёжность работы кода против надёжности работы сервера.
Слева — Дима, программист из Контура. Работает с серверами как с фоном для своих проектов. Справа — Максим, системный инженер из Selectel. Он и есть тот, кто держит на себе железо в дата-центрах.
Выпуск можно посмотреть на YouTube, Rutube и VK. Где больше нравится.
А ниже — расшифровка встречи по каждому пункту для тех, кому удобнее прочитать.
Программистам работать проще, чем системным инженерам
Программист: Конечно да!
Программист приходит с утра в офис, наливает кофеёк, садится в удобное креслице, думает, пишет код. А работу системного инженера я представляю себе совсем иначе. Он каждый день едет в дата-центры, оставляет все личные вещи, потому что туда иначе не пускают. Заходит, что-то там ищет, лазает… всё пыльно, грязно. А если что-то не то воткнет или сломает, то порушит просто сразу всё. Если же программист накосячит, то его спасут тестировщики, на тестовой площадке отловится проблема. Мы застрахованы со всех сторон.
Инженер: Нет, но…
В твоем ответе немного стереотипное мнение по поводу того, что дата-центра – это пыльное подвальные помещение. На самом деле, нет. У нас во всех дата-центрах нет ни пылинки. Постоянно идёт уборка серверных. Кондиционеры стоят под давлением и так сильно циркулируют воздух, что любые частички кожи, волос, пыли, которые даже через бахилы каким-то образом попадают, улетают сразу на фильтры и остаются уже на них до замены фильтров. А фильтры меняют чуть ли не каждую неделю.
По поводу того, что до дата-центра нужно все вещи оставлять, тоже не совсем правда. Есть разные уровни доступа. У системных инженеров есть диспетчерская, либо инженерная, по-разному называют. То есть, грубо говоря, большие кабинеты, где у каждого своё место. У нас есть там личные шкафчики, свои кофепоинты и даже диванчики, где можно посидеть и полежать. Инженеры на рабочем месте носят комфортную одежду – кому в чём удобно. Да, мы ходим постоянно с обмундированием, с какими-то инженерными приколами: отвёртки, стяжки, ноут, планшет, телефон. Это всё выдаёт компания для того, чтобы было комфортно работать.
На инженере, естественно, есть ответственность, как и на программисте. Каждый сотрудник в любой компании будет ответственность за свою работу. Косяки случаются, да. Все мы ошибаемся, мы не роботы. Но, так или иначе, серьёзных косяков у нас поштучно можно пересчитать в течение года.
Программист:
У нас периодически бывают ситуации, когда мы замечаем по своим метрикам, что конкретная проблема не в коде, а в железе. Я знаю, что в этот момент какой-то системный инженер подрывается, идёт проверять, что там. Возможно, он тоже это делает с рабочего места, просто это у меня такие фантазии?
Инженер:
Действительно, часть проблем можно решать удалённо. Но зачастую какие-то вопросы по оборудованию они решаются на месте. Инженер подходит к оборудованию, подключается, смотрит, что с ним не так, перезагружается, заходит в BIOS, обновляет настройки.
Ведущая:
Верно ли, что системный инженер не может себе позволить удалённую работу?
Инженер:
Да, мы не можем позволить себе работать удалённо по причине того, что нам важна, скажем так, близость к серверной, к железу. Мы без них никак. Иначе зачем мы были бы нужны?
Главная причина сбоев в работе IT-систем — проблема в железа, а не в коде
Программист: Нет, но…
Я сужу чисто по опыту инцидентов, которые мы разбирали. Конечно, бывают инциденты, связанные с железом. И они часто очень заметны, потому что влияют на всю инфраструктуру. Но всё-таки подавляющая часть инцидентов – это проблемы с кодом.
Инженер: Нет, но…
Если рассматривать железо как одну единицу оборудования, то у нас есть история по каждому серверу. Мы понимаем, как часто мы что-либо делаем руками с этим сервером. И, как показывает практика, если сервер собирать вообще новым, то он проработает абсолютно без каких-либо изменений руками около 1-1,5 лет. Это говорит о том, что железо не будет ломаться и требовать контроля.
Но оборудование нужно обслуживать, понятное дело. И когда мы говорим про 10 000 единиц оборудования, то, само собой, мы работаем и чиним каждый день. Но это не говорит о том, что железо постоянно выходит из строя. В рамках жизни одного конкретного железа оно довольно редко обслуживается.
Программист:
Дополню ещё. Мы, как разработчики, пытаемся предусмотреть проблемы с оборудованием. Грубо говоря, подкладываем соломки на случай его выхода из строя. Все приложения живут в нескольких дата-центрах одновременно. Даже если в одном что-то случится, наше приложение будет работать.
Кроме того, часто проблемы возникают в момент обновления. И программный код обновляется гораздо чаще, чем настройки железа. Поэтому логично, что проблемы зачастую именно в программном обеспечении.
Linux – единственная нормальная ОС для серверов
Программист: Нет, но…
Да, в любом случае это должна быть какая-то линуксоподобная система. Но Linux уже сколько лет. И я надеюсь, что за это время что-то изменилось и нашли новые подходы. Наверняка, есть более современные и отвечающие новым вызовам системы? Я не разбираюсь в этом. Но не хочется оставлять надежду, что не только мир программного обеспечения куда-то двигается, но и железо.
Инженер: Да, но…
Действительно, новые операционные системы есть, но они всё ещё на семействе линуксоподобных. Есть, конечно, Windows-сервер, и многие компании устанавливают и работают с ним, потому что их админы так привыкли.
Программист:
У выбора Windows-сервера часто причина в совместимости с некоторыми платформами, со специализированным ПО. Поэтому просто выбора не остаётся. Сейчас, правда, всё движется в униформенную среду, и те же узкие программные продукты, которые раньше могли только под Windows работать, научились работать и под Linux.
Инженер:
Если смотреть в разрезе компаний, которые владеют именно серверным оборудованием, например Selectel, то мы видим такую статистику: 70% всего нашего оборудования работает именно на Linux-системах. Почему так? Во-первых, если загуглить, то Linux меньше потребляет ресурсов, нежели какой-нибудь Windows-сервер. Во-вторых, у Linux-систем большое комьюнити, что позволяет находить решения практически любых проблем.
Лучшее место для хранения данных – локальный сервер, а не облако
Программист: Нет, но…
Это вопрос отказоустойчивости оборудования. Если в современном дата-центре предусмотрены различные системы, то храня, грубо говоря, дома на своей железяке, возникает очень много рисков. Элементарно – потоп, пожар, кошка пробежала. Дата-центры исключают такие проблемы. Кроме того, в облаке зачастую уже предусмотрены механизмы реплицирования, причём данные разнесены географически, что позволяет даже в случае сбоев защитить данные.
Инженер: Нет, но…
Да, соглашусь. Единственный момент: локальный сервер необязательно находится дома. У нас, например, дата-центрах есть услуга, ты можешь арендовать сервер, который будет стоять в стенах нашего дата-центра. Это будет физический сервер, который отдан полностью тебе.
В свою очередь облако – это, грубо говоря, группа серверов, которые собраны в кластер. И если мы и в облако, и в физический сервер положим данные, то с большей вероятностью данные сохранятся в облаке. Если в облаке, где, например, стоит 100 серверов, в одном из серверов умер диск, на котором хранилось 50% твоих данных, то ты, как пользователь, это не почувствуешь. Потому что этот диск умрёт, мы его поменяем, а твои данные из двух других таких же кластеров подтянутся. И временно ты будешь работать сначала с ними, а потом, когда мы заменим диск, эти данные просто скопируются на новый диск в этом же кластере. А с локальным сервером, да, будь то дома, будь то даже в дата-центре, ты надеешься только сам на себя, на ту систему резервирования, которую устроил.
Программист:
Я ещё дополню. Тут нужно смотреть, с какой стороны лучше. Есть два момента: это сохранность данных и конфиденциальность. То есть если ты параноик и не хочешь, чтобы куда-то по сети гонялись твои данные, то ты, конечно, оборудуешь себе локальный сервер. Есть много практик, как можно обеспечить резервирование и как защититься от перебоев в сети. Но чем выше нужна надёжность, тем больше придётся заморочиться, вложить денег, изучить кучу материала. При этом если ты пользуешься услугами облака, то там специалисты гораздо более высокого уровня, чем ты, уже подумали обо всём и обеспечили всё то, что тебе нужно.
Инженер:
Пять копеек насчёт конфиденциальности. Уважающая себя компания незаинтересована никаким образом в том, чтобы похищать данные, использовать эти данные где-то в открытом доступе или как-то шантажировать. Это подрыв доверия, а в IT доверие – это важно. Если подобное случится, то компании-клиенты сразу отвернутся от такой компании и не будут пользоваться её услугами.
Хороший программист должен разбираться в серверах, а хороший инженер — в коде
Инженер: Да, но…
Чтобы было меньше примитивных вопросов, было бы хорошо, чтобы программисты немного разбирались в железе, а инженеры – в коде. Тогда был бы радужный мир. Но, к сожалению, это не всегда так, потому что направления всё-таки разные. Программисты заточены работать в своем узконаправленном секторе, а инженеры в своем. Но знания в смежных областях позволи бы быстрее договариваться.
Программист: Да, но…
Поддержу, важно уметь общаться на одном языке. И согласен, что должно быть верхнеуровневое понимание о всех сторонах. Но развитие самой индустрии накладывает своё влияние. Системы строят всё сложнее, масштабнее, и просто невозможно на всех уровнях глубоко понимать, что и как устроено.
Но при построении какой-либо системы разработчику в любом случае приходится задумываться о том, какие гарантии он сможет дать. К нему приходят нефункциональные требования и важно понимать, что нельзя гарантировать тот же уровень доступности и выше, чем гарантирует дата-центр. Если разработчик не берёт это в расчёт и не знает, как всё устроено, то он просто не сможет спроектировать хорошую систему.
Источник: habr.com