Pull to refresh
4
0
Andrew Yakovlev@nox1725

System Architect / DevOps / System Engineer

Send message
Про знания Васи я вроде ничего не писал (кроме того, что они у него были на его грейд)

Нет, Вася однозначно обладал меньшими знаниями, к тому же это немного из разной оперы, как примерно сравнивать CTO и Senior Engineer
Не буду говорить про плюсы и минусы открытой зарплаты, тут уже высказали множество мнений и в каждой позиции есть свои плюсы и минусы. А вот про мотивацию могу немного рассказать

Давным-давно в далекой галактике я работал в одной конторе, по сути интегратор, разве что европейский, а не из ex-СССР. Так вот там была введена интересная система KPI, которая состояла из нескольких:
  • Так как контора была outsource/outstaff, то Customer оценивал по каждой задаче её степень завершенности, по шкале от 1 до 10 и в конце месяца для каждого сотрудника выставлялась оценка в виде коэффициента от 0 до бесконечности, причем коэффициент 1 соответствовал средней оценке 9 (т.е. 90%), что было своеобразной целью (SLA, который прописывался в конторакте с клиентом в том числе, на ряду с гарантированным временем решения задач и другими плюшками, которые должен был получать клиент).

    Соответственно получив среднюю оценку 10, можно было получить коэффициент 1.11, а именно на эту сумму умножалась зарплата сотрудника. То есть зарплату никто не знал, но состояние соревнования присутствовало, так как коэффициенты озвучивались публично и каждый сотрудник видел какое место в ТОПе он занимает
  • Так же в системе автоматически логировалось время работы над каждой задачей, при этом это было billable time, то есть утверждалось клиентом и менеджером конкретного сотрудника (так как клиент по итогу месяца по этому времени платил конторе деньги).

    Минимальный интервал был 10 минут, то есть даже если ты делал задачу 2 минуты, все равно ставил 10 и в этом был некий чит, но на практике таких задач было немного. Среднее время, вроде бы было около получаса или даже минут 40.

    Но суть этого KPI в том, что по каждому грейду (Junior/Middle/Senior) у нас это называлось L1, L2, L3 (L1 — juniors/middles, L2 — middles/seniors, L3 — seniors/architects), была награда — top amount, то есть по количеству закрытых задач и общему времени (оплаченному, само собой).

    Такой человек получал +20% к з/п, опять же сама з/п не раскрывалась, но 20% это большая сумма и это было очень серьезной мотивацией
  • Помимо этого, контора работала в режиме 24/7, а инженеры работали по скользящему графику и, естественно, у любого человека были ночные смены. Такие смены оплачивались с коэффициентом 1.25, т.е. плюс 25% денег за ночную смену (зарплата делилась на количество смен, потом сумма ночных смен умножалась на 1.25 и прибавлялась к сумме обычных смен).

    При этом далеко не все стремились работать ночью, а руководство наоборот было не против по просьбе сотрудника (в стиле «я был молод и мне нужны были деньги») поставить его работать в 6/7 ночных, при условии, что он справлялся с нагрузкой.

    Нормальная смена была с двумя выходными, то есть работая 6/7 плюс все эти смены ночные была возможность получить почти 150% от своей ставки. Опять же сумма, которую сотрудник получает, не разглашалась, но к ней применялись повышенные коэффициенты
  • Плюсом ко всему, что выше, была еще фиксированная доплата за менторство. То есть если ты гуру python, например, или bash-маньяк или rock-star в какой-то другой области, то ты готовишь некий мастер-класс по какой-то востребованной в компании технологии и согласуешь с начальством. Если таможня дает добро начальство считает это актуальной темой, ты проводишь этот мастер-класс в нерабочее время,
    плюс записываешь видео, которое идет в knowledge base компании и получаешь (по тем временам, это был 2004-2006 год) 100$ к з/п

    Заставлять проводить такие мастер-классы никто не заставлял, но желающие всегда были, чем руководство убивало сразу двух зайцев — повышало внутреннюю экспертизу и шарило знания,
    плюс мотивировало отдельных сотрудников и, чего греха таить, немного почёсывало их ЧСВ


Ну и как контрпример, приведу случай, когда зарплата сотрудника по определенным причинам была известна и к чему это привело.

Уже намного позже событий описанных сверху я работал в другой компании и руководил IT департаментом, где были всякие system engineers, devops engineers, network engineers и так далее. Плюс к этому в компании было несколько крупный подразделений (команд разработки), которые непосредственно разрабатывали продукт и в каждом подразделении были такие ребята, которые назывались site reliability engineers, — это такие своеобразные DevOps, но которые отвечают только за выпуск продукта в прод.

Так вот, собственно история, в том, что компания наняла некоторого rock-star инженера в контрактную команду, назовём его Васей, для наглядности. И Вася поработал в этой команде где-то год, а потом руководство команды и сам Вася решили, что он слишком крут и надо его отправить работать ко мне, так как задач у нас больше и сами задачи сложнее, а Вася хоть и рок-стар, но в команде ему скучно и потенциал не раскрыт. Никто в общем-то не был против, а Васе к тому же грозил еще label upgrade.

Однако, когда Вася пришёл работать ко мне, я как его менеджер, естественно, узнал сколько Вася получает и с удивлением для себя обнаружил, что у нас с Васей одинаковая зарплата. Да, конечно, Василий рок-стар, — бесспорно, но руководство целым подразделением подразумевает немного большую ответственность (таких «Васей» у меня тогда было человек 10 или 12).

Естественно Васе я ничего не говорил, а пошел напрямую к топ-менеджменту компании и попросил поднять мне зарплату.

Но договориться с руководством не получилось, что привело к моему уходу из компании, а затем и к тому, что 70% инженеров из моего отдела ушли из компании, т.к. руководить ими было некому, а за работу спрашивали уже не с меня, а с них напрямую.

Ребята, которые привыкли, что босс их прикрывает, и они получают по башке feedback только из одного источника, были просто не готовы к прямой ответственности за свою работу.

Конечно, руководство в итоге попыталось найти другого менеджера, пробовали на эту должность и Василия, но налаженная система уже была сломана, так что сейчас (на сколько я знаю), такого отдела в принципе не существует в той компании, а каждая команда разработки имеет свой штат DevOps, System Engineers (Ops) и т.д., что, конечно, влечет за собой и большие расходы, и меньшую эффективность и много других проблем (а-ля «Лебедь, рак и щука»).
Не знаю съест ли (ведь зараженный FP должен быть подписан сертификатом, которому Apple доверяет), но даже если съест и установит, у него должны быть привилегии:
image

Тоже самое с камерой, сетью и т.д.

То есть ну поставит малварь через флеш (хотя и в этом сомневаюсь, так как скажет, скорее всего, что приложение из недоверенного источника), но доступа к сети, камере и диску эта малварь не получит

Но в общем-то Вы правы, так как безопасность, это в большей степени ответственность пользователя, а любая современная ОС предоставляет средства защиты, плюс есть сторонние продукты, вроде антивирусов

Например в моей компании стоит сразу несколько рубежей защиты — и GlobalProtect, и Cisco AMP и банальный антивирус от Symantec, ну и плюс еще централизованный сбор логов о потенциально опасных действиях пользователя (установка ПО, например). То есть если я скачаю и установлю себе просто взломанное ПО, то это прямой путь к увольнению, так как отдел ИБ это заметит и даст по башке.

С таким подходом уже не важно, какая ОС (у нас примерно 60% винды, 30% маков и 10% линукс)
Именно то, что любой школьник не может опубликовать (и подписать) своё приложение в AppStore и говорит о том, что это немного более безопасно, чем super_puper_app.exe

Да, фейлы безопасности есть у всех (лично я использую все 4 семейства ОС, везде хватает), однако вопрос не в фейлах, а легкости выстрела себе в ногу.

В Windows по моему мнению это сделать легче всего, дальше уже идут MacOS, Linux, Unix(*BSD) и всякая экзотика, где люди себе в ногу стреляют осознанно или эксперимента ради

Я про то, что дефолтные настройки Windows, позволяют делать много всякого, можно устанавливать любые приложения (да, они попросят «внести изменения на Вашем компьютере», без деталей), в том числе и без подписи

В той же MacOS нужно специально под админским паролем в настройках разрешить установку программ из неизвестных источников и еще при попытке установки чего-то не из AppStore тебе каждый раз напомнят, что это очень очень небезопасно

В Linux все сложнее, но если брать официальные репозитории, то там тоже есть GPG подпись

P.S. Не пытаюсь спорить, так как выбор ОС — дело сугубо религиозное, как и отношение к ИБ в конкретной ОС
Нет, не путаю, хоть пользуюсь обеими. И да, обе спрашивают про привилегии, в момент доступа, а не заранее

Плюсом ко всему, приложение должно быть подписано валидным разработчиком в AppStore
Поздравляю, Вы сейчас открыли для себя MacOS X (не реклама)

Я, конечно, понимаю, что учитель в силу многих обстоятельств не сможет использовать что-то отличное от Windows, но в какой-то абстрактной работе это очень помогает (где нет зависимости от платформы).

Я про то что MacOS X без всяких дополнительных телодвижений:
  • Ограничивает приложение его «папкой», точнее изолирует приложение на уровне ОС, не позволяя ему видеть остальные приложения и данные пользователя
  • Управляет доступом к оборудованию (камера, геолокация, микрофон и т.д.)
  • При попытке внести изменения за пределы своего окружения, система спросит пользователя об этом (обычно даже поясняя, что именно хочет сделать приложение)


Ну и там много еще чего интересного, но всё это можно найти в интернете
У меня лично, но по совместительству и у компании, где я работаю, политика ставить всегда latest stable. Да, в ветку 3.1.х портируются фиксы из 3.3.х, но лучше таки иметь последнюю версию продукта

Хотя, справедливости ради, конкретно для запуска Storm подойдет даже 2.х, так что можно было и из Epel поставить
В случае с форматом key=(value) не нужно, просто в случае необходимости добавить еще одну пару значений (например) username=(%username%) — просто начинаем слать её в логи и она автоматом подхватывается Logstash

Как видите в статье:
filter {
kv {
source => "message"
recursive => "false"
add_tag => "%{loggerclass}"
}
}

мы не указываем какой-то конкретной конфигурации для каких либо items, просто говорим — ищи пары ключ-значения в поле message, ну а тэг — дело опциональное, хоть для Java и очень useful

Да, научить loj4j2 можно и я даже нашел соответствующий log4j2 appender на github, но пересобирать Storm с нужной jar'кой и потом еще писать и поддерживать CICD для этого процесса как-то стало лень, поэтому решил остановиться на key-value

Однако, возможно это тема для отдельной статьи или «второй редакции» этой статьи. Как будет время — соберу всё это и возможно напишу статью как логировать в json
Это на самом деле не проблема ELK, это проблема log4j2, он не совсем корректно работает и не умеет pretty json, а logstash в свою очередь не умеет в multistring.

Если нужно/можно писать напрямую из приложения в logstash -> ничего не мешает использовать json

На мой взгляд key-value гибче, т.к. в него можно завернуть любые логи. Например, тот же nginx в json писать будет довольно сложно научить. Ну и добавить новые поля можно в любое время, ничего не меняя в конфигурации принимающей стороны.
Статья, в общем-то не о supervisor, но так как это системный демон он работает от рута, т.к. должен иметь необходимость запускать процессы от имени других пользователей. То есть в данном случае религия позволяет использовать системный python и от root

Да, можно сделать через sudo, есть и другие варианты, вплоть до запуска storm внутри docker, раз уж он все равно используется.

Но, повторюсь, статья не о настройке supervisor, поэтому я эту часть упростил, ибо в реальности, лично у меня всё запускается более сложным образом, с участием систем конфигурации и с запуском каждого сервиса от своего пользователя, а те сервисы, что нужно изолировать, — изолированы через контейнеры

Но так-то мы тут о логировании
Да, соглашусь. Возможно даже переделаю свои боевые настройки
Да, действительно ценное замечание по поводу даты из логов, однако, как Вы могли заметить у меня есть timestamp принятого сообщения и logdate филд внутри самого сообщения — это позволяет, в том числе, посмотреть на задержку в доставке сообщений (у меня в Grafana даже есть алерт, если какой-то хост начинает слишком долго доставлять логи)

Про systemd — согласен, но supervisor мне кажется более гибким (мне он еще и сообщения на почту шлёт, если пришлось перезапустить Storm). Но вообще это вопрос религии :-)
Можно, но придётся немного пошаманить с regexp, так как стандартный input для Logstash не умеет обрабатывать JSON с переносами строки, а в Loj4J2 вполне себе могут быть Exception и Stack Trace, которые будут многострочными. Фильтр kv в данном случае корректно обработает любые значения
Ну вот я, как раз, отказался от телевизора в спальне в пользу iPad (дома еще есть 3 мака + тайм капсула, куда можно складывать киношки, ну и айфоны само собой), а большой телевизор в гостинной подключен к приставке Apple TV и на нем обычно смотрятся фильмы компанией и т.д.

Я к тому, что по цене телевизора можно купить несколько планшетов от яблока :-)
То есть вы, чтобы посмотреть сериальчик в кроватке перед сном с супругой/подругой тащите с собой в кровать ноут? Или телек в спальне?

iPad, даже mini, решает проблему потребления медиа-контента (музыка, кино, ютуб, вк, фб и т.д.) на 100% в условиях дома и на 146% в условиях путешествий — ну зачем с собой в отпуск тащить ноут, если есть iPad? Особенно если вы в 90% времени валяетесь на пляже пузом к верху? :-)

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity