Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 2 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago
? ОБНОВЛЕНИЯ ЗА Q2-Q3 2024
ПЛАНЫ
— Kubernetes Orchestration для сервисов и приложений
— Snowflake Dynamic tables для ускорения поставки данных в витрины и BI
— dbt code base refactoring: Optimize performance, Incorporate latest features, Enhance CI checks
— Snowflake SSO (Google) + Network restrictions
— Prefect / Dagster для Data Integration Pipelines (API Yandex.Metrika / Yandex.Direct)
— Alternative BI tools : Sigma, Thoughtspot, Superset
Обучающие сессии и запуски курсов
— Designing Modern Data Apps
— Хардкорный курс по интеграции данных (фокус на Kafka, Debezium, real time streaming)
Consulting + решения для бизнесов
— Аналитическая инфраструктура: развертывание в облако, управление, мониторинг, обновления
— Интеграция данных
— Аналитическая СУБД
— Инструменты визуализации, экспериментов, ML
— Цифровизация бизнеса: ключевые метрики, паттерны и инициативы доступны владельцам и менеджменту
? Если есть подказки, вопросы или хочется узнать о чем-то подробнее - дайте знать в комментариях.
? ОБНОВЛЕНИЯ ЗА Q2-Q3 2024
Давно не публиковал посты, и вот возвращаюсь.
Много работал, считаю полезным сделать обзор, порефлексировать и поделиться.
SNOWFLAKE
— Data Masking Policies для маскирования определенных колонок (ГЕО, хеш-суммы, sensitive data) и даже ключей в JSON (VARIANT)
— Snowpipe - автоматическая загрузка новых файлов из S3 в таблицы Snowflake
— Snowflake 2FA authenticatication policy - установил как обязательную политику для всех пользователей
— Table clustering - включил кластеризацию по ключу там, где это дает наибольший буст производительности
В целом, переход на Snowflake - это одно из лучших решений 2024. Об этом я писал ранее: раз, два, три, и напишу еще.
DATA INTEGRATION PIPELINES
— Выбрал стек KAFKA + DEBEZIUM
— Source connectors: MongoDB, PostgreSQL, MySQL, JDBC
— Sink Connectors: Snowflake, Clickhouse
— Для удобства развернул и использую Kafka UI
— Operations: Ad-hoc Incremental snapshots, signalling - в любой момент я могу перезалить таблицу (целиком или с учетом фильтра)
— Monitoring metrics Prometheus + Grafana. Вижу коннекторы, что работает, сколько событий приходит, как долго работают snapshots
— В итоге у меня Near real time data streaming - все изменения почти сразу оказываются в Snowflake
— Schematization + schema evolution: таблицы в Snowflake создаются и меняются автоматически
— Относительно легкий процесс Connector versions upgrade (JAR-файлы + Docker)
— PII handling on EL step: Exclude columns или Java SMT для преобразований (хеш-суммы, фильтры, условные NULLIFY) на лету
— SaaS Hevo offboarding: данные не утекают к SaaS, экономим $20K / year на стоимости сервиса https://t.me/data_apps/394
dbt (T = data transformations)
— Изменения, связанные с переходом на Debezium: log deduplication (QUALIFY)
— Адаптация к работе с ARRAYS которые пишет Debezium (Array Encoding)
— Incremental builds + frequent updates - востребованные витрины обновляются каждый час
— 4 years time limit - в целом во всем DWH принято решение ограничиться 4-мя годами истории
SNOWPLOW: Support production-grade event tracking (App / Web)
— Развернул сервисы: Collector, Enrich, Iglu (Schemas), Snowflake Loader
— Промежуточное хранилище событий (persist with Kafka) - поддержка multiple producers/consumers, at least once semantics, events replay (change offsets)
— Only accept verified events - avoid invalid events / flood / spam / unauthorized producers reaching endpoints
— Schema validation - support schema evolution, handle different producers (versions and schemas)
— Data enrichments
— События приходят в Snowflake в режиме реального времени (отставание <1 минуты)
YANDEX METRIKA + YANDEX DIRECT
— Создал и зарегистрировал приложение для получения OAuth-токенов для работы с API
— Написал bash-скрипты для выгрузки данных
— Поддержка исторической (произвольный период) и регулярной выгрузки (3 последних дня)
— Укладка в S3 в виде TSV-файлов на каждый день (с возможностью перезаписи) - Datalake approach
— С последующим чтением из Clickhouse (S3 table engine / table function)
— Автоматизировал выгрузки в Github Actions
? ОСТРЫЕ ТЕМЫ: SALARY, PERFORMANCE REVIEW, ДЕГРАДАЦИЯ КУЛЬТУРЫ РАЗРАБОТКИ, ПОЗИЦИОНИРОВАНИЕ В ОТНОШЕНИЯХ С EMPLOYER
Салют! Вчера осознал тот факт, что я в основно пишу сухие технические тексты, которые во многом отражают аспекты моей текущей деятельности, но игнорируют стратегическое видение.
Есть мнение, что существуют гораздо более актуальные темы, которые читатели хотели бы услышать и обсудить. Среди тех, на которые я хотел бы высказаться:
? Почему компании со скрипом повышают SALARY даже на 10% даже в том случае, если вы экономите (ЗАРАБАТЫВАЕТЕ) для нее $50K+ в год
? Мое мнение насчет проведения PERFORMANCE REVIEW в компании и почему вы с высокой вероятностью получите "Ты молодец! Продолжай в том же духе!"
? Что дает человеку чувство собственной власти и независимости от EMPLOYER, а равно и спокойствие, уверенность, и высокую производительность
? Как дать понять МЕНЕДЖЕРУ и всем СТЕЙКХОЛДЕРАМ, что вы занимаетесь ключевой и важной работой, без должного выполнения которой их деятельность будет затруднена (НЕВОЗМОЖНА)
? Почему даже в СТАРТАПАХ деградирует культура разработки и поставки качественных решений (кода), а стиль управления оставляет желать лучшего
❤ Помогите выбрать лучшую тему для ближайшего поста, а я пока займусь его написанием
? Хочу устроить Real Time Data Sync — дайте критику и комментарии
Привет! Последние пару недель плотно работаю над настройкой Data Pipelines через Debezium + Kafka Connect.
? Общая схема будет выглядеть так:
— Sources: MongoDB, Postgres
— Source connectors: Kafka Connect + Debezium (CDC)
— Kafka as intermediate storage
— Sink connector: Snowflake connector for Kafka (Snowpipe streaming)
— Snowflake as destination
Упражнения, которые я проделываю:
*? *Deploy services: Kafka + Kafka Connect (+ Zookeeper + Schema registry + REST Proxy)
Вообще, готовые образы есть от: Confluent / Debezium / Strimzi.
Я пока использую образы от Debezium + Strimzi. Модифицирую, добавляя нужные мне коннекторы указанных версий (JAR-файлы).
У Strimzi есть операторы для K8s, которые я планирую использовать.
А вот K8s deployment от Confluent входит в Enterprise plan и подлежит лицензированию.
*? *Choose collections for replication
Выбрал несколько несложных коллекций для тестирования и дебага.
Несложные, потому что:
— Небольшое количество колонок
— Минимальное количество вложеных nested-структур
— При этом частые обновления - получаю лог изменений CDC сразу.
— Глазами можно отследить все применяемые изменения (либо то, что не получается)
*? *Source connector (MongoDB)
На выбор у меня было 2 Connectors:
— MongoDB Kafka Connector
— Debezium connector for MongoDB
Несмотря на наличие отличной документации и даже поддержку snapshot с учетом фильтра (например, sync истории только за 1 год), выбор сделан в пользу Debezium Connector. Позже подробно напишу доступные возможности и пример конфигурации.
*? *Metadata fields for events
В каждое событие дополнительно пишу ряд метаданных:
— ts_ms
= metadata timestamp
— op
= c (create), u (update), d (delete), r (snapshot)
*? *Message transformations: Topic route, New Document State Extraction
— Topic route: Мессаджи направляю сразу в топики с целевыми названиями таблиц в Snowflake.
— New Document State Extraction: этат трансформация позволяет перейти от сложного и детального формата события Debezium (schema, before, after) к упрощенному виду (только after), который мне и нужен в Snowflake.
*? *Debug events
Развернул devcontainer (docker-compose based), установил kcat + jq.
Использую kcat для просмотра топиков, key-value значений, оффсетов.
jq использую для форматирования ответов от REST API (Kafka Connect).
Очень удобно проконтролировать изменения, которые вношу пунктом ранее.
?В следующем посте:
— Externalizing secrets
— Create a sink connector (Snowflake)
— Set up monitoring (Prometheus + Grafana)
— Use AVRO data format (io.confluent.connect.avro.AvroConverter
)
— Configure topics (compact + delete, etc.)
— Configure incrmental snapshots loads via Debezium signals
— Ensure PII data masking (message transformations, connector configuration)
— Add HTTP bridge / REST proxy
? Могли бы покритиковать / поделиться опытом / посоветовать что-либо?
? The Ultimate Guide to dbt Everything you could ever know about dbt, all in one canvas. Некоторое время назад получил письмо от Sales rep Count на тему демо их продукта. Стал изучать сайт и наткнулся на вполне приличный гайд в формате canvas по dbt и связанному…
Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 2 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago