Некоторое время назад я осознал, что почти в каждом клиентском проекте, над которым я работал до сих пор, игнорировалась важная группа заинтересованных сторон: системные администраторы.
Эти безмолвные герои обычно участвуют только в конце проекта и остаются с исполняемым черным ящиком с битами, которые они должны установить, поддерживать и поддерживать на долгие годы. Всякий раз, когда возникает проблема с этим черным ящиком, они должны найти способ решить ее, используя любую случайную информацию и поддержку инструментов, предоставляемую им черным ящиком или базовой платформой, и если этого недостаточно, они должны импровизировать. .
Если бы они были вовлечены в проект с самого начала в качестве заинтересованной стороны, у них была бы возможность предсказать потенциальные проблемы и проинформировать об этом команду проекта. Но реальность иная, и хотя я, как разработчик, хотел бы привлечь системного администратора в качестве дополнительной заинтересованной стороны, внешние факторы могут помешать этому.
В таких ситуациях я хотел бы как можно лучше помочь нашим безмолвным героям. Итак, мой вопрос:
Что пожелает системный администратор от нас, разработчиков, когда мы будем разрабатывать системы, которые им придется обслуживать?
Если вы системный администратор, пожалуйста, расскажи военную историю о сложной проблеме, с которой вы когда-то столкнулись, и о том, что разработчики могли сделать, чтобы облегчить вам ее решение.

Эта система работает так, что он может пойти домой к детям.
Он не хочет, чтобы это работало СЛИШКОМ хорошо, иначе он остался бы без работы.
@nobody: у него, вероятно, есть масса другого программного обеспечения, которое его занимает; не нужно добавлять к нагрузке.
Системным администраторам обычно требуется следующее:
Спасибо за ваш вклад. Что подразумевается под «контекстно-зависимым путем эскалации»?
У каждого проекта есть «Планирование мощности» вместе с его системной архитектурой. Системные администраторы должны участвовать в процессе планирования мощности, а также в окончательной проверке архитектуры системы. Это поможет ему лучше понять систему и подготовиться к развертыванию и поддержке.
Правда в том, что не во всех проектах это есть, и в тех, что есть, не всегда задействован системный администратор. В моем вопросе я предполагаю, что системный администратор недоступен во время разработки. Для этого может быть много причин, например: если за хостинг отвечает другая компания.
Различные вещи, включая (но не ограничиваясь ими) следующие, которые не находятся в порядке приоритета:
Многое зависит от того, что это за программное обеспечение и как оно используется. Требования к программе с графическим интерфейсом, работающей в Windows, Linux и MacOS X, радикально отличаются от требований к сетевому демону, но цель по-прежнему должна быть стабильным, надежным и легко управляемым программным обеспечением.
Имейте в виду, что есть большие различия между программным обеспечением, подготовленным внутренним отделом для использования в одной компании, и программным обеспечением, подготовленным для использования клиентами, внешними по отношению к компании, которая разрабатывает программное обеспечение.
Могу я добавить, легко настроить вывод журнала.
Хорошо задокументированные зависимости, которые поставляются в комплекте с программным обеспечением, если мой опыт домашнего администратора не вызывает сомнений.
Думаю, сочетание следующего:
1) Порог емкости -> На каких машинах запускается это программное обеспечение и какие показатели следует использовать, чтобы определить, когда это число может измениться, например от 2 до 3 серверов баз данных или от 10 до 15 веб-серверов. Насколько мощным должно быть оборудование и насколько важна одна его часть, например ЦП имеет большее значение, чем ОЗУ, как насчет конфигурации жесткого диска и места?
2) Устранение неполадок в стиле поваренной книги -> Если что-то пойдет не так, насколько легко это можно разделить на код, данные или сетевую ошибку.
3) Схема окружений -> Как выглядят экземпляры этого программного обеспечения для разработки, тестирования и производства? Работают ли эти и, возможно, другие среды прямо сейчас?
4) Техническое обслуживание -> Существуют ли файлы журналов для анализа в отчеты, еженедельные журналы ошибок для отправки или какие-то действия, связанные с программным обеспечением, например перезагружайте сервер еженедельно.
5) Безопасность -> Нужно ли создавать учетные записи и управлять ими, а также политику безопасности, определяющую, у кого какой уровень полномочий в системе.
Это были бы основные из них, которые приходили мне на ум.
Что ж, это скорее ужас, чем история военного времени: поддержка приложения, которое без видимых причин требует, чтобы его запускали под учетной записью администратора.
Я думаю, было бы неплохо иметь в приложении несколько случайных вещей:
Простое обслуживание упаковки!
Установка и обновление программного обеспечения должно быть безумно простым, в том числе и для зависимостей. Если есть много зависимостей и подчиненных зависимостей, и вы не склонны осваивать нюансы методологии управления пакетами каждой операционной системы, было бы неплохо предложить версию пакета со всеми необходимыми зависимостями, объединенными в гигантский архив. . Запустите сценарий, поместите все это в / usr / local / yourproject и сообщите им, где находится сценарий запуска / выключения / перезапуска.
Когда проблема неизбежно возникает, обратите внимание на то, что говорит системный администратор, и верьте ему. Не отказывайтесь от него сразу же, если он не соответствует вашей первоначальной оценке.
История войны: лет 6 назад я работал системным администратором в небольшой производственной компании, и они решили купить какое-то программное обеспечение для планирования профилактического обслуживания своего оборудования. Одной из его функций был импорт запросов на обслуживание из электронной почты, но у нас были случайные проблемы с ошибками при разговоре с почтовым сервером во время этого процесса, и в конце концов меня вызвали, чтобы взглянуть на него во время телефонного разговора с разработчиком. Разговор включал несколько итераций
Developer: I've never heard of anyone having that kind of trouble talking to the mail server. It has to be a firewall issue.
Me: I'm logged into the firewall, running a packet sniffer, and watching your app's traffic pass through without any problems. It's getting through the firewall just fine.
Developer: No, no - it has to be a firewall issue.
(В конце концов выяснилось, что проблема заключалась в том, что приложение открыло соединение POP3, прочитало всю почту, дождалось, пока пользователь назначит задачи, а затем отправило команду POP для удаления почты после того, как все запросы были запланированы. Если пользователю потребовалось более 15 минут для составления расписания, время ожидания POP-соединения истекло, и приложение не смогло восстановиться, поэтому вместо этого оно умерло. А затем пользователю пришлось повторить планирование, а это, вероятно, заняло бы достаточно времени. снова тайм-аут ...)
@Jonas Kongslund: на самом деле я могу удалить этот ответ, если он мешает привлечь внимание к вашему вопросу ... но я думаю, что это имеет смысл :)