Data Apps Design
2.06K subscribers
143 photos
2 videos
41 files
232 links
В этом блоге я публикую свои выводы и мнения на работу в Data:

— Data Integration
— Database engines
— Data Modeling
— Business Intelligence
— Semantic Layer
— DataOps and DevOps
— Orchestrating jobs & DAGs
— Business Impact and Value
Download Telegram
Первый дебютный запуск серии вебинаров Designing Modern Data Apps завершился!

#learning

(на самом деле уже пару недель назад 😝)

Результаты:

15 участников в закрытом канале
10 live стримов на YouTube
Сквозной проект на датасете, приближенном к реальности
Общение с единомышленниками, ответы на вопросы в QA sessions
Инфра в лучшем облаке РФ + индивидуальные гранты
— Single Github repo, прираставший с каждым новым стримом

Мои ощущения:

— Благодарен за опыт сотрудничеству с различными обучающими платформами (4+ года)
— Но безумно рад наконец запустить свой продукт, в котором я принимаю основные решения 😎
— Максимально ответственно подошел к подготовке программы и контента, плотность зашкаливает 💻
— Научился стримить с OBS, создавать и переключать сцены ▶️
— Создал шаблон слайдов с брендированием ◻️
— Впереди еще много рациональных идей, которые хочется воплотить


В марте я планирую новый запуск.

🔘 Резерв места: https://forms.gle/DcL96jDWx728tTyH7


🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥187
👨‍💻 Сказ о том как я realtime replication чинил (Kafka + Debezium + Clickhouse)

Считайте, что это Incident Postmortem


🔴 Итак, input: Данные в таблице заказов застряли на вчерашней дате, свежих заказов в базе нет.


🔴 Шаги по решению проблемы:

— Проверяем таблицы в Clickhouse, действительно последняя дата - вчера

— Делаем сверку с таблицей источника данных - последний заказ несколько минут назад

Вывод: что-то не так с репликацией данных

— Смотрим в Kafka на topic offsets

start:3752136
end:3884660
offset:3869357
lag:15303


О нет, накоплено отставание в 15К записей, и оно продолжает расти! В чем дело?

Либо не хватает мощности (bottleneck) для записи в Clickhouse. Либо что-то с самим подключением (коннектором).

— Подключаемся на VM на которой развернут Debezium connector и смотрим лог

В логах сервиса (контейнер) вроде ничего подозрительного, при просмотре последних сообщений ошибок нет.

— Смотрим статус коннектора

curl https://localhost:8083/connectors/clickhouse-jdbc-sink/status | jq


Видим огромное, сложно воспринимаемое сообщение о статусе, в котором взглядом выцепляю failed: Connection refused

— Делаем restart коннектора (вместе с tasks!)

curl -X POST https://localhost:8083/connectors/clickhouse-jdbc-sink/restart?includeTasks=true | jq


Есть! Через несколько секунд проблема решена.

Коннектор работает, отставание (оффсет) обнулилось, данные в Clickhouse появились.


🔴 Выводы:

1. Всегда что-то может пойти не так, и заранее неизвестно что, где и когда.
2. Поэтому необходимы инструменты мониторинга:

— Общая нагрузка на систему CPU / Memory / Disk (identify bottlenecks)
— Потребление ресурсов в разрезе сервисов (Debezium connectors, Kafka, Clickhouse)
— Healthchecks - периодические проверки статуса и работоспособности сервисов
— Своевременные уведомления о возникающих проблемах (errors, connection lost, etc.)

Продолжаю работу.

💬 Сталкивались с ситуациями, когда мониторинг выручал? Какие инструменты могли бы советовать?


🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍4🔥2
👀 Записали интервью-обсуждение с Алексеем из myBI Connect.

— Путь становления одного из самых популярных сервисов SaaS аналитики в РФ

— Что представляет из себя сервис изнутри? Самые популярные коннекторы

— Белые пятна и пробелы на рынке. Запросы клиентов, тренды

— Жизнь после санкций. Переезд в Y.Cloud. Будущее PowerBI. Трудности и бенефиты

— Планы экспансии. Ликбез и культура данных. Продвинутые аналитические паттерны в легкой доступности

🔥 Дайте реакций! Скоро релиз!

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥137👎1
PowerBI и Azure в РФ всё!

Дорогие клиенты, вам даем времени 5 дней на offboarding, дальше сами.

Не удивлен, не расстроен, но воодушевлен.

Никогда не любил PowerBI в силу ряда причин:

— Нет клиента для Mac / Linux
— Нет версионирования (вроде что-то завезли, но это не полноценный git)
— Всё необходимо щелкать мышью 🟦
— Какие-то сложносочиненные навороты с DAX / MDX, погружаться в которые нет желания
— Gateways и прочие сложности с публикацией и регулярным обновлением 🟦
— И конечно же тесная связь с Microsoft и их софтом

💠 Проведу 1-2 короткие консультации БЕСПЛАТНО насчет миграции из PowerBI / Azure в новый мир:

— RU Clouds: Y.Cloud / Cloud.ru
— EL: Kafka + Debezium, Airbyte (Connectors)
— Database: Clickhouse / Greenplum / Starrocks
— Transformations: dbt (SQL code)
— Semantic layer: Cube
— BI: Superset / Metabase / Datalens
— Orchestration: Airflow / Dagster / Prefect
— Monitoring: Prometheus, Grafana

Напишите мне в ЛС @kzzzr:

— Для чего вы использовали PowerBI
— Какие у вас источники данных
— Какие объемы данных
— Примерный перечень и сложность расчета метрик (показателей)
— Комментарий по срокам и необходимости видеть актуальные отчеты

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3🤡3🤯1🌚1
❄️ Финализирую Redshift to Snowflake transition

Да! Процесс длился с Июля 2023 с разной степенью интенсивности, но я сделал это.

Чеклист коротко:

🔵 Data Integration (EL)

— Create WH and user for EL (Hevo)
— Create empty schema landing
— Create EL pipelines from scratch (Hevo)
— Configure EXTERNAL STAGES and TABLES
— UNLOAD from Redshift (S3 Parquet) and COPY into Snowflake full history of largest tables

🔵 Data modeling with dbt (T)

— Create distinct WH for workloads: EL, T, DEV, BI, CI
— Set up Resource monitors for credit usage
— Adapt dbt project to Snowflake syntax
— Configure essential dbt packages
— Adapt JSON parsing code to LATERAL FLATTEN
— Enable Carto extension (H3 indexing + geo-joins)
— Snapshots for most dimensions
dbt build --full-refresh
— Optimize warehouse size dynamically for heavy models

🔵 Orchestration

— Set up dbtCloud jobs
— Configure Slim CI job

🔵 Data serving

— RBAC: Roles, Users, Groups, Privileges
— Connect Snowflake to Looker and Metabase
— Test Dashboards
— Connect reverse ETL, Jupyter, Airflow to Snowflake

🔵 Paperwork

— Launch procurement process with Vendr
— Notion Page on Snowflake transition
— JIRA tasks, approvals, 30+ emails

🟣 Наблюдения:

— Всё работает красиво и довольно шустро
— Радует то, что я разделил все нагрузки на разные Warehouses
— Для сложных моделей dbt и full-refreshes я динамически назначаю более мощные WH
— Snowflake очень удобная СУБД, всё сделано для людей, включая UI
— Много простых и крайне полезных мета-команда (SHOW, DESCRIBE, USE, LIST, ...)

Конечно, есть и обратная сторона медали. Буду работать над подробным обзором и заметками о переезде. Всё интересное еще впереди.

А пока можете поздравить меня.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍121
🟢 Snowflake Cost Management

Активная фаза transition завершена, самые острые проблемы и вопросы решены, сломанные дашборды и интеграции исправлены.

И первое, на что хочется обратить внимание – это траты.
Пока рано делать полноценные выводы, но давайте посмотрим на факты:

— Кластер Amazon Redshift из 2 x ra3.4xlarge nodes обходился примерно в $3700 / мес. (~ $925 / нед. ~ $125 / день)

— Траты Snowflake за неделю 19 - 26 марта составляют ~ $760 (на картинке)

При этом:

— 20 марта – подготовка к transition, запуски dbtCloud jobs
— 21 марта – день, когда я полноценно переключил все нагрузки на Snowflake и делал history backfill (COPY / INSERT) + full-refreshes (повышенные траты)
— 23-24 марта – выходные
— 25 марта – пользователи начинают находить ошибки, выпускаю фиксы и делаю full-refreshes
— 26 марта – день в разгаре

Ключевые выводы:

✔️Однозначно, разделение запросов и пользователей (workloads) на разные Virtual Warehouses - это преимущество

✔️Конфигурация и настройки прямо влияют на производительность и расходы. SCALING_POLICY / SCALING_POLICY / STATEMENT_TIMEOUT_IN_SECONDS / MAX_CONCURRENCY_LEVEL / etc.

✔️Оптимизация становится дико интересной игрой, когда она четко привязана к метрике (💵)

✔️Стали доступны продвинутые инструменты Мониторинга: dbt Artifacts, Snowflake Cost Management, Resource Monitors

✔️Правильное расписание (scheduling) имеет значение - делай расчеты и запуски только тогда, когда это необходимо

✔️Выбор Warehouse size – решение уравнения с переменными время исполнения и стоимость

✔️Мой dbtCloud setup стал значительно проще (набор jobs и их конфигурация, на картинке)

✔️Явный эффект для крупных таблиц имеют Cluster keys (упорядочивание записей в micro-partitions, что-то типа индекса)

— Первая неделя использования Snowflake внушает оптимизм относительно того, что траты, возможно, будут немного меньше, чем на Redshift, при всех полученных преимуществах

Каждый из перечисленных пунктов достоин отдельной публикации и раскрытия подробностей.
⭐️ О чем хотели бы узнать детально?

Я продолжаю экспериментировать и постепенно внедрять и другие отмеченные мной Snowflake features.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔21❤‍🔥1💯1
1
▶️ Успешный SaaS на рынке Аналитики – cтановление и планы развития / Алексей Сидоров из mybi connect

Ура! Релиз моего первого интервью на YouTube с Алексеем Сидоровым из mybi connect

Ключевые идеи и мысли в беседе:

— В бизнесе побеждает тот, кто создает и использует конкурентные преимущества, в т.ч. основанные на данных

— Делегировать базовые задачи и создавать ценность на прочной основе выгоднее, чем изобретать свой велосипед (писать и поддерживать коннекторы)

PowerBI – мощный и удобный инструмент, но заметен рост интереса к стеку dbt + Clickhouse + Cube + любой BI

— Модель данных Звезда / Снежинка позволяет отвечать требованиям гибкости и изменчивости данных

— Работа в рамках SaaS позволяет эффективно выстраивать процессы силами небольшой команды. Консалтинг и внедрения успешно реализуются через Marketplace и сеть партнеров

— Все клиенты делятся на две группы: in-house аналитика и партнеры, делающие внедрения на заказ

— Платформы, обещающие обучить профессии бизнес-аналитика за 2 месяца продают иллюзии. Навыки приобретаются в реальном бою и не всегда красивых и удобных бизнес-кейсах

— Лучшие продажи – "изнутри", когда аналитик компании сообщает о необходимости сервиса для решения задач

🔺 Таймкоды доступны в первом закрепленном комментарии на YouTube.

💻 Задавайте свои вопросы в комментариях к видео - я отвечу всем!

⭐️ Друзья, поддержите мой труд лайком и подпиской - ваша поддержка вдохновит на создание новых роликов.

Приятного просмотра!

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍62
Помните пост 🚀 Ключевые метрики компании на дашборде - путь от hardcoded cube к live calculated measures?

Задача трансформировалась и для нее давно найдено красивое решение.

Планирую выступить на Апрельском бигдатнике sql-ninja (Москва, 27.04)

🔺 SQL + dbt = God Mode Data Modeling

На кейсе создания витрины корпоративных метрик рассмотрим:

— Элементы functional programming c dbt macros
— Интерактивный UX с dbt Power User + CLI
— Импорт и переиспользование кода с dbt packages
— Универсальный код и окружения с dbt adapters

А еще новые знания, нетворкинг, общение.

Регистрация: https://sql-ninja.ru/ticket/

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82👍1
🔸 Развернул Self-hosted runner for Github Actions

🟡 Причина: Закончилась квота минут на использование Managed Runners, были остановлены все расчеты и сборки

Использовал базовую VM в Я.Облаке (это совсем недорого).

🟡 Шаги предельно просты:

— Download the latest runner package
— Extract the installer
— Create the runner and start the configuration experience
— Last step, run it!

🟡 Трудности с которыми столкнулся:

— Все тулы нужно поставить на VM самостоятельно (либо взять boot disk за основу): Docker, git, curl, etc.

— Права. Нужно выдать права на чтение, запись и запуск (rwx), ловил ошибки, пока не выдал необходимые права

buildx failed with: ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "https://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied


— После завершения SSH-сессии, runner становится недоступен. Процесс нужно запустить как сервис через systemd. Configuring the self-hosted runner application as a service

🟡 В итоге:

— Имеем всю мощь Github Actions и набор поддерживаемых фичей
— Богатство решений и автоматизаций в Marketplace
— С замечательной документацией
— В качестве отличной замены динозаврам automation server типа Jenkins (и прочим подобным тулам)
— По цене базовой виртуалки

◻️ До сих пор используете Jenkins?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4🍓2🤩1
🔹 Найдись Data Infrastructure Engineer / Analytics Engineer

Скоро будет открыта сочная вакансия ко мне в команду в Wheely

🟡 Стек инструментов и задачи вкуснейшие 🍑

— Двигаемся в сторону Near real time data sync: Debezium + Kafka
Источники: MongoDB, PostgreSQL, CockroachDB, Snowplow, Braze, etc.

— Tuning Snowflake + dbt - доводим до совершенства трансформации данных и DAG

— Semantic Layer + BI (Looker + Metabase) – метрики и показатели как код, в планах Cube

DataOps + MLOps – управление Data Services, Code Quality, CI/CD, Observability
Поиск аномалий и отклонений в метриках и данных
Помогаем DS выводить модельки и управлять их ЖЦ


🟡 Свобода действий и выбора, но и высокая ответственность

— Работать непосредственно со мной, буду обучать и отвечать на все вопросы

— Напрямую влияем на бизнес и показатели, общаемся с C-level guys

— Возможность предлагать новые подходы, тулы и сервисы

— По salary обид не будет точно ◻️

— Возможность поехать на Кипр (relocation support package!)

⭐️ Кого заинтересовало – готовьте CV.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍8😱2
Доклады на Апрельском бигдатнике sql-ninja (Москва, 27.04)

Я готовлю practice-oriented доклад 🔺 SQL + dbt = God Mode Data Modeling

☕️ Буду доступен для живого общения и нетворкинга:

— Мнения насчет Snowflake, dbt, Looker, Cube и других
— Консалтинг в сфере Data
Обучающий цикл DMDA

🛡 Сам заинтересован в следующих докладах:

Что правда из того, что говорят про Clickhouse
Как отбалансировать десятки брокеров с миллионом rps с помощью Cruise-Control
Airflow dbt integration
Как мы расширяем возможности open-source решений на примере Arenadata DB

Регистрируйтесь: https://sql-ninja.ru/ticket/

До встречи!

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥83👍2
Data Apps Design
🔹 Найдись Data Infrastructure Engineer / Analytics Engineer Скоро будет открыта сочная вакансия ко мне в команду в Wheely 🟡 Стек инструментов и задачи вкуснейшие 🍑 — Двигаемся в сторону Near real time data sync: Debezium + Kafka Источники: MongoDB, PostgreSQL…
🔹 Найдись Data Infrastructure Engineer / Analytics Engineer

Ссылка на вакансию: Data Infrastructure Engineer

Стек, технические навыки и особенности описал в прошлом посте.

Локация: Кипр / Москва.

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


🔸 Что будем делать:

We are looking for a Data Infrastructure Engineer to strengthen our Data Team at Wheely, proactively seeking and providing Business Users and Data Scientists with best-in-class and seamless experience.
Responsibilities

— Enhance Data team with architectural best practices and low-level optimizations
— Help refactor and improve codebase (dbt for data transformations, LookML for semantic layer)
— Support on evolving Data Integration pipelines (Airbyte, Debezium, Kafka), Database engines (Snowflake), BI tools (Looker, Metabase), reverse ETL syncs (Census)
— Cover up business units with feature requests / bugfixes / data quality issues
— Enforce code quality, automated testing and code style


Тем, кто пришлет CV мне в ЛС @kzzzr – сделаю рекомендацию напрямую (referral).

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥6