Статья

Обзор хабра: отказоустойчивость, аллокаторы, ошибки и миграции

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

Коротко

  • Сбои в системах неизбежны, и к этому нужно готовиться.
  • Специализированные аллокаторы памяти критически важны для производительности в геймдеве.
  • Культура, где ошибки не скрывают, а изучают, повышает надежность команд.
  • Старые сетевые устройства могут вызывать серьезные утечки памяти в современных веб-приложениях.
  • Миграция с 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? У

  • Оно обязательно сломается: не «если», а «когда»

    Навеяло несколькими прочитанными недавно статьями и комментариями к ним. Люди, помните — «дерьмо случается»! Конечно, хорошо жить в мире где всё идет строго по плану, работает без ошибок и сбоев, никто не пытается ни в чем навредить и так д