СТРАТЕГИИ МАСШТАБИРОВАНИЯ В ПРОЕКТИРОВАНИИ СИСТЕМ
(описание в следующем посте)
(описание в следующем посте)
❤3👍3👏1
СТРАТЕГИИ МАСШТАБИРОВАНИЯ В ПРОЕКТИРОВАНИИ СИСТЕМ
(продолжение предыдущего поста)
→ Масштабируемость — это способность системы справляться с возрастающей нагрузкой без ущерба для производительности и надёжности.
→ Она гарантирует, что при росте числа пользователей, объёма данных или количества запросов система продолжит работать эффективно.
→ 1. ВЕРТИКАЛЬНОЕ МАСШТАБИРОВАНИЕ (УВЕЛИЧЕНИЕ МОЩНОСТИ)
→ Увеличение ресурсов одного сервера (процессор, оперативная память, хранилище).
→ Простота внедрения — не требует изменений кода.
→ Ограничено максимальной производительностью оборудования.
→ Применяется для небольших и средних систем до перехода на распределённое масштабирование.
*Пример:* модернизация сервера базы данных с 8 ГБ ОЗУ до 64 ГБ ОЗУ.
→ 2. ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ (РАСШИРЕНИЕ)
→ Добавление новых серверов или узлов для обработки растущего трафика.
→ Обеспечивает распределение нагрузки и резервирование.
→ Широко используется в облачных и распределённых архитектурах.
→ Управляется с помощью балансировщиков нагрузки и систем обнаружения сервисов.
*Пример:* добавление новых экземпляров веб‑серверов или серверов баз данных за балансировщиком нагрузки.
→ 3. МАСШТАБИРОВАНИЕ БАЗ ДАННЫХ
→ Реплики для чтения:
несколько копий базы данных только для чтения, повышающих производительность операций чтения.
→ Главный узел для записи:
единственный главный узел обрабатывает все операции записи для обеспечения согласованности данных.
→ Шардинг:
данные распределяются по нескольким базам данных (шард‑серверам) на основе идентификатора пользователя или региона.
→ Партиционирование:
логическое или физическое разделение больших таблиц для ускорения выполнения запросов.
→ 4. СТРАТЕГИИ КЭШИРОВАНИЯ
→ Хранение часто запрашиваемых данных в оперативной памяти для снижения нагрузки на базу данных.
→ Типы кэшей:
- кэши на уровне приложения (в оперативной памяти, например, в Node.js или Java);
- распределённые кэши (например, Redis, Memcached);
- CDN‑кэши (например, Cloudflare, Akamai) для статического контента.
→ Снижают задержки и ускоряют время отклика.
→ 5. БАЛАНСИРОВКА НАГРУЗКИ
→ Распределение входящего трафика между несколькими серверами.
→ Предотвращает перегрузку и повышает отказоустойчивость.
→ Могут использоваться алгоритмы: Round Robin, Least Connections, IP Hash.
→ Распространённые инструменты: Nginx, HAProxy, AWS ELB, Google Cloud Load Balancer.
→ 6. АСИНХРОННАЯ ОБРАБОТКА
→ Вынесение ресурсоёмких или длительных задач в фоновые процессы.
→ Реализуется с помощью систем очередей сообщений (например, Kafka, RabbitMQ, SQS).
→ Ускоряет обработку запросов и повышает общую масштабируемость.
→ 7. АВТОМАТИЧЕСКОЕ МАСШТАБИРОВАНИЕ
→ Автоматическая регулировка ресурсов в зависимости от спроса.
→ Реализуется через облачные сервисы (например, AWS Auto Scaling или Kubernetes Horizontal Pod Autoscaler).
→ Обеспечивает баланс между эффективностью затрат и производительностью.
→ 8. СЕТЬ ДОСТАВКИ КОНТЕНТА (CDN)
→ Доставка статических ресурсов (изображений, CSS, JS) с географически распределённых краевых серверов.
→ Снижает задержки и нагрузку на основной сервер.
→ Повышает глобальную масштабируемость веб‑приложений.
→ 9. ПАРТИЦИОНИРОВАНИЕ И РАСПРЕДЕЛЕНИЕ ДАННЫХ
→ Разделение больших наборов данных между узлами или регионами.
→ Снижает конфликты и повышает скорость выполнения запросов.
→ Используется в распределённых базах данных (Cassandra, MongoDB, DynamoDB).
→ 10. МАСШТАБИРОВАНИЕ НА ОСНОВЕ СОБЫТИЙ И МИКРОСЕРВИСНАЯ АРХИТЕКТУРА
→ Микросервисы масштабируются независимо в зависимости от их нагрузки.
→ Системы, управляемые событиями, автоматически масштабируются в соответствии с спросом.
→ Обеспечивают детальное распределение ресурсов и изоляцию сбоев.
→ Некоторые рекомендации
(продолжение предыдущего поста)
→ Масштабируемость — это способность системы справляться с возрастающей нагрузкой без ущерба для производительности и надёжности.
→ Она гарантирует, что при росте числа пользователей, объёма данных или количества запросов система продолжит работать эффективно.
→ 1. ВЕРТИКАЛЬНОЕ МАСШТАБИРОВАНИЕ (УВЕЛИЧЕНИЕ МОЩНОСТИ)
→ Увеличение ресурсов одного сервера (процессор, оперативная память, хранилище).
→ Простота внедрения — не требует изменений кода.
→ Ограничено максимальной производительностью оборудования.
→ Применяется для небольших и средних систем до перехода на распределённое масштабирование.
*Пример:* модернизация сервера базы данных с 8 ГБ ОЗУ до 64 ГБ ОЗУ.
→ 2. ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ (РАСШИРЕНИЕ)
→ Добавление новых серверов или узлов для обработки растущего трафика.
→ Обеспечивает распределение нагрузки и резервирование.
→ Широко используется в облачных и распределённых архитектурах.
→ Управляется с помощью балансировщиков нагрузки и систем обнаружения сервисов.
*Пример:* добавление новых экземпляров веб‑серверов или серверов баз данных за балансировщиком нагрузки.
→ 3. МАСШТАБИРОВАНИЕ БАЗ ДАННЫХ
→ Реплики для чтения:
несколько копий базы данных только для чтения, повышающих производительность операций чтения.
→ Главный узел для записи:
единственный главный узел обрабатывает все операции записи для обеспечения согласованности данных.
→ Шардинг:
данные распределяются по нескольким базам данных (шард‑серверам) на основе идентификатора пользователя или региона.
→ Партиционирование:
логическое или физическое разделение больших таблиц для ускорения выполнения запросов.
→ 4. СТРАТЕГИИ КЭШИРОВАНИЯ
→ Хранение часто запрашиваемых данных в оперативной памяти для снижения нагрузки на базу данных.
→ Типы кэшей:
- кэши на уровне приложения (в оперативной памяти, например, в Node.js или Java);
- распределённые кэши (например, Redis, Memcached);
- CDN‑кэши (например, Cloudflare, Akamai) для статического контента.
→ Снижают задержки и ускоряют время отклика.
→ 5. БАЛАНСИРОВКА НАГРУЗКИ
→ Распределение входящего трафика между несколькими серверами.
→ Предотвращает перегрузку и повышает отказоустойчивость.
→ Могут использоваться алгоритмы: Round Robin, Least Connections, IP Hash.
→ Распространённые инструменты: Nginx, HAProxy, AWS ELB, Google Cloud Load Balancer.
→ 6. АСИНХРОННАЯ ОБРАБОТКА
→ Вынесение ресурсоёмких или длительных задач в фоновые процессы.
→ Реализуется с помощью систем очередей сообщений (например, Kafka, RabbitMQ, SQS).
→ Ускоряет обработку запросов и повышает общую масштабируемость.
→ 7. АВТОМАТИЧЕСКОЕ МАСШТАБИРОВАНИЕ
→ Автоматическая регулировка ресурсов в зависимости от спроса.
→ Реализуется через облачные сервисы (например, AWS Auto Scaling или Kubernetes Horizontal Pod Autoscaler).
→ Обеспечивает баланс между эффективностью затрат и производительностью.
→ 8. СЕТЬ ДОСТАВКИ КОНТЕНТА (CDN)
→ Доставка статических ресурсов (изображений, CSS, JS) с географически распределённых краевых серверов.
→ Снижает задержки и нагрузку на основной сервер.
→ Повышает глобальную масштабируемость веб‑приложений.
→ 9. ПАРТИЦИОНИРОВАНИЕ И РАСПРЕДЕЛЕНИЕ ДАННЫХ
→ Разделение больших наборов данных между узлами или регионами.
→ Снижает конфликты и повышает скорость выполнения запросов.
→ Используется в распределённых базах данных (Cassandra, MongoDB, DynamoDB).
→ 10. МАСШТАБИРОВАНИЕ НА ОСНОВЕ СОБЫТИЙ И МИКРОСЕРВИСНАЯ АРХИТЕКТУРА
→ Микросервисы масштабируются независимо в зависимости от их нагрузки.
→ Системы, управляемые событиями, автоматически масштабируются в соответствии с спросом.
→ Обеспечивают детальное распределение ресурсов и изоляцию сбоев.
→ Некоторые рекомендации
❤🔥6👍3❤2
→ Вертикальное масштабирование → быстро, но ограничено.
→ Горизонтальное масштабирование → распределённое и гибкое.
→ Кэширование + балансировка нагрузки → повышают эффективность.
→ Автоматическое масштабирование + асинхронная обработка → динамическое управление ресурсами.
→ Шардинг + репликация → обеспечивают масштабируемость данных.
→ Горизонтальное масштабирование → распределённое и гибкое.
→ Кэширование + балансировка нагрузки → повышают эффективность.
→ Автоматическое масштабирование + асинхронная обработка → динамическое управление ресурсами.
→ Шардинг + репликация → обеспечивают масштабируемость данных.
Telegram
METANIT.COM
СТРАТЕГИИ МАСШТАБИРОВАНИЯ В ПРОЕКТИРОВАНИИ СИСТЕМ
(описание в следующем посте)
(описание в следующем посте)
❤🔥4👍3🔥2
Резюме ML-специалистов втрое больше, чем вакансий
Машинное обучение (machine learning, ML) закрепилось как одно из самых привлекательных направлений в IT. Рынок труда тоже расширяется, но делает это неравномерно: работодатели не поспевают за ростом числа специалистов. Так, если за год количество резюме соискателей выросло почти втрое, превысив более 5000 штук, то бизнес, в свою очередь, наращивает спрос, но осторожно и под конкретные проекты: число вакансий в годовом выражении выросло на 37% - до 920.
Основной рост обеспечивают молодые специалисты в возрасте 18–24 лет, которые приходят через образовательные треки, хакатоны, онлайн-курсы и программы переобучения. За год число таких специалистов выросло до 2600, что почти в три раза превышает показатели прошлых лет.
Однако аналитики видят в этих результатах реализацию угрозы для IT-специалистов со стороны алгоритмов, которые уже вытесняют первых с рынка
Что касается зарплатных ожиданий и рыночных предложений, то в 2024–2025 году медианное предлагаемое ML-специалистам вознаграждение (то есть показатель, равноудаленный от самого большого и самого маленького значения) выросло до 217 700 рублей против 183 300 рублей годом ранее (+18,8%). При этом медианные ожидания соискателей снизились — с 153 800 рублей до 106 100 рублей (-30,9%). Такой разрыв (более 111 000 рублей) указывает на дисбаланс, говорится в исследовании: часть специалистов занижают ожидания, чтобы повысить шансы на трудоустройство, а работодатели, напротив, демонстрируют готовность платить больше, чем рассчитывают соискатели. При этом стоит учитывать, что компании не всегда указывают уровень зарплаты в вакансии — особенно в нижнем сегменте, где условия предлагаются индивидуально или фиксируются на этапе офера.
Согласно данным вакансий работодателей, ML-специалисты должны владеть Python, SQL, PyTorch и библиотеками глубокого обучения. Среди новых требований — опыт в разработке API, работа с облачными платформами и ML-инфраструктурой (Docker, MLflow, TensorFlow Serving).
Таким образом, рынок машинного обучения в России развивается асимметрично: спрос на специалистов есть, но предложение растет быстрее.
https://www.forbes.ru/tekhnologii/549732-problema-lisnego-celoveka-rezume-ml-specialistov-vtroe-bol-se-cem-vakansij
Машинное обучение (machine learning, ML) закрепилось как одно из самых привлекательных направлений в IT. Рынок труда тоже расширяется, но делает это неравномерно: работодатели не поспевают за ростом числа специалистов. Так, если за год количество резюме соискателей выросло почти втрое, превысив более 5000 штук, то бизнес, в свою очередь, наращивает спрос, но осторожно и под конкретные проекты: число вакансий в годовом выражении выросло на 37% - до 920.
Основной рост обеспечивают молодые специалисты в возрасте 18–24 лет, которые приходят через образовательные треки, хакатоны, онлайн-курсы и программы переобучения. За год число таких специалистов выросло до 2600, что почти в три раза превышает показатели прошлых лет.
Однако аналитики видят в этих результатах реализацию угрозы для IT-специалистов со стороны алгоритмов, которые уже вытесняют первых с рынка
Что касается зарплатных ожиданий и рыночных предложений, то в 2024–2025 году медианное предлагаемое ML-специалистам вознаграждение (то есть показатель, равноудаленный от самого большого и самого маленького значения) выросло до 217 700 рублей против 183 300 рублей годом ранее (+18,8%). При этом медианные ожидания соискателей снизились — с 153 800 рублей до 106 100 рублей (-30,9%). Такой разрыв (более 111 000 рублей) указывает на дисбаланс, говорится в исследовании: часть специалистов занижают ожидания, чтобы повысить шансы на трудоустройство, а работодатели, напротив, демонстрируют готовность платить больше, чем рассчитывают соискатели. При этом стоит учитывать, что компании не всегда указывают уровень зарплаты в вакансии — особенно в нижнем сегменте, где условия предлагаются индивидуально или фиксируются на этапе офера.
Согласно данным вакансий работодателей, ML-специалисты должны владеть Python, SQL, PyTorch и библиотеками глубокого обучения. Среди новых требований — опыт в разработке API, работа с облачными платформами и ML-инфраструктурой (Docker, MLflow, TensorFlow Serving).
Таким образом, рынок машинного обучения в России развивается асимметрично: спрос на специалистов есть, но предложение растет быстрее.
https://www.forbes.ru/tekhnologii/549732-problema-lisnego-celoveka-rezume-ml-specialistov-vtroe-bol-se-cem-vakansij
Forbes.ru
Проблема лишнего человека: резюме ML-специалистов втрое больше, чем вакансий
Машинное обучение (machine learning, ML) закрепилось как одно из самых привлекательных направлений в IT. Рынок труда тоже расширяется, но делает это неравномерно: работодатели не поспевают за ростом числа специалистов. Так, если за год количество рез
🤔8🔥1👏1😁1🤬1😢1
В руководство по C# и .NET добавлена новая статья про Расширения типов, которые позволяют добавлять новые компоненты - методы, свойства и операторы к уже существующим типам без создания нового производного типа, перекомпиляции или иного изменения исходного типа
https://metanit.com/sharp/tutorial/3.18.php
#csharp #dotnet
https://metanit.com/sharp/tutorial/3.18.php
#csharp #dotnet
👍35❤3🔥2🥱2🖕1
Управление памятью в Linux
(продолжение предыдущего поста)
1. Введение.
→ Система управления памятью в Linux контролирует, как операционная система использует оперативную память (RAM), пространство подкачки (swap) и виртуальную память.
→ Ядро гарантирует, что каждый процесс получает необходимый объём памяти, сохраняя при этом стабильность и производительность системы.
→ В Linux используется система виртуальной памяти, которая предоставляет каждому процессу собственное изолированное адресное пространство.
2. Виртуальная память
→ Виртуальная память позволяет процессам работать так, будто у них есть доступ к большому непрерывному объёму памяти — даже если физическая оперативная память меньше.
→ Linux сопоставляет виртуальную память с физической с помощью таблиц страниц.
→ Обеспечивает:
→ Изоляцию между процессами;
→ Эффективное использование оперативной памяти;
→ Поддержку крупных приложений.
3. Страничная организация памяти (paging)
→ Память разделена на небольшие блоки фиксированного размера — страницы (обычно 4 КБ).
→ Ядро загружает страницы программы в оперативную память по мере необходимости.
→ Если оперативная память заполнена, неиспользованные страницы перемещаются в пространство подкачки.
→ Страничная организация повышает эффективность многозадачности.
4. Роль блока управления памятью (MMU, Memory Management Unit)
→ MMU — это аппаратный компонент, который преобразует виртуальные адреса в физические.
→ Сохраняет преобразования в кэше, называемом TLB (Translation Lookaside Buffer, буфер ассоциативной трансляции).
→ Быстродействие доступа к памяти зависит от эффективного использования MMU и TLB.
5. Распределение физической памяти
→ В Linux используются два основных распределителя памяти:
→ Система buddy (Buddy System) — выделяет большие непрерывные блоки памяти.
→ Распределитель slab (Slab Allocator) — выделяет память для объектов ядра (inodes, дескрипторы файлов).
→ Обеспечивает минимальную фрагментацию и более быстрое выделение памяти.
6. Пространство подкачки (swap)
→ Swap — это область на диске, используемая как буфер переполнения, когда физическая оперативная память заполнена.
→ Неактивные страницы перемещаются в swap.
→ Помогает системе работать стабильно, но работает значительно медленнее, чем оперативная память.
→ Команды:
→
→
7. Зоны памяти
→ Linux разделяет физическую память на зоны в зависимости от аппаратных ограничений:
→ ZONE_DMA — память, используемая для прямого доступа к памяти (DMA).
→ ZONE_NORMAL — обычная память, доступная ядру.
→ ZONE_HIGHMEM — верхняя память, не отображаемая напрямую ядром (в 32‑битных системах).
→ Помогает ядру распределять память в зависимости от архитектуры системы.
8. Кэширование и буферы
→ Linux использует свободную память для кэширования, чтобы повысить производительность.
→ Типы:
→ Page Cache — хранит недавно использованные файлы.
→ Buffer Cache — хранит метаданные для ускоренного доступа к диску.
→ Кэшированные данные автоматически освобождаются, когда программам требуется больше памяти.
9. OOM Killer (Out‑of‑Memory Killer, «убийца при нехватке памяти»)
→ Когда память и swap полностью использованы, Linux запускает OOM Killer.
→ Выбирает и завершает процессы, потребляющие много памяти, чтобы освободить оперативную память.
→ Предотвращает зависание системы.
10. Инструменты мониторинга памяти
→ Распространённые команды для проверки использования памяти:
→
→
→
→
→
11. Интерфейсы памяти в /proc
→ Linux предоставляет информацию о памяти через файловую систему proc:
→
→
→
(продолжение предыдущего поста)
1. Введение.
→ Система управления памятью в Linux контролирует, как операционная система использует оперативную память (RAM), пространство подкачки (swap) и виртуальную память.
→ Ядро гарантирует, что каждый процесс получает необходимый объём памяти, сохраняя при этом стабильность и производительность системы.
→ В Linux используется система виртуальной памяти, которая предоставляет каждому процессу собственное изолированное адресное пространство.
2. Виртуальная память
→ Виртуальная память позволяет процессам работать так, будто у них есть доступ к большому непрерывному объёму памяти — даже если физическая оперативная память меньше.
→ Linux сопоставляет виртуальную память с физической с помощью таблиц страниц.
→ Обеспечивает:
→ Изоляцию между процессами;
→ Эффективное использование оперативной памяти;
→ Поддержку крупных приложений.
3. Страничная организация памяти (paging)
→ Память разделена на небольшие блоки фиксированного размера — страницы (обычно 4 КБ).
→ Ядро загружает страницы программы в оперативную память по мере необходимости.
→ Если оперативная память заполнена, неиспользованные страницы перемещаются в пространство подкачки.
→ Страничная организация повышает эффективность многозадачности.
4. Роль блока управления памятью (MMU, Memory Management Unit)
→ MMU — это аппаратный компонент, который преобразует виртуальные адреса в физические.
→ Сохраняет преобразования в кэше, называемом TLB (Translation Lookaside Buffer, буфер ассоциативной трансляции).
→ Быстродействие доступа к памяти зависит от эффективного использования MMU и TLB.
5. Распределение физической памяти
→ В Linux используются два основных распределителя памяти:
→ Система buddy (Buddy System) — выделяет большие непрерывные блоки памяти.
→ Распределитель slab (Slab Allocator) — выделяет память для объектов ядра (inodes, дескрипторы файлов).
→ Обеспечивает минимальную фрагментацию и более быстрое выделение памяти.
6. Пространство подкачки (swap)
→ Swap — это область на диске, используемая как буфер переполнения, когда физическая оперативная память заполнена.
→ Неактивные страницы перемещаются в swap.
→ Помогает системе работать стабильно, но работает значительно медленнее, чем оперативная память.
→ Команды:
→
swapon -s — просмотр информации о swap; →
free -h — проверка использования swap.7. Зоны памяти
→ Linux разделяет физическую память на зоны в зависимости от аппаратных ограничений:
→ ZONE_DMA — память, используемая для прямого доступа к памяти (DMA).
→ ZONE_NORMAL — обычная память, доступная ядру.
→ ZONE_HIGHMEM — верхняя память, не отображаемая напрямую ядром (в 32‑битных системах).
→ Помогает ядру распределять память в зависимости от архитектуры системы.
8. Кэширование и буферы
→ Linux использует свободную память для кэширования, чтобы повысить производительность.
→ Типы:
→ Page Cache — хранит недавно использованные файлы.
→ Buffer Cache — хранит метаданные для ускоренного доступа к диску.
→ Кэшированные данные автоматически освобождаются, когда программам требуется больше памяти.
9. OOM Killer (Out‑of‑Memory Killer, «убийца при нехватке памяти»)
→ Когда память и swap полностью использованы, Linux запускает OOM Killer.
→ Выбирает и завершает процессы, потребляющие много памяти, чтобы освободить оперативную память.
→ Предотвращает зависание системы.
10. Инструменты мониторинга памяти
→ Распространённые команды для проверки использования памяти:
→
free -h — обзор оперативной памяти и swap; →
top — использование памяти процессами в реальном времени; →
htop — интерактивный монитор памяти; →
vmstat — статистика виртуальной памяти; →
cat /proc/meminfo — подробная информация о памяти.11. Интерфейсы памяти в /proc
→ Linux предоставляет информацию о памяти через файловую систему proc:
→
/proc/meminfo — обзор памяти; →
/proc/<pid>/maps — структура памяти процесса; →
/proc/<pid>/smaps — детальное использование по сегментам памяти.❤8👍2💯2
→ Полезно для отладки утечек памяти и анализа распределения памяти процессами.
12. NUMA (Non‑Uniform Memory Access, неоднородный доступ к памяти)
→ На серверах с несколькими процессорами время доступа к памяти зависит от процессора.
→ Linux поддерживает распределение памяти с учётом NUMA для оптимизации производительности.
→ Гарантирует, что процессы используют память, расположенную ближе к процессору, на котором они выполняются.
12. NUMA (Non‑Uniform Memory Access, неоднородный доступ к памяти)
→ На серверах с несколькими процессорами время доступа к памяти зависит от процессора.
→ Linux поддерживает распределение памяти с учётом NUMA для оптимизации производительности.
→ Гарантирует, что процессы используют память, расположенную ближе к процессору, на котором они выполняются.
Telegram
METANIT.COM
Управление памятью в Linux
(продолжение в следующем посте)
(продолжение в следующем посте)
❤6🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Теория графов наглядно на примере кубика-рубика
🤓32🤔17❤6👍3🤯3😐1
Хабр и ЭКОПСИ провели масштабное исследование на основании опроса более 30000 айтишников и составили новый рейтинг IT-брендов работодателей.
Основные тренды: компании перестраиваются, команды меняются, новых работодателей почти нет, а конкуренция обострилась и среди специалистов, и среди компаний, рост зарплат в IT-сфере замер, повышение производительности труда (прежде всего, за счёт сокращения издержек). Из-за высокой ключевой ставки ЦБ многим закредитованным компаниям трудно поддерживать инвестпроекты и развивать новые направления. В результате за этот год мы увидели серию масштабных сокращений сотрудников. Часть компаний прекратила активный найм, другие существенно сокращают бюджеты на «нецелевые расходы».
1-ое место рейтинга заняла Авиасейлс (привлекательность — 91%, узнаваемость — 97%). Авито на 2-м (привлекательность — 88%, узнаваемость — 98%). На 3-м месте 2ГИС: ее привлекательность — 86%, узнаваемость — 97%.
Полный обзор: https://habr.com/ru/specials/965986/
Основные тренды: компании перестраиваются, команды меняются, новых работодателей почти нет, а конкуренция обострилась и среди специалистов, и среди компаний, рост зарплат в IT-сфере замер, повышение производительности труда (прежде всего, за счёт сокращения издержек). Из-за высокой ключевой ставки ЦБ многим закредитованным компаниям трудно поддерживать инвестпроекты и развивать новые направления. В результате за этот год мы увидели серию масштабных сокращений сотрудников. Часть компаний прекратила активный найм, другие существенно сокращают бюджеты на «нецелевые расходы».
1-ое место рейтинга заняла Авиасейлс (привлекательность — 91%, узнаваемость — 97%). Авито на 2-м (привлекательность — 88%, узнаваемость — 98%). На 3-м месте 2ГИС: ее привлекательность — 86%, узнаваемость — 97%.
Полный обзор: https://habr.com/ru/specials/965986/
🔥2🥰2👏1😁1
Rust опередил C/C++ по объёму кода, добавляемого в платформу Android
Использование Rust при разработке системных компонентов Android началось в 2020 году. В 2025 году объём нового кода на Rust в Android превысил объём добавляемого за год кода на C и C++.
Кроме того, в 2025 году впервые доля уязвимостей, вызванных ошибками при работе с памятью, оказалось меньше 20% от общего числа уязвимостей. Для сравнения в 2024 году этот показатель в Android составлял 24%, а в 2019 году - 76%. При этом средний показатель по индустрии продолжает оставаться на уровне 70%.
Также внедрение Rust положительно повлияло на скорость, продуктивность и качество разработки. Для кода на Rust зафиксировано в 4 раза меньше откатов изменений в результате выявления непредвиденных ошибок, а также снижение времени рецензирования на 25%.
https://security.googleblog.com/2025/11/rust-in-android-move-fast-fix-things.html
Использование Rust при разработке системных компонентов Android началось в 2020 году. В 2025 году объём нового кода на Rust в Android превысил объём добавляемого за год кода на C и C++.
Кроме того, в 2025 году впервые доля уязвимостей, вызванных ошибками при работе с памятью, оказалось меньше 20% от общего числа уязвимостей. Для сравнения в 2024 году этот показатель в Android составлял 24%, а в 2019 году - 76%. При этом средний показатель по индустрии продолжает оставаться на уровне 70%.
Также внедрение Rust положительно повлияло на скорость, продуктивность и качество разработки. Для кода на Rust зафиксировано в 4 раза меньше откатов изменений в результате выявления непредвиденных ошибок, а также снижение времени рецензирования на 25%.
https://security.googleblog.com/2025/11/rust-in-android-move-fast-fix-things.html
❤26🤮15👍4🔥2🤔2👎1💊1
Пример стека микросервисов для продакшена
1. API‑шлюз (API Gateway)
Единая точка входа для всех клиентских запросов. Обеспечивает маршрутизацию, фильтрацию и балансировку нагрузки.
2. Реестр сервисов (Service Registry)
Каталог всех доступных сервисов. Шлюз использует его для обнаружения сервисов. Примеры: Consul, Eureka, Zookeeper.
3. Сервисный слой (Service Layer)
Отдельные микросервисы, выполняющие конкретные бизнес‑функции.
4. Сервер авторизации (Authorization Server)
Обеспечивает безопасность микросервисов и управляет контролем доступа.
5. Хранилище данных
Базы данных приложения.
6. Распределённое кэширование
Повышает производительность за счёт уровней кэширования.
7. Асинхронная коммуникация
Очереди сообщений обеспечивают асинхронное взаимодействие между сервисами.
8. Визуализация метрик
Сервисы передают метрики в Prometheus, которые отображаются на панелях Grafana.
9. Агрегация логов
Централизованное логирование с использованием стека ELK.
1. API‑шлюз (API Gateway)
Единая точка входа для всех клиентских запросов. Обеспечивает маршрутизацию, фильтрацию и балансировку нагрузки.
2. Реестр сервисов (Service Registry)
Каталог всех доступных сервисов. Шлюз использует его для обнаружения сервисов. Примеры: Consul, Eureka, Zookeeper.
3. Сервисный слой (Service Layer)
Отдельные микросервисы, выполняющие конкретные бизнес‑функции.
4. Сервер авторизации (Authorization Server)
Обеспечивает безопасность микросервисов и управляет контролем доступа.
5. Хранилище данных
Базы данных приложения.
6. Распределённое кэширование
Повышает производительность за счёт уровней кэширования.
7. Асинхронная коммуникация
Очереди сообщений обеспечивают асинхронное взаимодействие между сервисами.
8. Визуализация метрик
Сервисы передают метрики в Prometheus, которые отображаются на панелях Grafana.
9. Агрегация логов
Централизованное логирование с использованием стека ELK.
❤🔥4👍4❤2🤡1