#backend #grafana #prometheus #nest
📎 Grafana и Prometheus: Инструменты для мониторинга и визуализации данных
👀 Prometheus — это система мониторинга и сбора метрик с открытым исходным кодом. Она была разработана в SoundCloud и сейчас является частью CNCF (Cloud Native Computing Foundation).
Основные особенности:
- Модель сбора данных: Prometheus активно "опрашивает" (scrapes) метрики с заранее настроенных источников.
- Хранилище временных рядов: Все данные сохраняются в виде временных рядов, что позволяет эффективно обрабатывать метрики за определенные интервалы времени.
- Язык запросов PromQL: Удобный язык для работы с метриками, позволяющий фильтровать и агрегировать данные.
- Множество экспортеров: Для интеграции с системами (например, Node Exporter для серверов, Blackbox Exporter для проверки доступности).
Пример использования Prometheus:
- Мониторинг CPU, памяти и дискового пространства серверов.
- Сбор данных о количестве запросов, ошибках и задержках в веб-приложениях.
🖥 Grafana — это инструмент для визуализации данных и построения интерактивных дашбордов. Он поддерживает подключение к различным источникам данных, включая Prometheus, MySQL, Elasticsearch и многие другие.
Основные возможности:
- Визуализация: Создание графиков, таблиц и других визуальных элементов.
- Настраиваемые дашборды: Гибкость в отображении данных для разных целей.
- Алерты: Настройка уведомлений на основе заданных условий.
Grafana используется для:
- Построения дашбордов производительности серверов.
- Отображения состояния приложений и метрик из Prometheus.
- Мониторинга бизнес-показателей в реальном времени.
❓ Как это работает вместе?
Сбор метрик с помощью Prometheus:
- Prometheus периодически собирает данные с источников (например, серверов, баз данных, приложений).
- Эти данные сохраняются в виде временных рядов.
Визуализация в Grafana:
- Grafana подключается к Prometheus как к источнику данных.
- На основе собранных метрик вы создаете дашборды и графики, чтобы видеть общую картину.
🔗 Статья | 👍 Платформа
Основные особенности:
- Модель сбора данных: Prometheus активно "опрашивает" (scrapes) метрики с заранее настроенных источников.
- Хранилище временных рядов: Все данные сохраняются в виде временных рядов, что позволяет эффективно обрабатывать метрики за определенные интервалы времени.
- Язык запросов PromQL: Удобный язык для работы с метриками, позволяющий фильтровать и агрегировать данные.
- Множество экспортеров: Для интеграции с системами (например, Node Exporter для серверов, Blackbox Exporter для проверки доступности).
Пример использования Prometheus:
- Мониторинг CPU, памяти и дискового пространства серверов.
- Сбор данных о количестве запросов, ошибках и задержках в веб-приложениях.
Основные возможности:
- Визуализация: Создание графиков, таблиц и других визуальных элементов.
- Настраиваемые дашборды: Гибкость в отображении данных для разных целей.
- Алерты: Настройка уведомлений на основе заданных условий.
Grafana используется для:
- Построения дашбордов производительности серверов.
- Отображения состояния приложений и метрик из Prometheus.
- Мониторинга бизнес-показателей в реальном времени.
Сбор метрик с помощью Prometheus:
- Prometheus периодически собирает данные с источников (например, серверов, баз данных, приложений).
- Эти данные сохраняются в виде временных рядов.
Визуализация в Grafana:
- Grafana подключается к Prometheus как к источнику данных.
- На основе собранных метрик вы создаете дашборды и графики, чтобы видеть общую картину.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
#graphql #rest #backend
💬 Зачем backend-разработчику знать про REST и GraphQL?
В мире веб-разработки API — это связующее звено между фронтендом и бэкендом. Два популярных подхода для их создания — REST и GraphQL. Разберёмся, что они собой представляют и когда их лучше использовать.
📌 REST
REST (Representational State Transfer) — это архитектурный стиль, который использует HTTP-протокол для обмена данными.
Принципы REST:
- Использование стандартных методов HTTP:
- Структура запросов:
- Сервер возвращает фиксированные данные в формате JSON или XML.
Плюсы:
- Простота реализации.
- Огромное сообщество и множество готовых решений.
- Подходит для большинства задач.
Минусы:
- Перегрузка запросов: клиент может получать больше данных, чем нужно.
- Неудобно управлять сложными зависимостями (например, получение связанных данных).
📌 GraphQL
GraphQL — это язык запросов, который позволяет клиенту получать только те данные, которые ему нужны.
Особенности:
- Клиент сам формирует структуру запроса.
- Данные возвращаются ровно в том виде, как запрошено.
- Используется единая точка входа (
Плюсы:
- Высокая гибкость: клиент получает только необходимые данные.
- Удобно для приложений с большим количеством взаимосвязанных данных.
- Интерактивные инструменты для работы с API (например, GraphiQL).
Минусы:
- Сложнее настроить: требуется больше времени на проектирование схемы.
- Повышенные требования к серверу: из-за гибкости запросов можно перегрузить систему.
Как выбрать?
- REST хорош для небольших проектов или систем с предсказуемыми запросами.
- GraphQL идеально подходит для сложных приложений с многочисленными связями, особенно в мобильной разработке.
👍 Платформа
В мире веб-разработки API — это связующее звено между фронтендом и бэкендом. Два популярных подхода для их создания — REST и GraphQL. Разберёмся, что они собой представляют и когда их лучше использовать.
REST (Representational State Transfer) — это архитектурный стиль, который использует HTTP-протокол для обмена данными.
Принципы REST:
- Использование стандартных методов HTTP:
GET
, POST
, PUT
, DELETE
. - Структура запросов:
/users
, /users/1
, /posts/2/comments
. - Сервер возвращает фиксированные данные в формате JSON или XML.
Плюсы:
- Простота реализации.
- Огромное сообщество и множество готовых решений.
- Подходит для большинства задач.
Минусы:
- Перегрузка запросов: клиент может получать больше данных, чем нужно.
- Неудобно управлять сложными зависимостями (например, получение связанных данных).
GraphQL — это язык запросов, который позволяет клиенту получать только те данные, которые ему нужны.
Особенности:
- Клиент сам формирует структуру запроса.
- Данные возвращаются ровно в том виде, как запрошено.
- Используется единая точка входа (
/graphql
). Плюсы:
- Высокая гибкость: клиент получает только необходимые данные.
- Удобно для приложений с большим количеством взаимосвязанных данных.
- Интерактивные инструменты для работы с API (например, GraphiQL).
Минусы:
- Сложнее настроить: требуется больше времени на проектирование схемы.
- Повышенные требования к серверу: из-за гибкости запросов можно перегрузить систему.
Как выбрать?
- REST хорош для небольших проектов или систем с предсказуемыми запросами.
- GraphQL идеально подходит для сложных приложений с многочисленными связями, особенно в мобильной разработке.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
❤1👍1🔥1
#backend #frontend #projectmanager #marketing
🛫 Готовь телегу зимой: какие технологии и фреймворки будут актуальны в IT 2025 году
В мире технологий изменения происходят стремительно, и важно быть готовым к будущим трендам. Давайте рассмотрим, какие технологии и направления будут определять IT-ландшафт в 2025 году.
🔵 Бэкенд: Эволюция и трансформация
- В 2025 году ожидается важное событие - выход 25-й версии Java и LTS версии .NET, что принесет новые возможности для разработчиков
- Искусственный интеллект становится неотъемлемой частью инструментария разработчика, внедряясь в тулинг и продукты
- Интересная тенденция - возврат от микросервисной архитектуры к более монолитным приложениям, но на новом технологическом уровне
- Возрастает важность не только технических навыков, но и понимания предметной области - разработчикам необходимо обладать базовым уровнем владения бизнес-инструментарием
🔵 Product Management: Новые горизонты
- Developer Experience становится одним из ключевых направлений, определяющих успех продукта
- Искусственный интеллект активно внедряется в рутинные задачи, значительно повышая эффективность работы команд
- Особое внимание уделяется роли AI Product Manager и развитию культуры предпринимательства внутри команд
🔵 Маркетинг: Эра нейросетей
- Нейросети перестают быть просто инструментом автоматизации и становятся самостоятельным направлением
- Расширяется применение нейросетей как в маркетинговых активностях, так и в разработке продуктов
- Особый интерес вызывает использование нейросетей как инструмента убеждения и автоматизации SEO-процессов
🔵 Фронтенд: Стабильность и инновации
- Продолжается активное развитие основных фреймворков: React, Angular и Vue
- Увеличивается фокус на информационной безопасности и применении ИИ для обработки данных
- Внедрение HTTP/3 и новых технологий оптимизации призвано улучшить скорость загрузки веб-приложений
🔵 Ключевые выводы
- Основные тренды сконцентрированы вокруг Developer Experience, искусственного интеллекта и развития фронтенд-технологий
- Конференция Merge 2024 предоставляет уникальную возможность глубже погрузиться в эти тренды и обменяться опытом с коллегами
- Программа включает более 30 секций и 150 докладов от ведущих экспертов индустрии
🔗 Статья
👉 Новости 👉 Платформа
В мире технологий изменения происходят стремительно, и важно быть готовым к будущим трендам. Давайте рассмотрим, какие технологии и направления будут определять IT-ландшафт в 2025 году.
- В 2025 году ожидается важное событие - выход 25-й версии Java и LTS версии .NET, что принесет новые возможности для разработчиков
- Искусственный интеллект становится неотъемлемой частью инструментария разработчика, внедряясь в тулинг и продукты
- Интересная тенденция - возврат от микросервисной архитектуры к более монолитным приложениям, но на новом технологическом уровне
- Возрастает важность не только технических навыков, но и понимания предметной области - разработчикам необходимо обладать базовым уровнем владения бизнес-инструментарием
- Developer Experience становится одним из ключевых направлений, определяющих успех продукта
- Искусственный интеллект активно внедряется в рутинные задачи, значительно повышая эффективность работы команд
- Особое внимание уделяется роли AI Product Manager и развитию культуры предпринимательства внутри команд
- Нейросети перестают быть просто инструментом автоматизации и становятся самостоятельным направлением
- Расширяется применение нейросетей как в маркетинговых активностях, так и в разработке продуктов
- Особый интерес вызывает использование нейросетей как инструмента убеждения и автоматизации SEO-процессов
- Продолжается активное развитие основных фреймворков: React, Angular и Vue
- Увеличивается фокус на информационной безопасности и применении ИИ для обработки данных
- Внедрение HTTP/3 и новых технологий оптимизации призвано улучшить скорость загрузки веб-приложений
- Основные тренды сконцентрированы вокруг Developer Experience, искусственного интеллекта и развития фронтенд-технологий
- Конференция Merge 2024 предоставляет уникальную возможность глубже погрузиться в эти тренды и обменяться опытом с коллегами
- Программа включает более 30 секций и 150 докладов от ведущих экспертов индустрии
👉 Новости 👉 Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#Backend
Как выбрать между SQL и No-SQL решениями?
🔤 Реляционные БД (SQL) — для твёрдых данных:
- Подходят для структурированных данных с фиксированной схемой.
- Обеспечивают высокую согласованность данных.
- Идеальны для финансовых систем и ERP.
🔤 Нереляционные БД (No-SQL) — для текучих данных:
- Поддерживают гибкость в хранении данных и масштабируемость.
- Лучше подходят для данных, структура которых меняется или заранее неизвестна.
✅ Как выбрать?
- Для структурированных и твёрдых данных (финансы) — SQL.
- Для текучих и изменяющихся данных (логи, данные пользователей) — No-SQL.
✅ Согласованность:
- SQL обеспечивают строгую согласованность.
- No-SQL обеспечивают "согласованность в конечном счёте".
✅ Затраты:
- SQL — проверенные технологии с быстрым выводом на рынок.
- No-SQL — могут ускорить разработку, но требуют продуманного проектирования.
✅ Рекомендации:
- Для масштабируемых и гибких данных — No-SQL.
- Для точности и целостности — SQL.
🔗 Статья
🌐 Новости
🖥 Платформа
Как выбрать между SQL и No-SQL решениями?
- Подходят для структурированных данных с фиксированной схемой.
- Обеспечивают высокую согласованность данных.
- Идеальны для финансовых систем и ERP.
- Поддерживают гибкость в хранении данных и масштабируемость.
- Лучше подходят для данных, структура которых меняется или заранее неизвестна.
- Для структурированных и твёрдых данных (финансы) — SQL.
- Для текучих и изменяющихся данных (логи, данные пользователей) — No-SQL.
- SQL обеспечивают строгую согласованность.
- No-SQL обеспечивают "согласованность в конечном счёте".
- SQL — проверенные технологии с быстрым выводом на рынок.
- No-SQL — могут ускорить разработку, но требуют продуманного проектирования.
- Для масштабируемых и гибких данных — No-SQL.
- Для точности и целостности — SQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Backend
➕ Добавление нереляционной MongoDB в кластер Kubernetes
1️⃣ Установка MongoDB в Kubernetes:
- Используется оператор Kubernetes для управления жизненным циклом базы данных.
- Кластер MongoDB создается с помощью манифеста.
2️⃣ Тестирование базы данных:
- Подключаемся через MongoDB Compass.
- Создаём пользователя для приложения и тестируем работу с приложением Spring Boot.
3️⃣ Создание приложения Spring Boot:
- Создаём приложение с зависимостями Spring Web и Spring Data MongoDB.
- Используем Lombok для упрощения кода.
- Разрабатываем сущности и репозитории для работы с MongoDB.
4️⃣ Тестирование приложения:
- Проверка приложения в интегрированной среде разработки.
- Перезагружаем базу данных в кластере Kubernetes.
5️⃣ Развертывание приложения в Kubernetes:
- Создаём jar-файл и Docker-образ.
- Загружаем образ в кластер и запускаем приложение через манифест Deployment.
Заключение:
- MongoDB легко интегрируется с Kubernetes и Spring Boot.
- Важно учитывать безопасность, резервное копирование и отказоустойчивость.
🔗 Статья
🌐 Новости
🖥 Платформа
- Используется оператор Kubernetes для управления жизненным циклом базы данных.
- Кластер MongoDB создается с помощью манифеста.
- Подключаемся через MongoDB Compass.
- Создаём пользователя для приложения и тестируем работу с приложением Spring Boot.
- Создаём приложение с зависимостями Spring Web и Spring Data MongoDB.
- Используем Lombok для упрощения кода.
- Разрабатываем сущности и репозитории для работы с MongoDB.
- Проверка приложения в интегрированной среде разработки.
- Перезагружаем базу данных в кластере Kubernetes.
- Создаём jar-файл и Docker-образ.
- Загружаем образ в кластер и запускаем приложение через манифест Deployment.
Заключение:
- MongoDB легко интегрируется с Kubernetes и Spring Boot.
- Важно учитывать безопасность, резервное копирование и отказоустойчивость.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Frontend #Backend #WebDevelopment #DevOps
#️⃣ Тесты - это не просто дополнительная работа, а важный инструмент разработки, который:
• Делает код более надёжным
• Служит актуальной документацией
• Помогает находить ошибки на ранних этапах
➖ Основные виды тестов:
• Unit-тесты (модульные) - проверяют отдельные функции/модули
• Интеграционные - тестируют взаимодействие компонентов
• E2E (End-to-End) - проверяют работу всего приложения
• Приёмочные - финальная проверка перед релизом
➖ Ключевые преимущества:
• Помогают обнаружить крайние случаи
• Уменьшают количество регрессий
• Дают уверенность при рефакторинге
• Облегчают обновление зависимостей
➖ Когда можно не писать тесты:
• При разработке прототипа
• В краткосрочных проектах, где тесты не успеют окупиться
❗️ Издержки:
• Требуют больше времени на старте
• Нужна продуманная структура для тестовых данных
• Необходима настройка CI
🔗 Ссылка
🌐 Новости
🖥 Платформа
• Делает код более надёжным
• Служит актуальной документацией
• Помогает находить ошибки на ранних этапах
• Unit-тесты (модульные) - проверяют отдельные функции/модули
• Интеграционные - тестируют взаимодействие компонентов
• E2E (End-to-End) - проверяют работу всего приложения
• Приёмочные - финальная проверка перед релизом
• Помогают обнаружить крайние случаи
• Уменьшают количество регрессий
• Дают уверенность при рефакторинге
• Облегчают обновление зависимостей
• При разработке прототипа
• В краткосрочных проектах, где тесты не успеют окупиться
• Требуют больше времени на старте
• Нужна продуманная структура для тестовых данных
• Необходима настройка CI
Вывод: несмотря на начальные затраты времени, тестирование окупается в долгосрочной перспективе повышением надёжности и облегчением поддержки кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Backend #Frontend #DevOps
🐱 Backend cheats
По-моему, это самая понятная шпаргалка, которая позиционирует себя, как ориентированная на backend-разработчиков, но мы убеждены, что она будет полезна каждому.
Тонна наглядных примеров, кратких и понятных описаний, ссылок на источники. В общем, очень достойно, советую
🌐 Новости
🖥 Платформа
По-моему, это самая понятная шпаргалка, которая позиционирует себя, как ориентированная на backend-разработчиков, но мы убеждены, что она будет полезна каждому.
Тонна наглядных примеров, кратких и понятных описаний, ссылок на источники. В общем, очень достойно, советую
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
#Backend
🎮 Детективная игра для тренировки навыков SQL
🔗 Пройти ознакомление
🌐 Новости
🖥 Платформа
В этой игре ваша цель — раскрыть загадочное преступление, решая задачи с использованием SQL. Игра больше ориентирована на практику уже имеющихся знаний языка.
Если вы только начинаете изучать SQL, рекомендуем пройти пошаговое руководство.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
#Backend
Представьте, что вы можете предсказывать будущее... с помощью кода! Сегодня мы создадим необычный проект – генератор гороскопов на языке программирования Rust.
Это отличный способ познакомиться с возможностями одного из самых перспективных современных языков программирования, одновременно создавая что-то забавное и интересное.
Вы узнаете основы работы с Rust, познакомитесь с его уникальной системой типов, научитесь обрабатывать пользовательский ввод и генерировать случайные события. И кто знает – может быть, ваш цифровой астролог окажется точнее традиционных предсказаний? 😁
🔗 Статья
🌐 Новости
🖥 Платформа
Представьте, что вы можете предсказывать будущее... с помощью кода! Сегодня мы создадим необычный проект – генератор гороскопов на языке программирования Rust.
Это отличный способ познакомиться с возможностями одного из самых перспективных современных языков программирования, одновременно создавая что-то забавное и интересное.
В этой статье вы найдете, как создать программу, которая будет генерировать астрологические предсказания.
Вы узнаете основы работы с Rust, познакомитесь с его уникальной системой типов, научитесь обрабатывать пользовательский ввод и генерировать случайные события. И кто знает – может быть, ваш цифровой астролог окажется точнее традиционных предсказаний? 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2😁1
This media is not supported in your browser
VIEW IN TELEGRAM
#Backend
SQL Practice
Это интерактивная платформа для освоения и совершенствования навыков SQL. Здесь вы решаете реальные задачи по работе с базами данных в удобной онлайн-среде.
Ключевые особенности:
- Обучение через практику — решайте задачи разной сложности
- Мгновенная обратная связь — система сразу проверяет ваши решения
- Реалистичные базы данных — работа с данными, имитирующими реальные сценарии
- Последовательное развитие — от простых запросов к сложным техникам
Как использовать
1. Перейдите на www.sql-practice.com
2. Выберите раздел и сложность
3. Напишите SQL-запрос для решения задачи
4. Получите результат и переходите к следующей задаче
🌐 Новости
🖥 Платформа
SQL Practice
Это интерактивная платформа для освоения и совершенствования навыков SQL. Здесь вы решаете реальные задачи по работе с базами данных в удобной онлайн-среде.
Ключевые особенности:
- Обучение через практику — решайте задачи разной сложности
- Мгновенная обратная связь — система сразу проверяет ваши решения
- Реалистичные базы данных — работа с данными, имитирующими реальные сценарии
- Последовательное развитие — от простых запросов к сложным техникам
Как использовать
1. Перейдите на www.sql-practice.com
2. Выберите раздел и сложность
3. Напишите SQL-запрос для решения задачи
4. Получите результат и переходите к следующей задаче
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
#Backend
📂 DrawDB — это онлайн-редактор диаграмм баз данных и генератор SQL-скриптов, который работает бесплатно
✨ Что умеет:
📎 Ссылка
🎙 Новости
📝 База вопросов
- Создание ER-диаграмм в браузере
- Автогенерация SQL из диаграмм
- Экспорт в различные форматы
- Настраиваемый интерфейс
Please open Telegram to view this post
VIEW IN TELEGRAM
#Backend
💌 BFF - Backend For Frontend: персональный бэкенд для каждого клиента
Представьте: у вас мобильное приложение, веб-версия и умные устройства. Каждый клиент нуждается в разных данных, но все обращаются к одному API. Получается каша из избыточных запросов и костылей. BFF решает эту проблему элегантно.
©️ Что такое BFF
Backend For Frontend - это отдельный бэкенд для каждого типа клиента. Мобилке нужны сжатые данные? Есть мобильный BFF. Веб-приложению требуется детальная информация? Отдельный веб-BFF. Каждый получает ровно то, что нужно.
©️ Как работает
• Клиент отправляет запрос в свой BFF
• BFF собирает данные из микросервисов
• Преобразует их в нужный формат
• Возвращает оптимизированный ответ
©️ Традиционный подход vs BFF
Раньше: один API-шлюз для всех клиентов. Результат - over-fetching (слишком много данных) или under-fetching (слишком мало, нужны дополнительные запросы).
С BFF: каждый клиент получает персонализированный API, заточенный под его потребности.
©️ Главные преимущества
• Оптимизация под клиента - мобилка получает легкие данные, десктоп - полные
• Лучшая производительность - меньше лишних запросов и данных
• Независимая разработка - команды не мешают друг другу
• Упрощение клиентской логики - вся оркестрация на стороне BFF
• Безопасность - контроль доступа на уровне BFF
©️ Когда использовать
- Мультиплатформенные приложения (веб + мобайл + IoT)
- Микросервисная архитектура с множеством сервисов
- Миграция с legacy-систем
- Разные требования к производительности у клиентов
©️ Подводные камни
- Больше сервисов = больше сложности в поддержке
- Риск дублирования логики между BFF
- Потенциальные узкие места производительности
- Проблемы с консистентностью данных
©️ Успешные примеры
Netflix - разные BFF для мобильных и десктопных клиентов. Мобилка получает упрощенные данные, десктоп - детальную информацию.
Spotify - оптимизированные данные для телефонов, планшетов и умных колонок обеспечивают быстрое воспроизведение.
Лучшие практики
• Минимум бизнес-логики в BFF - только оркестрация
• Активное кеширование для мобильных клиентов
• Централизованная обработка ошибок
• Строгая безопасность на уровне BFF
🎙 Новости
📝 База вопросов
Представьте: у вас мобильное приложение, веб-версия и умные устройства. Каждый клиент нуждается в разных данных, но все обращаются к одному API. Получается каша из избыточных запросов и костылей. BFF решает эту проблему элегантно.
Backend For Frontend - это отдельный бэкенд для каждого типа клиента. Мобилке нужны сжатые данные? Есть мобильный BFF. Веб-приложению требуется детальная информация? Отдельный веб-BFF. Каждый получает ровно то, что нужно.
• Клиент отправляет запрос в свой BFF
• BFF собирает данные из микросервисов
• Преобразует их в нужный формат
• Возвращает оптимизированный ответ
Раньше: один API-шлюз для всех клиентов. Результат - over-fetching (слишком много данных) или under-fetching (слишком мало, нужны дополнительные запросы).
С BFF: каждый клиент получает персонализированный API, заточенный под его потребности.
• Оптимизация под клиента - мобилка получает легкие данные, десктоп - полные
• Лучшая производительность - меньше лишних запросов и данных
• Независимая разработка - команды не мешают друг другу
• Упрощение клиентской логики - вся оркестрация на стороне BFF
• Безопасность - контроль доступа на уровне BFF
- Мультиплатформенные приложения (веб + мобайл + IoT)
- Микросервисная архитектура с множеством сервисов
- Миграция с legacy-систем
- Разные требования к производительности у клиентов
- Больше сервисов = больше сложности в поддержке
- Риск дублирования логики между BFF
- Потенциальные узкие места производительности
- Проблемы с консистентностью данных
Netflix - разные BFF для мобильных и десктопных клиентов. Мобилка получает упрощенные данные, десктоп - детальную информацию.
Spotify - оптимизированные данные для телефонов, планшетов и умных колонок обеспечивают быстрое воспроизведение.
Лучшие практики
• Минимум бизнес-логики в BFF - только оркестрация
• Активное кеширование для мобильных клиентов
• Централизованная обработка ошибок
• Строгая безопасность на уровне BFF
BFF - это не просто модная архитектура, а решение реальной проблемы. Когда у вас несколько типов клиентов с разными потребностями, BFF обеспечивает каждому персональный сервис вместо универсального "одного размера для всех".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#Backend
💬 Как сэкономить 100 часов в месяц ?
Устали бороться с дублями в данных? Тратите часы на группировку по датам? Мучаетесь с обновлением таблиц в ETL?
Опытный дата-инженер за 8 лет работы собрал 6 малоизвестных техник SQL, которые решают эти проблемы одним запросом.
1️⃣ Находить и удалять дубли
2️⃣ Получать свежие данные
3️⃣ Группировать по периодам
4️⃣ Создавать кастомные категории
5️⃣ Сравнивать данные между датами
6️⃣ Обновлять таблицы без боли
📎 Статья
🎙 Новости
📝 База вопросов
Устали бороться с дублями в данных? Тратите часы на группировку по датам? Мучаетесь с обновлением таблиц в ETL?
Опытный дата-инженер за 8 лет работы собрал 6 малоизвестных техник SQL, которые решают эти проблемы одним запросом.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Backend
📎 Как веб-серверы обрабатывают запросы: полный разбор
Когда вы нажимаете "Отправить" в браузере, за долю секунды происходит настоящая магия. Ваш запрос проходит сложный путь от клиента до сервера, и большинство разработчиков даже не подозревают, какая механика скрывается за простым
Почему это важно знать?
В AWS часто сталкиваешься с ситуациями, когда запросы "исчезают" по пути к серверу. Понимание сетевого стека помогает быстро найти проблему там, где другие разводят руками.
Анатомия сетевого соединения
Все начинается с сокетов — абстракции, которая скрывает сложность TCP/UDP протоколов. Каждый сокет определяется четырьмя параметрами:
- IP источника + порт источника
- IP назначения + порт назначения
Когда сервер запускается, он выполняет последовательность системных вызовов:
1. socket() — создает сокет-дескриптор
2. bind() — привязывает к IP и порту
3. listen() — помечает как слушающий
4. accept() — принимает входящие соединения
Путь HTTP-запроса: 6 ключевых этапов
1. TCP-квитирование
Классическая тройка: SYN → SYN-ACK → ACK. Только после этого данные могут течь.
2. TLS-квитирование (для HTTPS)
Клиент и сервер договариваются о шифрах и обмениваются ключами. Вся дальнейшая передача зашифрована.
3. Чтение из буфера
Запрос попадает в приемный буфер ядра. Приложение вызывает
4. Расшифровка
Если включен TLS, данные расшифровываются сессионными ключами. Часто это делает балансировщик нагрузки (TLS-терминация).
5. Парсинг протокола
Поток байтов превращается в понятный HTTP-запрос: метод, заголовки, URI, тело запроса.
6. Декодирование payload
JSON, Protobuf или другой формат превращается в объекты языка программирования.
Практическая польза
Знание этих процессов помогает:
- Оптимизировать производительность (понимать, где узкие места)
- Диагностировать сетевые проблемы
- Грамотно настраивать балансировщики и прокси
- Отвечать на вопросы о масштабировании
📎 Ссылка
🎙 Новости
📝 База вопросов
Когда вы нажимаете "Отправить" в браузере, за долю секунды происходит настоящая магия. Ваш запрос проходит сложный путь от клиента до сервера, и большинство разработчиков даже не подозревают, какая механика скрывается за простым
app.listen(8000)
.Почему это важно знать?
В AWS часто сталкиваешься с ситуациями, когда запросы "исчезают" по пути к серверу. Понимание сетевого стека помогает быстро найти проблему там, где другие разводят руками.
Анатомия сетевого соединения
Все начинается с сокетов — абстракции, которая скрывает сложность TCP/UDP протоколов. Каждый сокет определяется четырьмя параметрами:
- IP источника + порт источника
- IP назначения + порт назначения
Когда сервер запускается, он выполняет последовательность системных вызовов:
1. socket() — создает сокет-дескриптор
2. bind() — привязывает к IP и порту
3. listen() — помечает как слушающий
4. accept() — принимает входящие соединения
Путь HTTP-запроса: 6 ключевых этапов
1. TCP-квитирование
Классическая тройка: SYN → SYN-ACK → ACK. Только после этого данные могут течь.
2. TLS-квитирование (для HTTPS)
Клиент и сервер договариваются о шифрах и обмениваются ключами. Вся дальнейшая передача зашифрована.
3. Чтение из буфера
Запрос попадает в приемный буфер ядра. Приложение вызывает
read()
или recv()
, чтобы переместить данные в пользовательское пространство.4. Расшифровка
Если включен TLS, данные расшифровываются сессионными ключами. Часто это делает балансировщик нагрузки (TLS-терминация).
5. Парсинг протокола
Поток байтов превращается в понятный HTTP-запрос: метод, заголовки, URI, тело запроса.
6. Декодирование payload
JSON, Protobuf или другой формат превращается в объекты языка программирования.
Практическая польза
Знание этих процессов помогает:
- Оптимизировать производительность (понимать, где узкие места)
- Диагностировать сетевые проблемы
- Грамотно настраивать балансировщики и прокси
- Отвечать на вопросы о масштабировании
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Backend
🔖 Реактивное программирование vs сопрограммы: что выбрать для высокой нагрузки?
В эпоху микросервисов приложения обрабатывают десятки тысяч запросов одновременно. Привычная модель "один поток на запрос" больше не работает — потоки занимают 128-256 КБ памяти каждый, и ресурсы быстро заканчиваются.
Два основных подхода решают эту проблему: реактивное программирование и сопрограммы.
📎 Реактивное программирование
Использует асинхронные функциональные цепочки с операторами типа
Плюсы:
• Высокая эффективность
• Мощные операторы для работы с потоками данных
Минусы:
• Сложность в понимании и отладке
• Любая обработка ошибок превращается в цепочку реактивных операторов
• Пример простого добавления персонажа в Spring WebFlux занимает несколько строк с
📎 Сопрограммы (Coroutines)
Позволяют писать асинхронный код в привычном императивном стиле.
Плюсы:
• Функции помечаются как
• Можно использовать знакомые конструкции:
• Тот же функционал добавления персонажа реализуется простым
Минусы:
• Требует изучения концепций приостановки и возобновления
📎 Главное различие
Реактивное программирование требует полной перестройки мышления и кодовой базы под функциональные цепочки.
Сопрограммы позволяют сохранить привычный стиль, просто добавив
Производительность
Обе концепции показывают сопоставимую производительность — обе минимизируют использование потоков и эффективно масштабируются.
📎 Статья
🎙 Новости
📝 База вопросов
В эпоху микросервисов приложения обрабатывают десятки тысяч запросов одновременно. Привычная модель "один поток на запрос" больше не работает — потоки занимают 128-256 КБ памяти каждый, и ресурсы быстро заканчиваются.
Два основных подхода решают эту проблему: реактивное программирование и сопрограммы.
Использует асинхронные функциональные цепочки с операторами типа
flatMap
, switchIfEmpty
, onErrorResume
. Плюсы:
• Высокая эффективность
• Мощные операторы для работы с потоками данных
Минусы:
• Сложность в понимании и отладке
• Любая обработка ошибок превращается в цепочку реактивных операторов
• Пример простого добавления персонажа в Spring WebFlux занимает несколько строк с
filter
, flatMap
и обработкой исключений через Mono.error
Позволяют писать асинхронный код в привычном императивном стиле.
Плюсы:
• Функции помечаются как
suspend
, но выглядят как обычный последовательный код• Можно использовать знакомые конструкции:
try-catch
, if-else
• Тот же функционал добавления персонажа реализуется простым
if
и оператором ?.let
Минусы:
• Требует изучения концепций приостановки и возобновления
Реактивное программирование требует полной перестройки мышления и кодовой базы под функциональные цепочки.
Сопрограммы позволяют сохранить привычный стиль, просто добавив
suspend
к методам.Производительность
Обе концепции показывают сопоставимую производительность — обе минимизируют использование потоков и эффективно масштабируются.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2