Pull to refresh
5
0.3
Send message

От Docker Compose к кластеру: миграция 20+ контейнерного монолита в трехузловой Swarm

Level of difficultyMedium
Reading time25 min
Reach and readers7.5K

Я работаю DevOps-инженером в команде разработки продукта Колибри-АРМ, аналога Microsoft SCCM, покрывающего потребности в импортозамещении ПО для управления парком АРМ. В данной статье будет описан кейс решения задачи по обеспечению высокой доступности продукта – она будет по большей части описывать перенос непосредственно функциональности, и тут не будут рассматриваться такие аспекты как безопасность кластера и приложения внутри.

Читать далее

Не делайте рефакторинг как дядя Боб. Я вас умоляю

Level of difficultyEasy
Reading time7 min
Reach and readers50K

Несмотря на то, что книга «Чистый код» привнесла в наш лексикон прекрасный термин, она также снискала и дурную славу. Это руководство от 2008 года представляет собой сборник принципов и исследований, которые «дядя Боб» (Uncle Bob, то есть Роберт Мартин) выработал за годы программирования.

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

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

Можно подумать...

Читать далее

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

Level of difficultyEasy
Reading time11 min
Reach and readers125K

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

Опыт австралийских ферм подсказал дерзкое решение: построить полностью автономный дом, игнорируя аппетиты местных коммунальщиков. Сбор дождевой воды, свои киловатты и никаких квитанций в почтовом ящике — звучит утопично, но система уже прошла проверку реальностью.

Читать далее

Звёздная болезнь: как научиться разбираться в ночном небе, чтоб пофлексить перед друзьями

Level of difficultyEasy
Reading time10 min
Reach and readers30K

Представьте: вы гуляете по ночному парку с прекрасной девушкой после романтического вечера в ресторане. Тут перед вами открывается полянка, а над ней — летнее небо, полное звезд. Вы невзначай говорите: “о, смотри, сейчас Плеяды особенно яркие”! Показываете на небо, девушка прижимается к вам поближе, чтобы разглядеть, куда же вы показываете, и…Ну дальше все в ваших руках. А вот не знали бы, где Плеяды — и все, так и пошли бы грустно по домам. В этом посте расскажу, как научиться различать созвездия, что можно наблюдать невооруженным взглядом, как выбрать первые девайсы и всякое такое.

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

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

Вперед, к звёздам!

Мониторинг Angie с Prometheus и Grafana

Level of difficultyEasy
Reading time5 min
Reach and readers8.8K

Контроль основных метрик веб‑сервера или балансировщика — основа надежной работы системы. Ранее мы разбирали работу с мониторингом через API и Angie Console Light, но это не единственный вариант, доступный в Angie. Использование встроенного экспортера Prometheus и визуализация через Grafana дают принципиально другие возможности. Итак, в этой статье мы запустим полноценную систему мониторинга Angie.

Читать далее

Мои личные скрипты для повседневной работы

Level of difficultyEasy
Reading time9 min
Reach and readers52K

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

Читать далее

Уровни изоляции транзакций: практическая механика и сравнение PostgreSQL, MySQL, Oracle, SQL Server и DB2

Level of difficultyMedium
Reading time11 min
Reach and readers9.3K

Транзакции — не про «магическое ACID», а про конкретную механику согласованного доступа к данным под нагрузкой.

Эта статья объясняет как реально работают уровни изоляции и чем отличаются популярные СУБД на практике.

Мы разберём:

Читать далее

Как быстро избавиться от лагов на сервере по методике RED S.O.S

Level of difficultyMedium
Reading time3 min
Reach and readers8K

Представьте: вы получаете алерт "сервер тормозит" или замечаете странные лаги в приложении. Отставить панику)) В этой статье мы разберем, как провести технический осмотр Linux-сервера и найти корень проблемы без углубления в тонны логов.

Сейчас расскажем вам про методику RED S.O.S. - структурированный подход, который превращает хаотичную проверку в системный диагноз. Это ваш чеклист для экстренного реагирования. Он не заменяет системы мониторинга (Prometheus, Zabbix), но дает моментальный снимок здоровья системы.

Фокус здесь на ключевых ресурсах: Resources (Ресурсы), Errors (Ошибки), Dependencies (Зависимости)

Читать далее

Как я лишился законного перерыва на кофе и заодно ускорил Selenium тесты в 40 раз

Level of difficultyEasy
Reading time6 min
Reach and readers6.8K

Однажды мне предложили попробовать написать автотест для этого проекта, чтобы понять, будет ли мой подход эффективнее. Я использовал базовый Page Object Pattern и немного модифицированные (ради стабильности) методы Selenium. В результате получился выигрыш в ~10–15%. То есть смысла переписывать тесты особо не было.

Это стало отправной точкой. С тех пор прошло около 10 месяцев: я сменил несколько проектов, и на последнем количество тестов перевалило за сотню, а время выполнения превысило час. В целом ничего критичного — приходишь утром, запускаешь тесты и… спокойно идешь делать кофе или чай. Возвращаешься, проверяешь статусы задач, почту, составляешь план на день и т. д.

Круто? Да. Вот только при росте количества тестов очевидно вырастет и время выполнения. Ещё пара сотен тестов — и я буду успевать сгонять за кофе на другой конец города и обратно. Так что нужно искать решение.

Читать далее

Про свёрла

Level of difficultyEasy
Reading time10 min
Reach and readers57K

Очень плохая реклама от одного красного магазина инструментов спровоцировала меня сделать свой ликбез по свёрлам. Предлагаю расширить кругозор в слесарном деле — разобраться во всём зоопарке свёрл, доступных и недоступных в ближайшем строительном магазине. Мы не будем углубляться в тонкости обработки материалов резанием — просто расширим кругозор, чтобы, когда жизнь заставит «проковырять дырочку», вы использовали подходящий инструмент.

Читать далее

10 треков, которые обязательно стоит запустить для проверки акустики

Reading time5 min
Reach and readers32K

Салют, Хабр!

Я Артур, CPO умных колонок Sber. Я отвечаю за создание наших умных колонок, в том числе за предмет этой статьи — их звучание.

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

Чтобы оценить аудиосистему, нужны музыкальные треки, которые раскроют весь её потенциал и способность передавать разные аспекты музыки. Собрали 10 треков, которые используем в работе, оценивая любые колонки. Рассказываем, как проверяют звучание устройств и как мы тестируем его при разработке умных колонок; делимся плейлистом для проверки, насколько совершенно ваше аудиоустройство.    

Читать далее

База про юнит-тесты в C# на xUnit v3

Level of difficultyEasy
Reading time6 min
Reach and readers3.7K

Привет, Хабр!

Сегодня разберёмся с юнит‑тестами в C# на основе xUnit v3 — библиотеки, которая стала практически стандартом де‑факто в.NET‑среде.

Почему именно xUnit? Всё просто: его создали Джим Ньюкирк и Брэд Уилсон — разработчики NUnit. Они решили выкинуть всю архаику вроде [SetUp], [TearDown] и прочих рудиментов и построили фреймворк с нуля, строго под TDD. Весной вышла xUnit v3 2.0.2, в которой завезли Assert.MultipleAsync, полностью обновили сериализацию. А в.NET 9 уже штатно продвигается Microsoft.Testing.Platform (MTP) — сверхлёгкий тестовый рантайм, с которым xUnit v3 работает прямо из коробки. Короче говоря, это самый нативный выбор под.NET 9 на сегодня.

Читать далее

Агрессивный автовакуум —  ужасный to prevent wraparound, зачем он нужен и как держать его в узде

Level of difficultyEasy
Reading time17 min
Reach and readers1.9K

Привет! На связи Дмитрий Руденко из команды Databases Т-Банка.

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

Один из таких аспектов  —  процесс уборки мусора, — autovacuum, вычищающий мертвые версии строк таблиц. В статье рассмотрим причины возникновения одного из самых неприятных подвидов —  autovacuum: to prevent wraparound.

Читать далее

Автоматизация тестов в .NET: мой опыт со Storm Petrel

Reading time20 min
Reach and readers985

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

В этой статье мы рассмотрим Scand Storm Petrel — инструмент для .NET-разработчиков, который автоматизирует однотипную работу по формированию и обновлению ожидаемых значений в тестах. Это особенно актуально при большом количестве тестовых сценариев или сложной структуре тестируемых объектов, что является неотъемлемой частью разработки современных приложений.

Читать далее

Minimal API: Избавляемся от устаревающих контроллеров в ASP.NET Core

Level of difficultyMedium
Reading time14 min
Reach and readers6.9K

Я, думаю, многие уже слышали о появившихся в .NET 6 Minimal API - легковесной замене контроллеров/MVC. Кто-то уже успел ознакомиться и задался вопросом: "Ваше API в 3 строчки, это, конечно, здорово, но как это будет работать в реальном проекте с сотнями эндпоинтов, кучей фильтров, аттрибутов, расширениями OpenAPI/Swagger и прочих радостях?"

В этой статье я хочу ответить на этот вопрос: пройдемся от основ, преимуществ, недостатков, и закончим нюансами работы и проблемами, которые обязательно возникнут при миграции с контроллеров на Minimal API в крупном проекте.

А забегая чуть вперед: если думаете, стоит ли переводить проект на Mini API, вот вам сразу полезная информация: они могут жить в проекте вместе, причем даже без дублирования инфраструктуры: не обязательно переводить все разом - подробнее под катом.

Бонусом, заменим SwaggerGen на реализацию OpenAPI от Microsoft.

Читать далее

Руководство по администрированию Linux для начинающих

Level of difficultyEasy
Reading time7 min
Reach and readers18K

Для начинающих в системном администрировании Linux важно не просто знать команды, а понимать, как устроена система и как эффективно управлять её основными компонентами — файлами, сетью и процессами. Эта статья предлагает структурированное и доступное введение в ключевые аспекты администрирования Linux, которые помогут быстро освоить базовые инструменты и заложить прочный фундамент для дальнейшего развития.

Читать далее

Какие есть альтернативы Prometheus, если для метрик его стало недостаточно

Level of difficultyMedium
Reading time17 min
Reach and readers6.1K

Prometheus прекрасно подходит для краткосрочного мониторинга, но у этого решения есть свои ограничения по масштабу, и если вы столкнулись с высоким потреблением памяти/CPU, снижением скорости запросов или вам требуются уникальные лейблы вида user ID, то стоит подумать над внедрением альтернатив. На наш взгляд следующими после Prometheus в линейке стоят Thanos, Cortex, Mimir или VictoriaMetrics. Объективное, насколько это возможно, сравнение характеристик этих решений мы и проведем ниже.


СОДЕРЖАНИЕ


0. В каких случаях нужно задуматься о замене Prometheus
1. Обзор решений для долгосрочного хранения метрик
2. Сравнение решений: Thanos, Cortex, Mimir и VictoriaMetrics
3. Как выбрать подходящее решение
4. Миграция с Prometheus на долгосрочное хранилище
5. Сохранение алертов и дашбордов
6. Как избежать потери данных при миграции
7. Лучшие практики эксплуатации долгосрочного хранилища метрик
8. Высокая доступность и избыточность
9. Мониторинг состояния хранилища метрик
10. Обработка долгосрочных запросов и типовые ошибки

11. Обслуживание и обновления (Maintenance & Upgrades)
12. Итого. Как жить с продакшн-наблюдением

Читать дальше →

Переезд с Nginx на Angie. Пошаговая инструкция

Level of difficultyEasy
Reading time4 min
Reach and readers6.9K

Итак, вы решили использовать Angie как замену Nginx. С чего начать процесс? Какие аспекты нужно учитывать при переходе? Разберёмся со всем по порядку.

Напомню, что Angie является форком Nginx. Это значительно упрощает процесс переезда с Nginx на Angie, так как Angie поддерживает все возможности и директивы конфигурации, что и Nginx. Обратный переход с Angie на Nginx может быть уже не таким простым, если мы начинаем использовать уникальные возможности Angie (например, возможности проксирования или балансировки).

Начнём с подготовки системы к миграции.

Читать далее

Работа с длинными строками в PostgreSQL

Level of difficultyMedium
Reading time9 min
Reach and readers4.6K

Если в таблицах БД PostgreSQL есть поля большого размера, при выгрузке часть строк таких таблиц может не выгружаться с выдачей ошибки ERROR: out of memory. Столкнуться с подобной ситуацией можно, например, при выгрузке утилитой pg_dump таблиц, в которых хранятся XML-документы, или при выгрузке таблицы public.config системы «1C:Предприятие». В статье рассматриваются причины возникновения подобных ошибок и способы решения проблемы.

Читать далее

Nerdlog: быстрый TUI-просмотрщик логов с удаленных хостов, с таймлайном, без сервера

Level of difficultyEasy
Reading time17 min
Reach and readers1.6K

(Или как я написал радикально простую альтернативу Graylog)

В 2022 году я и моя команда работали над сервисом, который выводил довольно большой объём логов с распределённого кластера из 20+ хостов — всего около 2–3 миллионов сообщений в час. Мы тогда использовали Graylog, и запрос логов за последний час выполнялся за 1–3 секунды — довольно быстро. Однако, инженеры по инфраструктуре хотели избавиться от Graylog — он требовал от них утомительного обслуживания, и в итоге было принято решение перейти на Splunk. Когда Splunk наконец внедрили, мне пришлось с удивлением обнаружить, что он работает невероятно, возмутительно медленно. Тот же запрос выполнялся не за секунды, а за минуты. В чем там было дело, и можно ли это улучшить - никто разбираться не хотел.

Мне это показалось абсурдным. 2–3 миллиона логов в час — это не так уж и много, и мне казалось, что с помощью старых добрых GNU утилит и обычных лог-файлов, без какого-либо централизованного сервера для логов, можно добиться примерно такой же скорости, как у Graylog (и по крайней мере, гораздо быстрее, чем Splunk), и этого было бы достаточно для большинства наших задач.

Так и начался проект: я не мог перестать об этом думать, взял отпуск на неделю и устроил себе личный хакатон, чтобы написать прототип: просмотрщик логов с простым но удобным TUI интерфейсом, включающим таймлайн-гистограмму. Он подключался к хостам по SSH и анализировал обычные лог-файлы с помощью GNU-утилит bash + tail + head + awk.

Читать далее

Information

Rating
2,477-th
Registered
Activity