Статья
Обзор хабра: отказоустойчивость, аллокаторы, ошибки и миграции
Сегодняшние материалы сосредоточены на инженерной культуре и практических решениях. Ключевые темы: философия принятия неизбежности сбоев, оптимизация памяти для игровых движков, важность культуры ошибок в командах и практический опыт миграц
Коротко
- Сбои в системах неизбежны, и к этому нужно готовиться.
- Специализированные аллокаторы памяти критически важны для производительности в геймдеве.
- Культура, где ошибки не скрывают, а изучают, повышает надежность команд.
- Старые сетевые устройства могут вызывать серьезные утечки памяти в современных веб-приложениях.
- Миграция с Zeppelin на другие инструменты аналитики — сложный, но выполнимый процесс.
Философия надежности и сбоев
Что случилось
В сообществе обсуждается фундаментальный принцип: в сложных системах сбои не вопрос «если», а вопрос «когда». Это реакция на статьи и комментарии, где прослеживается идеалистический взгляд на безупречную работу.
Почему важно
Принятие неизбежности сбоев — основа проектирования отказоустойчивых систем. Игнорирование этого приводит к хрупким архитектурам, которые катастрофически ломаются при первой же нештатной ситуации.
Кому важно
Архитекторам, DevOps-инженерам и руководителям технических проектов. Тем, кто отвечает за создание и поддержку систем, где простои критичны.
Что делать
Проектировать системы с учетом отказов: использовать принципы resiliency, внедрять graceful degradation, планировать процедуры восстановления (disaster recovery) и проводить chaos engineering.
Источник
Оно обязательно сломается: не «если», а «когда»
Оптимизация памяти в игровых движках
Что случилось
Разбираются специализированные аллокаторы памяти (arena, pool, slab) на C++ как альтернатива стандартному malloc для использования в игровых движках.
Почему важно
В геймдеве, где бюджет времени на кадр может составлять 16 мс, а объекты создаются тысячами, универсальные механизмы выделения памяти становятся узким местом. Специализированные аллокаторы могут радикально повысить производительность.
Кому важно
Разработчикам игровых движков, системным программистам в геймдеве и всем, кто работает над high-performance приложениями на C++, где управление памятью критично.
Что делать
Изучить принципы работы arena, pool и slab аллокаторов. Проанализировать паттерны аллокаций в своем проекте и внедрить специализированные решения там, где это даст максимальный прирост производительности.
Источник
Кастомные аллокаторы для игровых движков: arena, pool и slab на C++
Культура ошибок в командах
Что случилось
Представлен обзор книги Эми Эдмондсон «Ошибаться – это норм!», в которой исследуется важность психологической безопасности и открытого обсуждения ошибок в организациях.
Почему важно
Команды, где ошибки скрывают из-за страха наказания, не учатся на них. Это ведет к повторению промахов и накоплению скрытых рисков. Напротив, культура, поощряющая сообщение об ошибках, повышает надежность и скорость обучения.
Кому важно
Тимлидам, менеджерам проектов, руководителям отделов разработки и всем, кто заинтересован в построении эффективных и обучающихся команд.
Что делать
Создавать среду психологической безопасности: поощрять сообщения о проблемах, проводить blameless post-mortem анализы сбоев, фокусироваться на улучшении процессов, а не на поиске виноватых.
Источник
Обзор книги «Ошибаться – это норм!», Эми Эдмондсон
Практическая миграция с Zeppelin
Что случилось
Описывается опыт миграции с аналитической платформы Zeppelin на другие инструменты, с фокусом на задаче организации рассылок.
Почему важно
Zeppelin, несмотря на гибкость, может не подходить для всех сценариев масштабирования или интеграции. Практический опыт миграции помогает другим командам оценить сложность такого перехода и избежать типичных ошибок.
Кому важно
Data engineers, аналитикам и командам, которые используют или рассматривают Zeppelin для своих задач и задумываются о будущей эволюции своего стека аналитических инструментов.
Что делать
Внимательно оценивать сильные и слабые стороны текущего инструментария. При планировании миграции уделять особое внимание переносу логики рассылок и визуализаций, так как это часто самые трудоемкие части.
Источник
Как мы мигрировали с Zeppelin и что из этого вышло. Часть 1. Рассылки
Сетевые устройства как источник проблем
Что случилось
Описана проблема, когда старый роутер стал причиной утечки памяти (2.5 ГБ ОЗУ) в браузерной вкладке с веб-приложением, использующим WebSocket/Streaming.
Почему важно
Инцидент показывает, что источником критических проблем производительности могут быть не только код приложения, но и сетевая инфраструктура, особенно устаревшее или некорректно настроенное оборудование.
Кому важно
Фронтенд- и бэкенд-разработчикам, работающим с real-time приложениями, а также сетевым администраторам и DevOps-инженерам, отвечающим за инфраструктуру.
Что делать
При диагностике неочевидных утечек памяти или проблем с производительностью веб-приложений рассматривать сетевую составляющую как потенциальную причину. Мониторить состояние сетевого оборудования и своевременно его обновлять.
Источник
Как старый роутер съел 2.5 ГБ ОЗУ в моей вкладке, или cетевой инфаркт асинхронного кода
Риски и неопределенности
- Внедрение кастомных аллокаторов требует глубоких знаний и может внести сложность, которая перевесит выгоды при неправильном применении.
- Создание культуры, где не боятся ошибок, — длительный организационный процесс, успех которого сильно зависит от поддержки руководства.
- Миграция с устоявшихся инструментов, таких как Zeppelin, сопряжена с рисками потери функциональности и увеличения сроков.
- Проблемы, вызванные сетевым оборудованием, часто трудно диагностировать, так как инструменты разработчика обычно фокусируются на коде приложения.
Сегодняшние темы объединяет идея проактивного подхода: к сбоям, к производительности, к ошибкам и к эволюции технологического стека. Успех лежит не в избегании проблем, а в грамотной подготовке к ним и способности извлекать уроки.
Источники
- Как старый роутер съел 2.5 ГБ ОЗУ в моей вкладке, или cетевой инфаркт асинхронного кода
Интро Это история о том, как «кривой» роутер научил меня смотреть на память браузера иначе. Есть вкладка с ИИ-чатом, есть WebSocket/Streaming, есть обычный i5. И есть момент, когда все это превращается в кирпич: вкладка раздувается до гигаб
- Обзор книги «Ошибаться – это норм!», Эми Эдмондсон
Чем толковее врачи, тем больше ошибок они фиксируют в своих отчетах. А проблема плохих врачей не в том, что они плохие, а в том, что они этого не понимают. Видеть ошибки — один из важнейших навыков. Он спасает жизнь, карьеру, семью. Он же я
- Очередной CrackMe или Как я мучался с Ghidra. Мануал для новичков
Думаю, новички в реверс-инжиниринге всегда хотели бы разбираться во всем? Но язык профессионалов не всегда понятен? Что-ж, я попробую помочь вам в этом нелегком деле! Начать погружение
- Как мы мигрировали с Zeppelin и что из этого вышло. Часть 1. Рассылки
Для задач аналитики Zeppelin - это чуть ли не находка. Он может в одной книжке исполнять код на любом языке (был бы интерпретатор), выводить его в виде красивых табличек, графиков и в любом другом виде, который удобен. И на Хабре есть много
- Создание приложения на React Native: часть первая
В этой статье мы познакомимся и детально изучим процесс создания приложения на кроссплатформенном фреймворке React Native. Рассмотрим, какие библиотеки понадобятся для работы, как правильно настроить структуру приложения, собрать его и прот
- Слово живое и точка
Для начала давайте представим вашу обыкновенную утреннюю рутину. Вы просыпаетесь и сразу (или чуть позже) открываете новостной ТГ-канал или, не дай бог, газету, и погружаетесь в произошедшие за последний день события. За кратчайший промежут
- Модуль Python для обновления данных в БД — DBMerge
Хочу рассказать о своей разработке и поделиться ей с сообществом habr в виде готового модуля для Python. Этот модуль решает задачу обновления данных в базе данных. Он выполняет insert/update/delete в одном действии. Модуль DBMerge проектиро
- Кастомные аллокаторы для игровых движков: arena, pool и slab на C++
Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах.
- Делаем presence для Sprut.hub по данным из Mikrotik
Когда на работе занимаешься сетями, а по выходным строишь умный дом, в голову приходят самые разные идеи, сочетающие работу и хобби. Порой не самые очевидные, но помогающие в быту. Например, что будет, если скрестить mikrotik и sprut.hub? У
- Оно обязательно сломается: не «если», а «когда»
Навеяло несколькими прочитанными недавно статьями и комментариями к ним. Люди, помните — «дерьмо случается»! Конечно, хорошо жить в мире где всё идет строго по плану, работает без ошибок и сбоев, никто не пытается ни в чем навредить и так д