elglin: (Default)
Ни фига не нервничаешь, когда уже сел в автобус. И ни фига не нервничаешь, когда автобус закрыл двери и уехал - он уехал же, что тут нервничать. А вот когда успеваешь и не знаешь, не закроет ли он двери перед носом - тогда нервничаешь (на самом деле, не очень, бежать надо).
Это я к чему: у меня по дороге на работу две пересадки. На каждой пересадке есть участок, с которого видно следующую платформу, и если там уже что-то стоит, можно не переживать, ты уже опоздал. Но вот есть примерно 10-15-секундный интервал по концу этого участка, когда ты можешь даже бегом бежать, но пепелац успеет, еще тобой не замеченный, въехать на платформу, загрузить-выгрузить пассажиров и радостно хлопнуть перед тобой дверьми.
И пока ты не выбежал на платформу, ты не знаешь, вот этот вот ближайший поезд, он попал в эти самые чертовы 10-15 секунд, или все-таки приехал позже (или еще не приехал), и ты успел.
И так каждый день :).
elglin: (Default)
Таки я сейчас и ажно до понедельника безработный. Жена сразу сказала, что за просто так кормить не будет, за то ее и люблю.
Сейчас, кстати, такое время, что прыгать по работам самый сок. Зарплаты растут, как на дрожжах, а почти во всех конторах есть не такие и большие лимиты на ежегодное повышение.
Сразу возникает вопрос, фиг ли я просидел столько на одном месте. Ну надо отметить, что коллектив был душевный, а нематериальный пакет был изрядно годен. А так - сначала я несколько лет рос над собой, удачно запрыгнув в вмварный поезд, получив жирные плюсы к зарплате. Потом у меня была пара лет хрен-те чего в личной жизни, да и моргич тоже требовал к себе внимания. Потом пошли дети, и как-то тоже было не до того.
Потом пару лет были годные проекты, в какие-то вписался, какие-то катализировал сам. Дальше года три я тупо под конец года приходил к начальнику и говорил, что я же хорошо поработал, и если я на ежегодном промо не увижу материального отражения, то я открываю резюме и практически исследую вопрос, как быстро и на какие деньги меня схантят.
В последние два года держал коллектив, с которым я сработался, и добрую половину которого нанял. Плюс было два мегапроекта и большое желание вытащить уровень ИТ в конторе поближе к современности. Летом сдали один мегапроект, осенью пришло понимание того, что снизу красоту мы не наведём, у нас весь энтузиазм кончился, а сверху это не очень нужно, а второй мегапроект требует каких-то титанических усилий на разгон.
Добило меня то, что на собесе мне в два счета доказали, что то, что я почитал некоторым немалым своим достижением и немножечко гордился, в нормальной конторе есть в худшем случае нечто само собой разумеющееся, а в лучшем - пройденный этап.
Поэтому как-то либо сейчас, либо никогда. Ну вот и пошел я.
elglin: (Default)
Не Дийкстра я ни разу, но хоть примажусь.
В 2016 году к нам прибежал наш внутренний идеолог Амазона и заявил, что еще полгода, и админы будут не нужны. Мы его обсмеяли, а он сейчас большой начальник; я вообще не понимаю, как он сделал карьеру на завале двух эпических проектов, продолбавших шести-, если не семизначную сумму, но вот поэтому он Бенцион Крик, а у меня в душе осень.
Ну кагбе пять лет прошло, воз миграции в Амазон и ныне там, хотя есть шанс, что он с непередаваемым скрипом таки поедет если не в этом, так в начале следующего года.
Но я не об этом. Амазон продвигает свой концепт, что надо убрать undifferentiated heavy lifting и сосредоточиться на бизнес-логике. Естественно, за помянутый heavy lifting надо немного отстегнуть Амазону, что логично. И опять же, суть не в этом, а суть в том, что разработчик в кои-то веки можно полностью контролировать стек. И это прямо-таки офигенно.
Вот я подумал за свой приклад. Да, там, конечно, внизу сервер, пицот лет конфигурять. А если вдуматься, то докерфайл будет не такой и развесистый, особливо если его собирать поэтажно, как доктор прописал. И если у меня есть докер-инфраструктура, которую не я собираю (AWS ECS/Fargate, EKS), то на докерфайле заканчивается моя зона ответственности и начинается зона... сервис-провайдера.
То же самое со всякими файрволами и балансерами (в кубиках это контролируется прямо из кубиков, в ванильном AWS - хоть терраформом, хоть CloudFormation). То же самое даже с мониторилками и логособиралками и далее по тексту.
База... ну формально я к этому постгресу рутовый доступ имею. В реальности катаешь миграции, смотришь диагностику и все такое, так что можно сказать, что и постгрес мне сгодится "как сервис". Туда же пойдет и модный редис, и любые Kafka/RabbitMQ и так далее.

То есть суть в том, что граница ответственности разраба почти везде сомкнулась с границей ответственности сервис-провайдера. Для админа, который жил как раз между этими границами, места нет. Окей, скажете вы, но ведь все эти жабаскрипт-мидлы и решетка-сеньоры ни черта не понимают в архитектуре. Ну, во-первых, понимают порой очень немало, во-вторых, можно вспомнить, что во времена оны человек, подозрительно похожий на современных SRE, назывался системным программистом и на сисопа или админа мог заслуженно оскорбиться.
Конечно, тут можно сказать, что cloud is just other people's servers, но суть в том, что в этом самом Амазоне, к примеру, классической админской работы, мне думается, мало. А за пределами Больших и Толстых провайдеров, мне думается, грядет плавное вымирание мелких и тонких.

Короче, то ли товарисч реально зрил в корень, то ли это был тот самый случай, когда стоящие часы правильное время показывают. Ну и надо понимать, что при всей своей апокалиптичности прогноз очень длинный. Классические админы за 50, а то и за 40, могут успеть уйти на пенсию до того, как прозвонит колокол. А вот тем, кто помоложе, как мне кажется, надо вспомнить про необходимость, которая понимающего ведет, а непонимающего тащит.
elglin: (Default)
Из сабжевого закона можно сделать спорное следствие, что каждый пытается решить задачу теми средствами, которые под рукой, и по минимуму задействовать что-то за пределами зоны контроля.
Вариант №1. У приклада есть три сервера, а в клиент зашита логика ходить по ним по очереди. Потому что балансера не было. Ну точнее был, но за его настройкой надо идти в другую группу и ну его нафиг.
Вариант №2. К прикладу прикручен отдельный сервак, на котором крутится, по сути, система синтетических тестов и сбора метрик из специальных ручек, которая отписывается в почту, если что не так. Потому что мониторинг, конечно, есть, но за ним надо идти вообще за океан, там будут месяцами судить и рядить, так что ну его нафиг.
Вариант №3. Был сервачок с обычным сервисом. За полтора года это настоялось до того, что вокруг сервачка еще несколько с килотонной других сервисов, а изначальный сервис работает мультиплексором. Потому что для него есть боярский доступ на файре, а делать дырку целое дело, обивать пороги и все такое, так что ну его нафиг.

Есть у этого подхода, кроме производства изрядной дичи в архитектурном отношении, одно на самом деле полезное свойство. Твоя система будет взрываться, а причину взрыва и способы его исправления куда как проще искать в своей зоне контроля, чем в чужой или, того хуже, на стыке.
В этом, кстати, изрядный бич пропагандируемого современного serverless - у тебя код раскидан по тонне сущностей, которые соединяют сущности, которые ты вообще не контролируешь, и если что-то пошло не так, то как понять, это твой баг, это неучтенный нюанс связки, это взрыв связки или это вообще какая-то неведомая долбаная.
Это я к тому, что одну планируемую штуку, которую мы специально дорабатывали, чтобы она идеально контейнеризовалась и распиливалась, мы будем разворачивать... старым добрым монолитным способом на инстансе со всем нужным на борту в одном флаконе. Потому что в этой ситуации у нас ноль лишних внешних зависимостей, а все косяки интеграции будут в нашей зоне контроля, потому что инстанс наш. А поскольку я здесь выступаю в роли "сраного разраба, который опять багов наплодил", то я очень хочу иметь возможность ловить и чинить их сам... потому что вне зависимости от причин проблем крайним буду я. А так хоть к обязанностям права прилагаться будут.
elglin: (Default)
Абсолютно негодная позиция для интриг мадридского двора. Хотя как посмотреть. Уже пару раз за этот год неожиданно оказалось, что Михалыча засылают послом к такой-то команде, потому что Михалыч ни разу не замарался во всяких там грязных схемах, а потому его слова сойдут за чистую монету.
Как там у Джордана было, "telling the truth was always a powerful play in the Game of Houses".
elglin: (Default)
Разбираю тут потроха не имеющей аналогов терраформовской кодобазы.
ТОННЫ ДИЧАЙШЕГО ХАРДКОДА.
При этом в лучшем случае абаснуй примерно такой: "Ну это у кого-то когда-то работало, а дальше все копипастили, не задумываясь". В худшем случае нет и этого.
Ну его нахер, ребята, так работать. Но именно так и работаем, потому что человека, который что-то понимает в программировании не на уровне кричания лозунгов DRY, KISS и так далее, а на уровне понимания их, найти сложно. А товарища, который под этими лозунгами будет бездумно копипастить (в кодовой базе около трехсот "почти одинаковых" файлов, из которых выделяется несколько кластеров одного размера, но есть и десятка три "снежинок"), найти очень просто.

Ну и еще. Любой вспомогательный скрипт, с моей точки зрения, должен выдавать машиночитаемый формат. Либо CSV/TSV/DSV, который awk-ается, либо JSON/YAML/TOML/XML (последнее, конечно, не нужно, но можно), который парсится тем же питоном (или jq для адептов баша) и кем только ни. При этом в идеале надо бы выдавать объект языка Х, который только в самом конце превращать в текст, чтобы желающий на том же языке привязаться не извращался конструкциями вида json.loads(json.dumps()). Желающий красивого вывода может написать обертку этого дела с форматированием - классическое отделение данных от представления.
Но нет. Только человекочитаемый вывод в формате, который **нешься парсить, не говоря за грепать.

Радует только одно. Сегодня тяпница, и эликсир узбагоения уже ждет.
elglin: (Default)
Хочется писать хороший код. Продуманный. Отлаженный. Самое главное - хорошо спроектированный.
Проблема только в том, что, обычно, вокруг ходит цейтнот. Причем такой цейтнот, что с той стороны контроль классический, а у тебя блицевый. Тут, увы, не до анализа вариантов в схевенингенском варианте сицилианской защиты.
Это я к тому, что я сегодня осознанно вмерджил к себе кусок совершенно потрясающего говнокода. Задача-то банальная - отсыпать нотифайки в такую-то ручку в таких-то случаях. Проблема в том, что ручка же черт знает где, а поэтому все прелести распределенного программирования налицо.
Короче, я просто вогнал еще одну таблицу, куда эти нотифайки разного рода инсертятся. Потом наговнякал еще один воркер (у меня их с десяток, одним больше, одним меньше), который ходит в эту табличку и пытается слать. SELECT FROM notifications ORDER BY notification_id LIMIT 1 FOR UPDATE; получилось - DELETE FROM notifications WHERE notification_id = XXX; не получилось - а ничего не делаем, на следующем проходе поретраим и так ad infinitum. Да-да, никакого вам ограниченного ретрая с экспоненциальным отступом - ручка будет страдать, один хрен она не моя.
По уму надо тут просто что-то, умеющее pub/sub прикрутить, от кафки до амазоновского SNS. Но у меня был постгрес, приклад с воркерами и час времени, набранный кусками по 15-20 минут.

Вот так и живем, мать его так.
elglin: (Default)
Вспомнилась байка. Кажется, я про нее когда-то писал, ну и фиг с ним.
Дело было лет десять назад, когда моя тогдашняя работа открывала филиал в Армении. Ну Армения и Армения, подумаешь, но штука же в том, что там пишут на армянском алфавите.
А солидная часть системы обработки заказов была родом из 90-х. Работала еще под досом, а написана была, ну конечно же, на Коболе. Вообще говоря, сам запуск этой ботвы на винде был тем еще экзерсисом.
Поскольку это более всего напоминало дерьмо мамонта и смердело соответственно, к ней давно были приделаны всякие красивые вебморды и так далее, которые писали напрямую в базу. База была ораклической и прекрасно умела в юникод - но вот коболотворение умело только в кодовую страницу DOS. До этого все прекрасно обходились 866-й для кириллических стран и 852 для всяких там европейских стран с умляутами и крышечками.
Но когда писали чистый дос, про Армению никто не думал, да и не было ее поначалу. Не было кодовой страницы для "армяницы". Была, конечно, ArmSCII, но программисты винды ей не парились (хотя в фуррифоксе поддержка ее была, что спасло нас при работе с армянскими банками, некоторые веб-клиенты которых отдавали ArmSCII в ту благословенную пору).
Я к этой системе обработки имел сугубо левое отношение, но проблему в какой-то момент осознал. Во-первых, я приобщился к Интернету еще в 90-е, то есть КОИ-8 читал со словарем, а вот транслит - без словаря. Во-вторых, в ту пору я мог непринужденно объяснить разницу между Certhas Daeron и Angerthas Moria.
Поскольку англовики в ту пору уже была огонь, я быстренько нашел несколько каноничных систем романизации армянского алфавита, которые все укладывались в 852-ю страницу. Минус был в том, что ни одна не удовлетворяла обязательному требованию взаимно-однозначного соответствия. Это меня огорчило, но не остановило, и я за час скомпоновал франкенштейна из двух стандартов, который уже был взаимно-однозначным, и вывалил в адрес "лучших умов", которые должны были решать проблемы с кодировкой в коболомонстре.
Мне ответили достаточно предсказуемо: "Иди в жопу, мальчик". Дело было в январе, что ли. Ну я поогорчался, пообижался и забыл, благо было дофига работы, с Арменией вовсе не связанной.
Прошло полгода. На дворе конец июня, внедреж 1 августа, Дед Лайн с мешком люлей уже показался на горизонте. И тут выясняется, что то ли лучшие умы полгода груши околачивали, то ли решали какие-то более важные вопросы, то ли созерцали пупки... но, короче, проблема с кодировкой в коболомонстре не решена. Забегая вперед, коболомонстра закопали только через года четыре, так что сделать вид, что не получилось - вообще не вариант.
И тут один из лучших умов вспоминает, что полгода назад они послали naher какого-то оленя из эксплуатации, который утверждал, что придумал решение. Из глубин почты откопали мою табличку и (естественно, без указания авторства) вывалили большому начальству с криками: "Смарити! Мы придумали!"
Армяне радостно подтвердили, что романизацию они читать умеют. Они, мне кажется, согласились бы в тот момент тенгвар читать, если бы им пообещали, что это заработает в коболомонстре. На этом сказке конец, а трансляция из той склепанной за час в обнимку с википедией таблички проработала верой и правдой до самых что ни на есть торжественных похорон коболомонстра.
elglin: (Default)
Нимагумалчать.
Нам года полтора ели мозги, ах как у нас замечательно терраформом все в Амазоне разворачивается. Ну я читал Хабр, да, терраформ неплохо.
Ну реально, есть у тебя солидная аппликуха, там, фронтенд, бэкенд, оффлоад статики, CDN, постгрес какой-нибудь с редисом на подхвате, балансер какой-нибудь, причем не один, скорее всего, какие-нибудь очереди или pub-sub и так далее. И вот оно у тебя по одной команде хопа - и развернулось или обновилось, поди плохо.
Давайте начнем с чего-то простого, предложил я. Давайте вы покажете, как нам развернуть голый линукс. Обычный, без изысков. Вот вы говорите, что у вас модуль есть. Далее разные отрывки из диалога, самая мякотка.
Э(ксперты): надо взять последнюю версию модуля.
Я: Какая стабильная? Вот у вас есть всякие.
Э: 1.3.8, кажется. Ну посмотри, с какой тут во-он те чуваки что-то делали.
Я: 1.2.0.
Э: Хм... странно.. ну все равно давайте 1.3.8
Я: А я вот тут видел сборки на 1.0.0, они не сломаются, если пересобрать инфру захотят?
Э: Ну мы ж 1.4.0 еще не выкатили, обратную совместимость мы только в нем ломаем, так что пока что не сломаются.
Я: Что-то тут дохрена файлов надо писать. А у вас нет какого-то скрипта, который на автомате генерит болванку?
Э: Ну ваще-то нет, это в светлом будущем [полтора года, напоминаю, они этим хвастаются]. О, точно, у нас тут где-то примерная папочка с файлами есть. Щас найдем.
Я: А как я должен был догадаться?
Э: Ну вот мы тебе только что сказали!
Я: Вот тут нужен идентификатор AMI, где мне его искать?
Э: Ну тебе же RHEL нужен? Ну поищи rhel по репозиторию, мы всегда так делаем, идентификатор обязательно найдется.
Я: А вот этот параметр, если не нужен, его можно убрать или надо, чтобы он был, но занулить?
Э: Ваще-то можно убрать, наверное, но хз, давай занулим.
Я: А если два сервера надо, то можно просто массив переменных фигануть вместо одного комплекта?
Э: Нет, тут надо отдельную папочку на каждый сервер со своим набором файлов.
Я: А на Security Group тоже отдельную папку?
Э: Ну да... только в одном пулле этого делать не надо, потому что порядок обхода папок недетерминированный, и оно может попытаться собрать инстанс до security group и обломаться.

Ах да, самая мякотка. Эти люди (вот эти самые, у которых нужно на каждый чих папочку с полудюжиной почти одинаковых файлов делать) любят в меня тыкать принципом... Don't Repeat Yourself. Но мы же не повторяемся, мы просто копипастим папочки с кодом из одной папочки в другую.
Занавес.
elglin: (Default)
За качество программеров и админов вследствие наплыва людей в ИТ после краткосрочных курсов я сказать не могу - не видел. А вот среди, прости господи, "бизнес-аналитиков" - увы, видел.
Я могу понять, почему человек пошел в группу эксплуатации узнавать, что случилось с сервером в совсем другой епархии - nslookup-у и ping-у бизнес-аналитиков не учат, там более важные вещи.
Я даже могу понять попытку проверить доступность внутреннего сервиса с публичного инета и удивление по этому поводу - мы все учились, как известно, понемногу. Я вот тоже долгие годы от vi знал только :q! - а потом ничего, втянулся.
Но вот неумение читать русский текст в письме я все-таки считаю для русскоязычного человека дисквалифицирующим свойством. Тебе черным по белому написали, что компонент А проверили, все с ним хорошо - а ты на голубом глазу спрашиваешь: "Хорошо, а компонент А работает?"
Хотя бизнес-аналитики - это почти как проджект-менеджеры. Почти у каждого есть один-два знакомых годных проджекта или аналитика. А вот основная масса - ну, опустим завесу жалости.
elglin: (Default)
Внедрили у нас достаточно давно, прости господи, "аутоматизацию файрвола". Так внедрили, что сейчас более половины запросов идут не через штатную форму, а... в обход ее. По старой дружбе и уважению среди коллег друг к другу.
Зато метрики красивые, прямо-таки сотни запросов, выполненные системой.
Система имеет нюанс. Если у тебя в запросе M сорсов и N дестов, то она внутри себя делает декартово произведение, получает M*N запросов по 1 сорсу и десту... и именно эти M*N идут в метрику.
И второй нюанс, если вдруг этот запрос почему-то свалился... то на ручную обработку уходит - нет, не один запрос, а M*N, потому что один раз порезанное собирать влом. О чем говорилось еще до внедрения, но вопрос был неудобный, так что все сделали вид, что его не слышали. И надо ли говорить, что вот эти, строго говоря, минус (M*N - 1) запросов... в метрике вовсе не отражаются.
Причем человек, от которого я добился ответа М*N...
- отказался отвечать мне на прямой вопрос, так ли это, в общем чатике, предложив перейти в личку,
- в личке отказался отвечать текстом,
- а голосом лишь с третьего вопроса подряд признал, что, таки да, M*N. Первые два раза пытался увести разговор в сторону, но я настырный.

Товарищи эмигранты - скажите, вот такое поведение нормально для англосаксонского американца?
elglin: (Default)
Есть одно такое эталонное говнище на просторах роисського айти: начинается на "б", заканчивается на "кс". Такое "б", что просто "кс".
И вот реально, ядрена вошь, я просто мимо крокодил. А еще я умею объяснить, чем 504 отличается от 502 и 500, а поскольку я ради интереса посмотрел всякие там netstat -nltp и ps aux | fgrep , то я узнал, что там в потрохах такой, язви его, конструктор, что убиться веником. Apache, nginx, node.js, mysql, redis. Не хватает только кафки какой-нибудь или ZeroMQ. Ах, ну да, и похапе, куда ж без этого.
И вот надо было, собака женска полу, молчать в тряпочку, а не говорить умные слова. Теперь, когда это эталонное говнище, про которое предупреждали, что это бомба с часовым механизмом, таки накрылось женским половым органом с невыразимым грохотом, мы имеем, что идеологи внедрения смотрят на меня с ожиданием, что я их быстренько спасу, а техподдержка ООО "Рога энд Копыта", которое это внедряло, мямлит что-то нечленораздельное и ищет способы свалить ответственность с себя, поскольку, похоже, не обременено специалистами, умеющими что-то далее: "развернуть по мануалу и жать кнопочки по инструкции".
В итоге куча геморроя и нервотрепки на ровном месте. Просто дозаниматься сексуальной активностью до полного изнеможения. Ну или холодец из... ну вы поняли, из чего.
Так что не крокодите мимо.
elglin: (Default)
... в конце, конечно же, крышка.
Есть у меня некий заход на биполярочку - либо условный я сидит и вымучивает из себя по капле, но не раба, а производственную деятельность, либо условный я бегает с шилом в глютеус максимус и строит окружающих в 3 шеренги, патамушта очинь нада.
Забавно, наверное, это смотрится со стороны.
elglin: (Default)
Чувствую себя медведем, пляшущим под музыку Горана Бреговича в фильме сабжа. Иначе тот сюр, который творится, не объясняется.

Кранч

Jan. 27th, 2021 10:17 pm
elglin: (Default)
Здравствуй, мой третий подряд 12-часовой рабочий день.
А все потому, что если вам перенесли дедлайн с 1 декабря на 1 февраля, то это не повод ждать до 20 января, чтобы вывалить проблему размером со слона на стол перед людьми, которые могут ее решать.
Мы, конечно, тоже хороши. Надо было объявлять вот тогда, неделю назад, посполито рушенье и собирать королевскую конницу и королевскую рать. А я что-то прикинул, что свою часть мы сделать успеем (ичсх, успеваем, несмотря на пару кидков от смежников) и узбагоилзя.
Ну а дальше ситуация, вызывающая у меня недоумение. Решение самой проблемы я придумал за полчаса вечером четверга. Демостенд собрал за половину пятницы. А вечером понедельника грянул гром из ясного неба, когда выяснилось, что ничего лучшего специально обученные люди не смогли.
Ну чо, я разлочил ачивку "поработал с опенстеком" - не то, чтобы гамно, просто жутко все непривычно, лежит не там, куда привык ходить и все такое. В очередной раз подтвердили пользу сорс-контроля: когда смежники без объявления войны взорвали временную схему и сутки динамили с постоянной, мы не сильно печалились, потому что драгоценные протестированные конфиги были надежно прикопаны в репозитории.
Но это фигня, мы ж не девопсы, мы админы, поэтому к нам все еще по расписанию идет Дед Мороз, а не Дед Лайн. Зато вчера грянул гром еще раз, когда стало ясно, что наша костыльно-подпорочная схема, скорее всего, подломает нашего легаси-мамонта, а сегодня ввечеру это уверенно подтвердилось, хотя усилиями мобилизованного цвета админского подразделения схема, почихав и покашляв, уверенно поехала. Кадры решают все, чо.
Короче, есть два философских, но, слава яйцам, не экзистенциальных вопроса. Первый - это как всю эту кучу разгребать; к счастью, вопрос не прикладной, потому что нашу часть кучи мы разгребли, а решеточников у нас ни одного, поэтому по существу помочь с мамонтом мы не можем. Второй - это почему админы коммитят в сорс-контроль генератор конфига и пяток скриптов "на нонешний случай", а девопсы что-то подхачивают ручками и готовятся к спортивному администрированию.
Нет, не понять мне этот мир.
elglin: (Default)
Какой основной принцип советской армии? Год не умеешь, а делаешь, год умеешь, а не делаешь.
У нас есть официальная команда девопсов, которая ранее официально называлась командой вебмастеров.
Внимание, вопрос: почему именно я срочно разворачиваю nginx в качестве балансера для полусотни бэкендов?
Ответы "потому что ты читал мануал", "потому что у тебя есть в лабе nginx как реверс-прокси" и "патамушта" не принимаются. А других, увы, нет.
elglin: (Default)
Внедрили у нас недавно продукт, который можно кратко охактеризовать, как "говна кусок на платформе из костылей и подпорок". Внедряли рукожопые нанятые варяги. Уровень рукожопости - неумение подставить private-ключ для SSH по инструкции, это не считая всего прочего. Когда начинаешь задавать какие-то вопросы на тему секурности и так далее, первый ответ: "Ачетакова, ну торчит админка в инет, и чо? Всегда так делаем".
При этом бизнес рад, что получил какую-то свою говностраничку и хочет еще, потому что обошлось дешево. Правда, если бы не наш инфобез, привлеченный к делу огородить это от ректального проникновения, хакнули бы ее в день запуска, ну или на следующий - но раз не хакнули, то с т.з. бизнеса все норм.

И жопа в том, что они всем так делают. И всем норм - а тем, у кого нет хотя бы двух-извилинных своих админов, так вдвойне норм. Бизнес мутится, деньги крутятся. Я подозреваю, что проводка в моей панельке задизайнена и разведена бухими электриками качественнее, чем бОльшая часть таких "аутсорсерных" решений. Более того, если сменить ООО "Рога и копыта" на ООО "Нимфа", то товар и исполнители будут ничуть не лучше.

Конечно, еще в 80-х писали о том, что за идеальную архитектуру и код не платят, платят за достаточно хорошие, которые приемлемо работают. Но сейчас, по ходу, платят за "хоть какие-то, которые хоть как-то работают". И вот я и думаю, зачем я парюсь каким-то дизайном, что-то читаю, пытаюсь делать пусть рукожопо, но хотя бы с заходом на нормальность.
По ходу, надо просто херачить говнопродукт руками из жопы. Так победим. Даже аргумент: "Чем больше таких, как вы, тем больше ценятся такие, как я" ни фига не помогает в силу своей изрядной неверности.
elglin: (Default)
Что-то меня потянуло на философию в последнее время.
Вот у нас есть условный поток "заказов", который к нам приходит, мы каждый пережевываем через несколько состояний этапов так, что он доходит до терминального состояния конца обработки либо сваливается в ошибку. Ну чистый конечный автомат. Совершенно легко кодится в лоб в базе путем добавления поля состояния (integer или text, кому как нравится) в табличку. Как-то совсем олдскульно, в Амазоне вот Step Functions для этого запилили. Вот для очередей, знаю, Kafka есть, а для этого что?
Решил порефакторить код, он начал валиться на ON CONFLICT UPDATE. Врубил отладочные печати, проглядел все глаза, все правильно, с синтаксисом все окей. Оказалось, что в девятом постгресе этого еще не было. Долго думал, откуда я в модном и современном своем поделии взял девятый постгрес. Конечно, придумал, но было очень обидно. Вот прям очень. Более всего обидно, что в продакшене десятка.
В рабочем чате предложил попробовать определить, что есть "приложение" и "сервис". Не то, чтобы обсмеяли, но около того. Наверное, все должно быть придумано до нас, но почему весь наш официальный штат разрабов, аналитиков и девопсов не знает? Осознал, что никто в конторе, судя по всему, никогда не заботился вопросом формального критерия (ну как критерий Коши) того, стоит приклад или лежит. Может, поэтому у нас такой бардак с мониторингом - то есть все, вроде бы, мониторится, и даже алерты летают, но все равно непонятно, что где валяется, и когда все это кончится.
Полчаса терли с коллегой за схематизированную и несхематизированную базу. Сначала почти договорились, что давайте будем модно и молодежно, пусть у нас джейсонка будет. Потом взяли листочек, начали прикидывать, какие поля где точно будут, и как селекты будут выглядеть. В итоге сошлись на олдскульной схематизации. Полное ощущение, что вот сейчас у нас модно и молодежно делать NoSQL, а тут сидят два мастодонта и рисуют таблицу по 3НФ, которая была популярна, когда они в школу ходили. Уже опосля подумал, что совершенно зря у меня в паре таблиц искусственный pkey, надо было естественный сооружать, но надо уже много всего рефакторить, чтобы переделать, от этого совсем загрустил. Толком не отрелизились, а уже обросли легаси, а все от наколеночности и бестолковости.
И вообще полное ощущение сибирского лесоруба, валящего лес топором при наличии японской бензопилы. По сути, модного и молодежного в поделии только питоновская асинхронщина, сделанная, что греха таить, чтобы эту самую асинхронщину руками потрогать, по сути-то там flask+requests хватило бы за глаза. Вебморда у нас голый HTML даже без стилей, она и в lynx-е будет хорошо смотреться, база у нас кондовый постгрес с жесткой схематизацией всех полей, по которым фильтры идут (у нас даже поля JSON, а не JSONB, чтобы не было соблазна лазить в портяночку), да и вместо контейнеров у нас systemd+venv. Короче, лет двадцать назад это писали бы почти так же, ну и где здесь, ети его, прогресс?
elglin: (Default)
Позвали меня тут приглашенной звездой на собес в смежную команду. Причем основной техсобес он прошел, и даже в головном офисе чела одобрили. Команда, есличо, называется "девопсы". Не какие-то там сраные админы и инженегры. И опасение у потенциального начальника было, что не слишком ли много чел знает для позиции.
Ну я такой посмотрел, что у чела в резюме написано "писал вебприложуху на питоне". Ну и я решил, что раз чел что-то знает, надо отступить от правил, и дать фибоначчи. Потом у меня был наполеоновский план показать кусок нашего дерьма поверх aiohttp и попросить прокомментировать.
Через пять минут я спрыгнул на классический физзбазз. Он запутался в if-ах, причем настолько, что не смог распутаться. Кусок нашего дерьма я даже показывать не стал.
Дальше я такой начал вспоминать, что я помню из SRE book, и начал ("не слишком ли много знает") задавать вопросы об идеологии мониторинга, уровне надежности и все такое. Через пару минут мне в чатик начали писать, что я гноблю соискателей, и не надо так.

Да, его решили брать. Но, думается мне, вопрос излишней квалификации отпал.
elglin: (Default)
Что будет, если мы посадим джуна Семена клепать сервера по инструкции? Если джун Семен не клинический идиот, то 9 из 10, если не 19 из 20 будут в норме, а с остальными лажа. Нормальная ситуация, humanum errare est, как говаривал старик Гораций.
И вот у нас случилось счастье, и вместо джуна Семена сервера клепает скрипт. И, в принципе, нормально, если он будет работать с надежностью джуна Семена. По-первой, конечно, сеньор Иван, писавший скрипт, будет с замиранием сердца следить за каждой сборкой. Все первые три-пять сборок. Еще 10-20 он будет лениво поглядывать в экран статуса: "ага, собрался". Еще через пару десятков все сведется к диалогу: "Вань, мы тут вчера сервак попросили, а его что-то все нет" - "Блин, и точно, скрипт отписался, что упал, а у меня это в /dev/null пересылается, ну ладно, сейчас поретраю руками".
И это, в целом, нормально. Каждый раз, когда вы открываете кран, вы ожидаете, что из него польется вода, а не произойдет старт смесителя в противоположную стену или потолок. Хотя, конечно, всякое случается.
Это я о чем, на самом деле. Есть у нас великий проэкт освоения AWS, рядом с которым меня даже пустили постоять. И есть у нас там терраформ, обвешанный кучей всякой фигни. Ну терраформ и терраформ, на мой взгляд, он пока что немного чуть хипстерский для продакшена, но это мои старческая ригидность мышления и маразм.
Да, инфраструктура-как-код, CI/CD, бараньи йайтса. И есть официальная (!) инструкция при любом изменении (ну то есть вообще любом) сначала делать terraform plan, потом долго и внимательно вкуривать в вывод, и только потом запускать.
Хотя бы потому, что штатный CI/CD офигенен: он тоже запускает этот terraform plan, когда я в это решил поиграться, то выхватил два экрана ругани... но тест прошел, и если бы я пулл не отменил, его бы, с вероятностью, смерджили на следующий день с предсказуемым (хотя нет, непредсказуемым) результатом.
Нет и не может быть никакого CD и никакого IaC в ситуации, когда вы не уверены хотя бы на 95%, что ваш фреймворк отработает, как надо. Максимум участия хумана в этой ситуации - это решение "можно-нельзя", а не "заработает-не заработает". Но всех все устраивает.
Page generated Jun. 13th, 2025 07:34 am
Powered by Dreamwidth Studios