Сообщество - Лига Сисадминов

Лига Сисадминов

2 408 постов 18 923 подписчика

Популярные теги в сообществе:

24

Русификация Windows, счетчики событий, NVME SSD и однополые браки – что тут общего

Для лиги лени: русификация Windows Server – зло и порождение союза Сатаны и Саддама Хусейна.

Часть 1, или откуда все началось
Это история из следующей статьи, но и тут пригодится.
Когда-то, давным-давно, умер у меня в дисковом массиве диск. Поскольку дело было давно, году может в 2005, а может в 2010, а может и не у меня, то детали я уже и не вспомню. Умер он странно. Вроде умер, а вроде и нет. По SMART все отлично, но. То задержки в записи по полсекунды, то ошибка записи, то еще чего-то. По каким причинам массив этот диск не выкинул, уже и не узнать, и не вспомнить.
Третьего дня (еще в феврале) у меня такая же история и НЕХ приключилась с Micron SSD (7500 PRO U.3: 3840GB). Жил себе диск жил, и вдруг полезли вверх дисковые задержки. Самое неприятное, в том, что если у классических RAID контроллеров, и классических SAS дисков, все эти SMART метрики, и не только, читаются, и даже отдаются в систему, то у Micron SSD все 2.5 утилиты, что linux-nvme - nvme-cli, что Linux \ Windows Storage Executive Software, что msecli – никаких метрик не показывают. Как и ОС показывает примерно ничего. Просто внезапно полезли задержки, и все. Как эмулировать ситуацию, в какие события смотреть – в моменте было не понятно.
По мониторингу диск или здоров, или не здоров, или мертв. Учитывая, что это NVME, то его диагностика под нагрузкой то еще развлечение. Как и диагностика, что еще пошло не так из списка: сам диск, NVME backplane, PCIe линия от процессора до диска, или же в процессоре что-то умерло - Integrated Input/Output controller (IIO), и чего в этом менять. Все вместе было не очень понятно в первые пару часов.
Конечно, после эвакуации данных, и вдумчивой сборки-разборки дисковой группы, стало чуть понятнее, но с мониторингом, и прочими observability, надо было, и будет, что-то решать.
Возможно (но это не точно) повторяется, в том или ином виде, история с
IBM HDD DTLA Click of Death, Fujitsu (припой 2000-2002), Cisco 2014 (возможно, что и Juniper) и памятью (Memory Component Issue), генераторами в 2017 (Clock Signal Component Issue).
В 2018 году мне пришлось прошивать несколько дисков, из-за слишком зеленой прошивки.
В 2019 году были большие проблемы с HPE SSD после 32.768 часов работы.
В 2020 году были проблемы у всех - Dell, HP,  Cisco SSD умирали через 40.000 часов.
Или, может, просто у меня диск умер, статистики пока нет.
Как говорил один иностранный консультант, Data center SSD смертен, но это было бы ещё полбеды. Плохо то, что он иногда внезапно смертен, вот в чем фокус!

Часть 2, или про русификацию Windows Server

Прибежали в избу дети, Второпях зовут отца:
Тятя, тятя, нету сети! И не загружаецца!

Недавно попросили посмотреть, что там у людей с системой. Посмотрел.
Я уже давно, очень давно, не видел русского Windows Server, а тут вот и он.

В чем отличие русифицированного Windows server? В том, что он русифицирован, но не просто криво, а и кусками, и криво. Меню перевели. И счетчики.
Сообщения Microsoft Defender SmartScreen перевели как «Бег» и «Отмена». Сообщения в журнале событий и без перевода порой отличаются глубиной анализа уровня «что-то пошло не так», но в русском переводе совершенно утрачивают смысл. 
Скрипты выгрузки чего-то из журналов тоже приходится подгонять под «русификацию».
В глубинах настроек Active Directory, сразу за первым меню в mmc, половина названий переведена, половина не переведена. Мастер делегирования перевели так, что у меня чуть глаза не вытекли.

И, разумеется, у людей, которые ставят русский Windows Server, все остальное сделано точно так же, то есть через жопу. Русские названия Organizational Unit (OU). Русские названия групп. Русские названия сетевых папок, серверов, всего.
Да, это работает. Пока у вас один сервер. Любая автоматизация натыкается на то, что русские буквы могут быть в виде UTF 7, 8, Win1251 и еще несколько вариантов на тему. Особым успехом пользуется одновременное использование русской с и английской c. Хорошо себя показали обе o.

Разумеется, 99% разработчиков никогда не слышали про локальные языки, поэтому часть программ требует наличия учетной записи Administrator. И не работает от учетной записи Администратор.
Да, существуют  SID (Security identifiers) и существуют Well-known SIDs, такие как S-1-5-21-500, сами посмотрите -
Get-LocalUser | ? {$_.SID -like "*-500"} ,
но кто ж их использует?
Можно умело воткнуться в русификацию групповых политик, и, особенно, в Administrative Template files (ADMX/ADML). Которые могут быть с русификацией. Но могут и не быть.

Разумеется, у людей, ставящих русский Windows, теоретическая часть тоже хромает. Репликацию AD писали люди, видевшие некоторые вещи, поэтому ее сломать так сразу нельзя. Но, кривые руки сетевиков, и информационной безопасности, плюс антивирус на контроллерах домена, плюс кое-какие настройки, дают на выходе членский билет даже не в Blue Oyster bar, а сразу в Arse Tickler's Faggot Fan Club.

Blue Oyster bar

Blue Oyster bar

Разумеется, вместо  repadmin /showrepl начинаются рассказы «да винда говно», «мы ничего не нажимали», и прочие истории «оно же пингуется, значит работает». Хотя надо было брать в руки хотя бы Test-NetConnection, и идти по списку портов с двух сторон. Потом брать палку.
У сетевиков особым успехом пользуются разные firewall с двух сторон подсетей, использование и не использование двойного NAT, и прочие прекрасные истории с асимметричной настройкой.

А за скрюченной рекой
В скрюченном домишке

От информационной безопасности имеется скрюченный из коробки антивирус, с такими же скрюченными настройками. 

Со стороны «типа админов» мало кто осиливает прочитать How to configure a firewall for Active Directory domains and trusts , и уж тем более не осиливает прочитать Guidance for configuring IPv6 in Windows for advanced users, поэтому они просто отключают фаерволл, и снимают чекбокс с IpV6. Потому что ну не понятно же, как так??
This registry value doesn't affect the state of the following check box. Even if the registry key is set to disable IPv6, the check box in the Networking tab for each interface can be selected. This is an expected behavior.

Хотя написано же, и в рамочку обведено в статье Guidance for configuring IPv6 in Windows for advanced users:
We don't recommend that you disable IPv6 or IPv6 components or unbind IPv6 from interfaces. If you do, some Windows components might not function.
Два раза написано, для совсем непонятливых:
We don't recommend unbinding IPv6 from an Ethernet or WiFi network adapter without a justifiable need. Windows is tested with, and some products and features expect, IPv6 to be bound and functional.
Unbinding IPv6 from a network adapter can result in an unsupported Windows configuration.

Часть 3, наконец, про счетчики Windows

Добрался я тогда и до них.

Общеизвестно, что счетчики и описания можно дергать более чем несколькими способами.
Все равно это живет на дне океана в  Windows Management Instrumentation (WMI):
Можно вытащить все сразу: Get-CimClass -Namespace root/CIMV2
Можно по частям: Get-CimInstance Win32_PhysicalMemory или (Get-CimInstance win32_processor).loadpercentage
Можно забирать объекты: Get-WmiObject Win32_Processor
Можно забирать счетчики: Get-Counter -ListSet *

В последнем способе и порылись русификаторы, о чем тоже написано:
Performance counter names are localized. The examples shown here use the English names of the performance objects, counters, and instances. The names will be different on a system that uses another language. Use the Get-Counter -ListSet command to see the localized names.

В ключе реестра:
Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
Лежит 1000000000 значений, и в powershell они выгружаются как TypeName: System.String.
Выглядит это как-то так:

1
1847
2
System
4
Memory

Что абсолютно не читаемо для неподготовленного человека. Возьмем код отсюда, немного допишем в читаемый вид, new-object, ну вы серьезно чтоли. Только классы, только xml, только хардкод.
Примечание. Отсюда - Querying performance counters from PowerShell – тоже можно код взять.
Примечание. Количество счетчиков зависит от ОС.
Для MS Windows server 2025 у меня вышло 4744 значения (до какого-то там патча, давно не включал эту виртуальную машину), последние ID -
7248  Responses: Successful Polling Responses/sec 
7250  Responses: Failure Polling Responses/sec 
Для Windows 11 – 5494 значения,
8352  Responses: Successful Polling Responses/sec
8354  Responses: Failure Polling Responses/sec

Часть 4, или минуточка горения

В документации к Zabbix указано, что у счетчиков, кроме имен, существуют еще и ID. И можно по ним и ходить, смотри главу 6 Windows performance counters.

Но посмотрим, что там пишут.
"\Memory\Page Reads/sec"
Попробуем:
Get-Counter "\Memory\Page Reads/sec" – так работает
Get-Counter "\4\24" – так не работает. Потому что, во первых, в документации ошибка, счетчик id не 24, а 42, Get-Counter "\4\42", но и Get-Counter "\4\42" тоже не работает.

О чем и жалуются в обсуждении Using Performance Monitor counter IDs instead of the counter names – 2, что Get-Counter -Counter "\2\10" работает, "\4\28" работает, а так нет, не работает.
И не только там, много где жалуются, например:

The following parameters can be configured for this plug-in. For object ID and counter ID parameters, it has been observed that numeric ID values for these parameter may not always be resolved by the native Windows Performance Data Helper APIs used by the PERFMON Plug-in. In such cases, it is advisable to use the corresponding text strings for the object and counter IDs over the numeric ID values. Windows Perfmon

Пойдем перебором, что остается то. Жалкие 5000 переменных, хороший повод разделить задачу на блоки по 500, и переписать как Job, но мне лень (В итоге переписал, конечно). Все равно в пределах первых 500 параметров есть только \2\10, \4\28, \52\54, \86\88, \262\388, \330\388, \582\584, \638\640, \1150\1152.
Это похоже на паттерн, немного перепишем код и вуаля:
Windows 11 – 47 "таких" счетчиков
Windows server 2025 – 53 "таких" счетчика.

Часть 5, рекомендованная литература

Performance Counters Schema
Get-StorageReliabilityCounter
Troubleshoot Storage Spaces and Storage Spaces Direct health and operational states
How to Track Down High-Latency Physical Disks in Storage Spaces Direct
Performance history for virtual hard disks
Event ID 153 Disk IO operations (Server 2019 Guest VM - HyperV) becomes unresponsive and reboots
Interpreting Event 153 Errors
Hyper-V storage I/O performance
Tips and Tools for Microsoft Hyper-V Monitoring
Проблемы с Hyper-V-StorageVSP Event ID: 8, Hyper-V-StorageVSP Event ID: 9, встречающиеся на Windows Server 2019, но резко уменьшающиеся на Windows Server 2022, согласно треду на Reddit.
Microsoft-Windows-Hyper-V-StorageVSP/Admin Source: Hyper-V-StorageVSP Event ID: 8

Все про ошибки: Microsoft-Windows-Hyper-V-StorageVSP/Admin Source: Hyper-V-StorageVSP Event ID: 9 An I/O request for device took .. milliseconds to complete
Netapp HyperV over SMB3 logs StorageVSP latency multiple times a day
Veeam Windows Server 2019 Hyper-V VM I/O Performance Problem - Page 17
Veeam  KB4717: Hyper-V Resilient Change Tracking Performance Issues

Часть 6, и про однополые браки.

Вот это - Using the ArgumentList parameter, точно писали в семье из двух мужиков.
Насчет такой русификации у меня такие же подозрения.

Часть 7, вместо финала.

Я хотел было сюда написать немного кода, но было бы чего писать.

$RKeyEng = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009'
$RKeyLocal = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\CurrentLanguage'
$CountersEng = (Get-ItemProperty -Path $RKeyEng -Name Counter).Counter
$CountersLocal = (Get-ItemProperty -Path $RKeyLocal -Name Counter).Counter
$CountersEng.count #комментарии избыточны
$CountersEng[0..5]
$CountersEng[-5..-1]

class DasKlass {
[string]$ID_Eng
[string]$ID_Local
[string]$Name_Eng
[string]$Name_Local
[string]$Digital_Bypass}

$Out1 = @()
$countersEnglishCount = $CountersEng.count / 2
for($num = 0; $num -lt $countersEnglishCount; $num++) {
$SingleCount = [DasKlass]::new()
$indexId = ($num * 2)
$SingleCount.ID_Eng = $CountersEng[$indexId]
$indexName = $indexId+1
$SingleCount.Name_Eng = $CountersEng[$indexName]
$Out1 += $SingleCount # я знаю, что на leetcode, codility и algomap.io, так делать нельзя
Remove-Variable SingleCount }

$Out1.Count
$Out1[0..3] | ft
$Out1[-3..-1] | ft

Финал.

Как была примета "русская винда в продуктиве - к проблемам", так и осталась. Ничего нового.

Показать полностью 3
249
Лига Сисадминов

Олдовость

Звонит на днях очень-очень дальний родственник. Скорее просто знакомый. Говорит, с сеткой проблемы, можешь глянуть. Ну вот выходные, поехал глянуть. Там стоматология, два здания рядом, в одном чистенько-красивенько, там людей принимают. В другом зуботехническая мастерская. Между ними висит провод. Железо тупое, пяток неуправляемых свитчей и роутер, какой то микротик.

Сеть лежит. Внутри каждого из зданий иногда что то пингуется, между зданиями - ноль. Ага, думаю. Где то косяк. Ищу уходящий в соседнее здание провод, отключаю. Сразу сеть внутри него начинает работать. Во втором хрень продолжается... Ага думаю. Там где то проблема... Во втором здании пытаюсь понять, что - где не так. Вроде всё норм, и тут до меня доходит что линк приходящий из первого зданий - горит. Спрашиваю у товарища, а нет ли какого оборудования, замурованного в невидимых местах? Естественно он не в курсе. Ну чо, берём лесенку, лезем ввысь, сначала снаружи, внимательно осматриваю. Там стальной трос, к нему изолентой примотаны три FTP кабеля по всей длине. Внутрь при моих габаритах лезть не получится, там типа технический чердак толщиной с пол метра. Уточняю, не лазил ли кто, непосредственно перед началом проблем, по этому чердаку. По этому - нет, но во втором здании, зуботехники запихали в свой (там уже обычный) чердак некоторые ненужные расходники. Радостно лезу туда и нахожу, чтобы вы думали? Правильно, древнейший стомегабитный 8и-портовый 3COM`овский свитч. И в него воткнуто две FTP`хи и кабель который идёт вниз. Выдёргиваю одну, включаю то что отключил ранее - всё отлично. Везде сеть.

Как в дальнейшем и оказалось, тривиальное кольцо. То есть чувак который залез на чердак, увидел лежащий рядом со свитчем коннектор, взяли воткнул его в свитч. Зачем там было их два? - ну могу предположить, что где то в начале нулевых, это было резервирование воздушки, вдруг один кабель порвётся, можно второй переткнуть по быстрому. Но оказалось что оба пережили больше двух десятков лет и вполне рабочие. Ну и живучесть свитчей поразительная. Не стал их трогать, пусть живут.

ЗЫ: Куда шел третий кабель - я не знаю. Выяснять не стал.

Показать полностью
23

В продолжение Линь vs Вынь

Вот как переименовать сервер в винде? ПКМ, свойства, имя компьютера, изменить параметры, Изменить, новое имя, ок, перезагрузка, работаем.
Как изменить имя в деб, например? Правим hostname, hosts, ищем где в каких конфигах служб оно еще указано, ребут, служба отвалилась, где забыли поменять, почта не приходит ( там пропустили). И это еще мы имя ноды прокса не не меняли. Там поинтересней) Чисто теоретически в конфигах можно переменную соответствующую применять, но кто это делает?
Или вот сетевых у тебя 16. Это ж, блин, чтобы их работу проверить, пиши все имена в interfaces, да с обвязочкой. Винда тебе все попапами покажет при подключении, делать ничего не надо.

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

Логи фильтровать в лине- помнить ключи от разных команд, а они цуко, не единого формата, типа как в PS. А если логи в двоичном формате, да еще зажаты в архивы - помни еще яток команд с ключами и их последовательностью. В винде фильтр наклацал мышкой, вбил слова и смотри что и когда происходило и как часто, удобненько.
И как часто в организациях, использующих линь, применяется центры авторизации и аутентификации? Это ж пц, на серваках работают от рута, передают пассворд его людям с наказом не болтать. Или сложно это, типа FreeIPA развернуть - не поле перейти, или я не знаю почему так, но не делают. Хотя даже IPMI такое поддерживает. В винде если работников выше 10 и надо порезать по правам, ставят AD и не парятся. Наклацивают политики, устанавливаемый софт, кто чё может и оно работает. Не встретил ещё, кто бы такое воздвиг в лине, видимо задолбаться правкой текстовиков желающих мало)
На десктопе, стоит убунта с гномом. И как ярлык на рабочий стол? Или с него же запустить программу? А файл текстовый создать на нем? - Ничего нет, кроме создать папку :( Иди разбирайся, как это сделать. Благо есть другие оболочки, в которых это в какой то мере допилено, но везде разной степени удобности. Что там в винде? ПКМ и готово. За ручку проведут, да еще проверят, что не фигню ввёл.

Доступ к последовательному порту? В лине буть добр включить себя в группу dialout или что то такое(выясни что именно); в винде -добро пожаловать, ОС к вашим услугам немедленно.

Вирусы на винде, говорите? А вы сидите ограниченным в правах пользователем, как стандартно под линухом, дюже меньше будут доставать.
В общем, ничего нового, ось под задачи ставить и знать и то и то желательно, в дополнении к умениям механика, слесаря, электрика, плиточника, сантехника и немного терапевта :)

Показать полностью
50

Про СПО сектантов, и что с этим делать. Вступление к пособию по карго-культам в ИТ

Для лиги лени: Ничего не делать. Дурака учить — только портить.

Лет, наверное, 10-15 назад, давно – может в 2010, может в 2015, где-то в далекой-далекой галактике происходила очередная битва. Эпические сказания доносят до нас, хотя и в несколько нудноватой форме, величественную картину колоссальных сражений на пустом месте.
Остались с той поры лишь схема бугуртовоза, да Шпаргалка по общению с СПО-сектантами.

С тех пор прошли годы, и время все расставило на свои места.

Microsoft Windows на десктопе живее всех живых, это ужасно раздражает тех, кто с 2000 обещает «год победы Linux на десктопе». Сами MS активно вкладываются в Linux, давно затащив туда .Net и powershell.
Wine живее всех живых, но работает ой как не всегда. Заявления «Да мы! Да сейчас! Как перепишем» - «импортозамещение без глянца» показывает, что никто ничего переписывать не собирался.
Зато теперь какие-то альтернативно одаренные, причем почти исключительно в русскоязычном сообществе, забыли, что GNU's Not UNIX. Деградация части русскоязычного сообщества зашла так далеко, что люди не стесняются писать в резюме «линукс админ», но при этом не знают, что такое GNU.

GNU's Not UNIX.

GNU's Not UNIX.

Что касается Unix и FreeBSD, то они где-то, безусловно, есть. В виде той же доживающей HP-UX 11i v3 – EoL 31 декабря 2025 года.

Что же касается фирм, то:
Microsoft разработала свой Azure Linux, и переезжает на него везде, где можно, вместе умершего, и вернувшегося с клатбища дистрибутивов, Centos.
Linux на телефоне существует в каком-то отдельном закутке, даже Huawei не стал ее тащить. HarmonyOS NEXT. – вообще не Linux, хотя openEuler еще как-то Linux, хотя LiteOS вроде и не Linux.
Red Hat был куплен IBM, теперь в эту нишу лезут корейцы с Naver, с их сборкой из OpenELA.
Если посмотреть на List of Linux distributions, то окажется, что осталось не так много веток:
Debian-based, в том числе Ubuntu-based,
«Импортозамещателям» на заметку. Торговой маркой Debian владеет фирма SPI (Software in the Public Interest ), зарегистрированная в штате Нью-Йорк, США).

Red Hat / RHEL / SUSE / openSUSE, Fedora,
ALT Linux,
И всякие «полезные в ограниченных сценариях» - DD-WRT, Alpine.

Само ядро Linux используется много где, с переменным успехом. Windows в схожих сценариях тоже вполне используется, в прошлом году я летал в Китай – там на турникетах в аэропорту стоит Windows 7 (embedded).
Отдельно отмечу кривые руки импортозаместителей, у которых нет представления о том, что под Linux не пишут код так же криво, как под Windows. Но они умудряются. Как следствие, все, покушавшие большой ложкой «импортозамещения», плачут, что больно каждый раз по новому.

За годы развития ряд продуктов, который должен был бороться со злом, примкнул к нему.

Часть продуктов просто остановилась в развитии. Багфикс и добавление еще одного слоя самоотвердевающего эко-био-френдли клея просто добавляют еще один слой клея.

Весь этот горький катаклизм, который я тут наблюдаю, представляет собой итог завершенного процесса доедания Злыми Корпоратами – маленького, но такого свободного сообщества. Движение есть, результат – прибыль корпораций растет, Злая Корпорация, Добрая Корпорация, и Еще Одна Корпорация – продают свободный продукт и его поддержку за дорого, и за очень дорого.

Итогом движения стало появление Linux эникея. Да, Linux эникей может поставить Ubuntu GUI, и даже запустить 1 (один) контейнер по руководству. Не сложнее, чем на телевизоре канал переключить, тем более что на телевизоре тот же Android, который, когда надо, Linux.

Следующая ветка развития ИТ, извращенная хитрым планом Архитектора Судеб – это devops.

DevOps is the integration and automation of the software development and information technology operations.

DevOps is the integration and automation of the software development and information technology operations.

DevOps is the integration and automation of the software development and information technology operations.

Изначально идея была понятна. Сложность ПО выросла, стало критично убирать самые большие баги до продакшена, и выделять не основную задачу, deploy – на отдельную ветку специалистов.
Но, работать с багами дорого. Та же VMware, даже пока была VMware, решила, что денег нет, поэтому будем тестировать на пользователях. Тащить непроверенное в прод, экономя на юнит тестах, автотестах, интеграции и ручном тестировании, это не российская традиция. Последними ударно выступили CrowdStrike, хотя и Microsoft выступает раз в квартал. Intel выступает так, что один финн постоянно орет, как потерпевший. Что в 2020, что в 2022, что в 2024. Как будто он что-то понимает.

Поэтому давайте заведем отдельных людей, которые будут и не разработчики, и не операционщики, а как бы и там и тут. Обмажем все магией дружбы, и назовем это девопс.

Не тут то было. Дружба это магия, а несанкционированная магия это ересь.

Магия - это ересь

Магия - это ересь

Вся идеология девопс сравнительно быстро выродилась в массах в переименование middle Linux-администраторов, которых привлекали к чему угодно. Ansible, terraform, zabbix, ELK – devops. В последние лет, наверное, 5, тенденция называть любого Linux админа – девопсом, приняла в мире, да и в РФ, какие-то ужасающие масштабы. Конечно, этому способствовали и цыганские курсы

цыганские курсы по домикам на колесах

цыганские курсы по домикам на колесах

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

Первый раз я эти микросервисы и конвейер – недоброкер видел еще в 2005 году, и тогда это называлось «костыли на костылях».

Дело, как мне кажется, в деньгах. Большой и действительно сложный монолит рано или поздно перерастает некую сложность кода, и становится сборищем костылей и велосипедов.

 

 

Возникает «новая свежая» идея: давайте сделаем Unix-way, много маленьких сервисов, каждый из которых выполняет одну маленькую задачу. Допустим, обслуживает десяток запросов от пользователей. И второй экземпляр сервиса обслуживает еще десяток. И все это за отказоустойчивым балансером. И все это утыкается в базу данных, которая 10 лет подряд дописывалась до того, чтобы ее планировщик оптимизировал кривые планы запросов, и мог сам балансировать очереди, соблюдая при этом ACID (Atomicity, Consistency, Isolation, Durability). Остались три мелочи: скорость, надежность балансировки, надежность и доступность базы данных

В некоторых сценариях не так важно, как быстро будет обработан запрос внутри системы, за 0.01 или за 0.05 секунды, потому что до потребителя ответ будет идти 0.1 -0.2 секунды. Как от меня до части облака в соседнем регионе.
В некоторых сценариях наоборот, рост с 0.01 до 0.02 секунд на каждом этапе обработки, замедляет работу в сотни раз. Почему так, спросите вы? Да потому, простая математика.
Допустим, у вас приложение формировало сетевой запрос к размещенной на этом же сервере базе данных. Скорость обработки, плюс минус, находится в том же порядке скоростей, что и обработка драйвера в оперативной памяти. Это 0.500 – 0.600 наносекунд, см. CAS latency .
Пользуясь случаем, в очередной раз хочу переделать привет любителям душить одноглазую змею при слове «импортозамещение на 350 нм литографе». Память SDRAM имеет Column address strobe latency в 10 ns, DDR SDRAM – в 3000-5000. DDR5 SDRAM – от 0.208 ns, разница не просто на порядки, а на десятки десятичных порядков. Потому что расстояние 30 нанометров волна проходит быстрее, чем 350, а ячейка размерами 90 на 90 нанометров заполняется в разы быстрее, чем ячейка 1050 на 1050 нанометров. Не только поэтому, конечно, но физика имеет значение. Хотя первое слово все равно приезжало через 22, а сейчас через 15, но восьмое слово приезжает не за 75, а за 11-15 ns.

Если сервис базы данных  уезжает на соседний хост, то и это не беда, но запрос теперь выполняется не 1-2 наносекунды, а на 500 – 600 наносекунд дольше, но все равно выполняется асинхронно (если приложение поддерживает асинхронность), и быстро. И то, на новых аристах обещают 3.95ns per hop и 150ns l3.  

И тут кто-то, как начальник того испанца из ролика (Хуан Хойя Борха) говорит: микросервисы.

Все делим, кладем и готово. Про задержки никто не думает, зачастую со словами «ну какие задержки, у нас 10G сеть, а не хватит 10G – соберем LAG и включим Jumbo frame».
Думать головой никто даже не пытается, путая пропускную способность и задержки. Теоретически, это связанные вещи, если говорить про передачу одного пакета в вакууме. Один пакет отправили, подтверждение получили, еще один пакет отправили.
Только это уже 25 лет не так. Уже 25 лет в TCP есть и TCP window scale, и TCP Retransmissions.
Можно очень бодро наступить на детские грабли того вида, что вносимая сетевая задержка при разнесении хостов, и даже вносимая задержка по перекладыванию данных в сетевой стек и обратно, вместо обработки их внутри алгоритмов и структур данных монолитного приложения, вносит задержки, делающие приложение неработоспособным, причем с нелинейным падением производительности. Нелинейное падение – это когда тестер нагружает приложение 100 потоками данных, и приложение работает за, условно, не более 0.1 секунды за поток. В боевых условиях набору микросервисов дают обработать 1000 потоков, и оно должно было бы работать за, хотя бы, 0.2 секунды, а оно работает за 2 секунды, и это очень много. Достаточно чтобы с треском весь набор упал. Потому что некоторые запросы, как оказалось, не асинхронные, а очень даже последовательные, и, пока 100 запросов работали в тесте по 0.01 секунды, было ок – потому что тестовая база и тестовый контейнер были в пределах одного сервера, или хотя бы одной стойки, и одного L2 сегмента. Как реальная база и контейнер уехали, хорошо если в пределы хотя бы одного ЦОД и пары соседних стоек. Но что будет, если у вас не просто метро, а очень длинное метро, или даже не метро, а MPLS, и внутри его еще и VPN ? А запросы, напомню, последовательные?
Отдельно надо рассматривать работу шины \ брокера, вносимые ей задержки и вообще применимость.
Иногда ок. Иногда сойдет. Иногда не годится.

В какой-то степени, иногда, это нивелируется тем, что и память стала работать быстрее, и сетевые карты стали умнее (и глючнее), и SSD перешли от SAS к NVME, и SSD перестали так ужасно тормозить, по сравнению с 3D XPoint (Optane). Иногда наоборот, иногда умелые ручки покупают самые дешевые домашние SSD, с их копеечными буферами, отсутствием защиты по питанию, и прошивкой без постоянной сборки мусора. Втыкают это все через Proxmox, в Proxmox через RAID, и получают, рано или поздно, отсутствие Background garbage collection и Write amplification такого приятного состояния, что око ужаса не просто сжимается, а может перекусить лом.

Проблема, как и 15-20 лет назад, не в девопс, линукс, опенсорс итд, а в том , что архитекторы часто стали забывать, что внизу, под фрейворками и контейнерами, все равно находится железо, и у него есть физические пределы. Некоторые вещи из физического мира все равно надо учитывать, хоть в облаке, хоть обвешавших NVME Kioxa Gen 666. И особенно, если у вас практикуется кроилово везде.

Отдельно надо упомянуть культы.
Культ сайдкаров.

Культ недавно запретили, но он возродился с новым именем. Тут же надо вспомнить секту свидетелей безопасного секса с микросегментацией. Не знаю, кто из четверки за это отвечает. То есть, знаю. Эту тетю (и, в то же время, дядю), с мечом от гномов, и своим таким же, кто-то из отцов основателей в Химках видал. В теории то хорошо, красиво, безопасно.
Потом, правда, крики боли – кококо, кокого из-за истио взлетели задержки, и все встало колом.

Культ Грефневой.
Ничего не буду писать.

Культ Шины.
Хорошо разобран на русском на примере Platfrom V Synapse.

Культ Кролика Убийцы, Rabbit of Caerbannog.

Вы знаете что делать – досчитать до трех.
Допреже всего Пресвятую Чеку извлечь долженствует. Опосля же того, сочти до трех, не более и не менее. Три есть цифирь, до коей счесть потребно, и сочтенья твои суть три. До четырех счесть не моги, паче же до двух, опричь токмо коли продолжишь до трех считать. О пяти и речи быть не может. Аще же достигнешь ты цифири три, что есть и пребудет третьею цифирью.
Книга Вооружения, часть четвертая, стих с 16 по 20.
Then did he raise on high the Holy Hand Grenade of Antioch, saying, "Bless this, O Lord, that with it thou mayst blow thine enemies to tiny bits, in thy mercy." And the people did rejoice and did feast upon the lambs and toads and tree-sloths and fruit-bats and orangutans and breakfast cereals ... Now did the Lord say, "First thou pullest the Holy Pin. Then thou must count to three. Three shall be the number of the counting and the number of the counting shall be three. Four shalt thou not count, neither shalt thou count two, excepting that thou then proceedeth to three. Five is right out. Once the number three, being the number of the counting, be reached, then lobbest thou the Holy Hand Grenade in the direction of thine foe, who, being naughty in my sight, shall snuff it."
A reading from the Book of Armaments, Chapter 4, Verses 16 to 20

Культ Запихивания Невпихуемого Statefull Монолита.
Культ настолько отвратителен, что про него ничего не будет в этой истории. Просто знайте, что он есть. Отличительный знак сторонников культа – медведь, собирающий грибы в лису.

Финал, то есть призыв.

Соблюдайте умеренность. Не надо все рубить на куски с криками «контейнеры для микросервисов, ноды к трону кубера».

Показать полностью 8
74

Ответ на пост «Еще раз про влажные мечты про 350 нм или почему все резко забыли про линии 130 и 90 нм»1

Вы правильно все написали. Не хочется писать банальности, что сложными техническими проектами должны заниматься инженеры , а не эффективные менеджеры распильщики, освоившие бюджет до поставки оборудования. Вопрос не в отдельном литографе или запуске отдельной линейки на 90-45нм, с выпуском тестового кристалла, это частности не меняющие общую картину. Вопрос в том , что нужен нормальный отечественный чип мейкер с соответствующей инфраструктурой, которая включает разнообразие заточенных под тех.процесс библиотек, широкий набор топологий IP блоков ( процессорных ядер, АЦП, I/O падла, pll и т.д.), обеспечении нормального дизайн сервиса с графиком выпуска шатлов, прогнозируемыми сроками разработки и постановки на производсто и выходным годных и т.д. во многих случаях 180нм было бы достаточно, в существующей реальности сильно подозреваю, что не могут вытащить да же те возможности , которые есть в 180 нм. Это должно быть целью , а не отдельные ура -ура проекты, типа сделали литограф или тестовый Кристал по 65нм. Нормально работающий бизнес сам подтянет необходимое оборудование и решит тех.проблемы пусть и с гос.субсидированием. если что я из тех, кого называют турбопатриотами.

43

Ответ на пост «Почему мы не боимся джунов»1

Быстро пробегусь по свежему маркетинговому выс продукту, пока он не засох, а у меня обеденный кофе.

Для ЛЛ: реклама Git in Sky, под видом статьи.

Мы умеем брать людей, которые только начинают свой путь, и делать из них уверенных и компетентных специалистов.

В прошлой статье был озвучен штат, 10-12 человек. Джунов там может быть 1 (один).

Сениоров мы рассматриваем сразу на роль архитекторов;

Это принципиально разные роли. Опять пустили маркетологов, и нет бы на хабр, где только маркетинг и остался.

мидлов растим до архитекторов внутри — стараемся построить рабочий процесс так, чтобы они брали на себя больше ответственности: договаривались с клиентом, вели мелкие шаги по проекту

То есть денег нет настолько, что разработчики, или админы, или девопс-инженеры, еще и как РП работают.

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

Напоминаю, что эта "культура", описанная в предпоследнем тексте - звонки посреди ночи, и полное отсутствие HA на уровне архитектуры.

Особенность нашей работы такова, что на проекте придется чаще всего оставаться с этими проблемами один на один.

То есть техподдержку вендора не купили, команды нет. Денег нет, но вы держитесь.

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

Гуглить, почему в ваше внутреннее окружение дженкинс не затащил переменную? Пустили маркетологов в интернет, интернет от этого тупеет.

Да, говорят, что переработки — это плохо — ненормированный график, нарушение баланса работы и личной жизни и т.п. Но это лишь часть картины. Зато мы можем себе позволить работать всего несколько часов в день, используя в том числе и рабочее время для выполнения каких-то личных дел.

Это означает и отсутствие резервирования, и отсутствие архитектуры, затыкаемое по классике:
Мы жуки-плавунцы или мужики российские ржаные гречневые? Али не выйдем на недоплачиваемые смены? За гроши совестью мужицкой приторговали?

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

на 99% все курсы, которые сейчас есть в интернете, построены вокруг изучения только лишь базовых инструментов — как собирать Docker

Из исходников собирать ?

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

В предпоследнем тексте звонили в 5 утра, "не дергали".
Маркетологи такие маркетологи, не помнят, что писали сами

При нормально построенном наставничестве джун до сениора может вырасти за 5 лет.

Спорно. Начиная с того, что 5 лет наставничества означает потерю 5 человеко-лет 2 сеньоров и 2 мидлов.

Показать полностью
Отличная работа, все прочитано!