Инжиниринг Данных
22.9K subscribers
1.76K photos
51 videos
181 files
3.05K links
Делюсь новостями из мира аналитики и карьерными советами.

15 лет в Аналитике и Инжиниринге Данных, 9 лет в FAANG

🛠️ dataengineer.ru | 🏄‍♂️ Surfalytics.com

№5017813306

Реклама:
https://almond-rule-130.notion.site/1199f595f76a8030ba1be1e607c9a8ce
Download Telegram
А вот детская презентаций. Еще получилось договорится с Microsoft и свозить класс в лаборатории Microsoft Garage (в его Ванкуверское отделение). Во многих канадских библиотеках есть 3Д принтера, и я хочу туда тоже сходить с классом, чтобы ученики могли на компе нарисовать модель и там распечатать и узнать про 3д принтер и моделирование.

Кстати начиная с 5 класса все ученики обычной школы носят каждый день свой компьютер. Мой сын носит Mac Air 2011 года, который еще работает и был привезен Всеволодом из Америки, который сейчас возглавляет яндекс дата платформу, за что ему спасибо😃

А с января начинается новый курс по Cloud Computing в University of Victoria. Получается, что у меня хобби главное это кого-то учить, может быть когда-нибудь это станет основным моим занятием.

Есть еще крутые детские ресурсы по кодингу и технологиям?
Расскажу про один кейс на картинке. Условно назовем его Embedded BI.

Задача простая, у нас есть хранилище данных, которые наполняется данными об использовании нашего продукта. Теперь, мы хотим для наших клиентов показывать метрики внутри их личного кабинета. Не можем же мы, для каждого клиента купить лицензию Tableau/Looker. Точнее можем, и вам с удовольствием продадут))

В нашем случае, мы лучше найдем open source продукт, который позволит настроить графики и аналитику и легко интегрируется в web framework. И это headless BI (тоже новый термин для меня) - Cube.js. Штука крутая и можно создавать очень красивые графики. Вообще можно использовать как инструмент красивых управленческих дашбордов.

Следующий этап это каким образом данные подгружать в дашборды. Можно в лоб, подключиться к Snowflake напрямую и потом офигеть от цены. Поэтому лучше выгружать данные из снежинки в S3. Как? Берем dbt, создаем новую модель (таблицу) в которой будут все данные и метрики (условно датамарт) и дальше создаем dbt macro, который будет выгружать данные, в случае снежинки использовать команду COPY (я узнал что у этой команды много ограничений в снежинке при использовании PARTITION BY, прям даже неожиданно), но тем неменее работает. Потом эти данные мы загружаем в RDS Postgres и подключаем BI.

Остается только мониторить, чтобы ничего не упало и не сломалось. Цена снежинки на COPY (Unload) копеешная, RDS тоже не дорого. Это для Enterprise клиентов.

Следующий этап будет рассылка письма дашборда тысячям клиентов, кто не Enterprise еще, используя cube.js для отрисовки дашборда в формате красивого письма. Очень классный кейс, прям Customer Obsession, как говаривали в Амазоне.
Всем привет! Несколько новостей! 🦆

1️⃣ Роман @rspon завел чат по datalearn https://t.me/datalearn_chat (присоединяйтесь, инфа там в закрепе) в замен слака, так как:
1) слак все равно удаляет всю историю
2) часто нужен VPN
В целом Slack хороший, так как это небольшая строчка в резюме, мелкая, но полезная. Так что опционально вы можете попробовать туда пробиться через чатик, но для учебы главное это гит учебник.

В чате можно домашку кидать

2️⃣ Я заметил, что уже много людей из нашего сообщества обитают в Ванкувере, а значит можно сделать митап. Я долго думал как это сделать бесплатно и хорошо, и придумал. Я же лид по Табло группе местной, и офис SalesForce в Ванкувере в моем распоряжении для митапа по табло, даже еще 250 баксов на пицце дадут. Поэтому, давайте замутим встречу на митапе табло в Ванкувере в декабре. С меня пицца, с вам пиво, сидр, вино или чего там еще есть:) Только надо бы спикера найти, я могу быть спикером по какой-нибудь теме, но нужен второй доброволец, кто выступит в Ванкувере с докладом. Пишите в комментах, если хотите затусить так и вы можете приехать в Ванкувер.

Update: Сделали группу для "своих" в Ванкувере, пишите @sergeykham он вас добавит. Цель нетворкинг, митапы, и в будущем может сходим в поход, хайк, пляжный воллейбол или еще чего.

3️⃣ Вы так же можете провести подобные сходки на Кипре, например, там Рома уже с кем-то делал.у
А вы еще ждете?🦧
Несколько графиков "пирожков" рассказывают нам об опасности визы H1B. FAANG компании имеют самую большую квоту на рабочие визы и соответственно при увольнении людей, специалисты на рабочей визе находятся в группе риска.

При массовых сокращения компании нам не сообщают о проценте уволенных с H1B.

Для меня всегда был важный вопрос иммиграции. В лоб обычно существуют 2 варианта:
1) Быстро и не предсказуемо - рабочая виза, которая вас ограничивает и может ничего не гарантировать
2) Долго - классическая иммиграция как в Канаде и Австралии. Вы получаете вид на жительство, бенефиты и уже на месте думаете, что делать.

Кроме этих 2 вариантов существует еще много разных вариантов, например по учебной визе, виза О1 в штаты (для "гениев"), по тур визе или вообще нелегалом на стройку. Но все эти варианты имеют риски, зато быстро.

Какие пути миграция вы бы предпочли или уже использовали?
Еще одна статья и визуализация - на это раз тема касается Performance Review. Я думаю каждый через это проходил.

10,000 Google Employees Could Be Rated as Low Performers, то есть bigdata посчитает кому уйти, а кому нет. Обычно performance review очень сильно зависит от отзывов ваших коллег и менеджеров, и менеджеров вашего менеджера, если вы знаете как их сделать "счастливыми", то врят ли вы попадете в low performers, а если вы любите показывать характер, спорить, то тут уже как повезет☺️ Опять же как и все ранее в канале, это моя точка зрения, у вас может быть другая, поэтому welcome в комменты.

Я тут понял в чем самая большая проблема всех этих увольнений - это то, что у людей зарплата больше чем 2 средние по рынку. То есть вам платят 400к зеленых в год и выгоняют. А вы такой крутой спец, как же вы будете работать за 120к зеленых в год?! Придется снижать планку. Сейчас отличная возможность какой-нибудь страховой набрать себе ребят из Амазона и Мета и платить им обычную зп, раньше они о таком и мечтать не могли.

Мне лично за 12 лет работы ни разу это дело (performance review) не помогло. Рецепт всегда был одинаковый - "хочешь больше денег, выше должность" - меняй работу. Для меня performance review - там самая морковка перед носом осла, которую вам еще потом куда-нибудь могут засунуть😱 Я записал подкаст на тему карьерного роста и отношения с работодателем. Но это я, возможно это не самый лучший пример. Я просто для себя расставил приоритеты и снял розовые очки.

А как у вас проходит performance review? Как влияют результаты на вас и вашу работу? Есть что добавить?
This media is not supported in your browser
VIEW IN TELEGRAM
Конец года близок, успели все запланированное?
Расскажу еще про один кейс.

Задача: Создать аналитическое решение, точнее модернизировать существующее с использованием Azure облака. Основной источник данных телеметрия (логи JSON), которые скапливаются в Azure Storage Account в формате year/month/day/hour.

Было: Был HDInsights + Hive (традиционный hadoop), это полный аналог AWS EMR + Hive, только в Azure. Hive читал JSON, преобразовывал его в плоскую таблицу и сохранял данные в формате Parquet. Все трансформации выполнялись с помощью Hive SQL. Это был так называемый Staging.

Далее, на On-premise SQL Server создавались External Tables, что давало возможность использовать on-premise SSIS (ETL инструмент Microsoft) и грузить инкрементально данные в таблицы фактов. А потом, использую Power BI Service, подключались из облако в собственный дана центр через Gateway Service. Ну такое для 2021 года.

Так же сам HDinsights плохо справлялся с пиковой нагрузкой, так как там был единственный compute cluster, который обслуживал все запросы.

Решение: Все консолидировать в облаке в едином инструменте. Было 2 опции Azure Databricks и Synapse. Несмотря на то, что Microsoft заставил всех перейти на Synapse, нам удалось получить разрешение использовать Databricks вместе с Minecraft и Zenimax (Fallout, Skyrim, Quake).

При использовании Databricks не нужно изобретать велосипед, не нужны всякие примочки типа dbt, fivetran, можно все делать внутри самой платформы с помощью кода. Сам databricks - это прежде всего processing/computing данных. Данные хранятся в Azure Storage в формате Delta (Parquet + delta log).

Вся разработка происходит в notebooks, можно писать на PySpark, Scala, R и тп. Достаточно много времени заняло переписание кода из SQL на PySpark, но при желании можно было оставить все как есть и использовать HiveSQL.

Одно из преимуществ это создание нескольких кластеров - для BI, ETL, Data Science, каждый кластер со своими настройками. ETL кластер может автомасштабироваться. Так же, за счет дополнительных мощностей ETL запускался каждый час, а было раз в сутки.

Другое преимущество, что в databricks практически отсутствует vendor lock. Данные хранятся отдельно, metastore живет в отдельной базе (в моем случае было Azure SQL Server). В качестве orchestration tool использовался Azure Data Factory (ADF pipelines создавалась с помощью C# в Visual Studio). Таким образом, можно очень легко поменять Databricks на другой Spark продукт.

Доступ к данным осуществлялся через SQL Analytics (Redash, который был куплен Databricks) и Spark JDBC драйвер для Power BI. Так же аналитики использовали PySpark шаблоны-ноутбуки для анализа и deep dive.

Весь код хранился в Azure DevOps Repo (git система), там же были создан CI/CD процесс на Azure DevOps Pipelines.

Инфраструктура создавалась с помощью Azure Bicep (аналог Terraform).

Data Observability в части Alerts был использован Azure Log Analytics, который умеет собирать данные для каждого сервиса и можно настраивать алерты при ошибках. По умолчанию придет письмо о сбоях.

Следующим сообщением я добавил слайд архитектуры. У меня есть весь код Databricks и Sample данные. То есть в модуле 9, про озеро данных, я расскажу как делать delta lake и data lake и будем использовать этот кейс. Но это будет не скоро, как я понимаю.

PS Если вы хотите рассказать о своих проектах также, пишите в личку, пришлите картинку архитектуры и описание, и я опубликую.

PPS
Я работал 2 года с Databricks и сейчас работаю с Snowflake. Оба продукта мне нравятся, но мне кажется философия databricks более честная и прозрачная, но порог вхождения выше, так как SQL там есть, но больше как complimentary.

Примерно напоминает Looker vs Tableau. Оба продукта интересны, но достаточно разные. Я скоро буду делать Workshop по теме Looker vs Tableau для одной из команд и потом расшарю слайды.
Допустим вы уже более-менее опытный и у вас есть работы с данными, и самое время углубляться дальше.

Я составил список книг, который помогут вам перейти на следующий уровень. Практически все книги у меня в ToDo листе.

Теория:
- Designing Data-Intensive Applications - классика жанра
- The Missing README - небольшой набор полезных советов от бывалых
- Database Internals - ну а как же без баз данных
- Fundamentals of Software Architecture - не самое приятное чтение,
- The Staff Engineer's Path - если вам интересно развиваться в этом направлении

Менеджемент:
- The Manager's Path
- The First 90 Days, Updated and Expanded

Практика (эти книги не достаточно прочитать, с этим надо работать каждый день, чтобы была весомая польза):
- Docker: Up & Running, 2nd Edition - контейнеры везде, возможно стоит еще и в Kubernetes разобраться
- How Linux Works, 3rd Edition - чтобы меньше тупить в командной строке и вообще понимать как устроена операционная система
- Terraform: Up and Running, 3rd Edition - инфраструктура как код это уже обязательный атрибут любой компании
- Snowflake: The Definitive Guide - достаточно популярный DWH, поэтому знать его полезно
- Kafka: The Definitive Guide, 2nd Edition - классика стриминговых решений, сложно без реальных кейсов
- Learning Spark, 2nd Edition - узнать все необходимое про Spark и попробовать на практике

Программирование:
- Clean Code: A Handbook of Agile Software Craftsmanship - классика жанра
- The Pragmatic Programmer: your journey to mastery - классика жанра
- Python Crash Course, 2nd Edition - 2-ая часть книги, где вы будете делать несколько реальных проектов (я сейчас игру делаю)
- Grokking Algorithms - чтобы понимать, что такое O(n), O(1), time & space complexity

Ну или можно просто прочитать одну книгу - I Will Teach You to Be Rich, Second Edition: No Guilt. No Excuses. слушая эту песню get rich or die tryin 😂

Докиньте рекомендаций
Приятная визуализация от Financial Times, если это действительно так. Напоминает фразу "Как сделать человеку хорошо - сделать плохо а потом как было". Как было уже не будет, но хоть так🫣
Нашел презентацию, которую я показывал на собеседовании в SAP в Москве на позицию Sales Engineer (Pre sales) год 2012-2013 - "Научим слона танцевать"😂

Для меня вообще казалось быть pre sales это самая интересная вакансия, с одной стороны ты знаешь продукт, индустрию, много путешествуешь, делаешь презентации и демо, посещаешь конференции и тренинги, а с другой стороны не сидишь на проектах.

В презентации есть слайды про ROI BI, можно прям в свое резюме добавлять, только цифры поменять. Будете рассказывать как вы помогли компании сэкономить кучу денег))

Но в итоге не договорились по зарплате.

PS Я был очень горд своим креативом на последнем слайде про Кристофари. (первый клиент сбера).

Кстати, у меня было много знакомых в sales, кто продавал решения Oracle, SAS, SAP и тп, и везде были откаты, даже для менеджера по продажам, например, за рекомендацию партнера или другие вещи. Как сейчас с откатами в ИТ?
AWS поделились инновациями zero ETL future. Идея в том, что они улучшают интеграцию между своими продуктами.

Есть база данных Aurora (Managed Postgres/MySQL), которая часто используется как back end для OLTP, и мы строим ETL, чтобы извлекать данные из источника, теперь можно будет сразу интегрировать OLTP базу в Redshift хранилище без создания data pipelines.

Тоже самое и про Spark, если раньше нужно было отдельно создавать EMR+Spark, Glue job , то теперь можно сразу из Redshift использовать Spark.

Но примерно такое же делают и другие вендоры, в Azure Synapse можно все делать в одном месте, в Snowflake есть Snowpark и тд.
Как вы думаете, почему SQL доминирует в аналитике и является самы популярным языком для работы с данными? Но вы можете со мной не согласиться, может быть это совсем не SQL. Я потом напишу интересную теорию, почему он популярный в следующем посте🤭
Отличная получилось дискуссию про SQL, я рад, что вам тоже нравится его простота и удобство.

Но я хотел бы посмотреть на простоту и удобство SQL, data engineering и ИТ в целом с другого ракурса.

Возможно все началось с книги Адам Смита - "Богатство нации", в которой он писал про успешную бизнес модель, где необходимо взять сложный процесс и разбить его на на маленькие задачки, которые могут выполнять не квалицированные и дешевые трудяги. Главная задача - легко найти и заменить человека, если вдруг он посчитал себя особенным и слишком умным.

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

Фабрики и заводы имели свой показатель успешности - PERL (Percentage of Easily Replaced Laborers). Интересно FAANG измеряют такое? Все необходимое для этого есть.

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

Еще немножко по этой теме. В книге "Миф о Е" Майкла Гербера написано:

The model will be operated by people with the lowest possible level of skills.

То есть хорошо использовать неквалифицированный труд, так как если нужны крутые спецы, то ваша бизнес модель в зоне риска и будет сложно ее воспроизвести.

The business model should be such that the employees needed posses the lowest possible level of skill necessary to fulfill the functions for which each is intended.

Вот и получается, что для фабрик, корпораций выгодней иметь дело с легко заменимыми сотрудниками.

При этом многие привыкли таже жить с узким кругозором и получать инструкции сверху.

Теперь вернемся к нашему изначальному вопросу, почему SQL популярен? Потому что он легкий.

Почему все крупные вендоры идут по пути упрощения решений, потому что будет легче обучить низкоквалифицированных людей и дать им клавиатуру с мышкой, чтобы они начинали приносить пользу, получали минимум денег, боялись потерять работу и были очень лояльными, ведь как и фабрики, корпорации дают нам job security, insurance, pension.

Вот и ИТ, как и фабрики, работают таким образом, что есть несколько крутых людей, кто понимает как все работает, а остальные 90% это легко заменимые люди, даже со знанием алгоритмов и структур данных.

Поэтому можно легко уволить тысячи людей и потом нанять снова других, все легко заменимые. А если еще все используют простые и понятные технологии SQL, Databricks, Snowflake и тп, то вообще класс, даже без опыта человек может быстро разобраться.

То есть по факту никакой job security🥺 Но при этом от вас хотят покорности и лояльности.

Так что я буду в роли профсоюза для дата специалистов🤓

Получился такой не стандартный ответ, про популярность SQL.🤪

PS на самом деле эти мыли навеяла книга Сет Годин "Linchpin Are you Indispensable", так что цените себя, свое время, и делайте то, что ВАМ выгодно и необходимо, а то владельцы фабрик, выпускники MBA вас быстро разведут на тяжелую работу за просто так😃

В ИТ в целом не так плохо, даже если вы легко заменимый спрос и темпы развития позволяют вам быть гибким и подстраиваться под ситуацию и пользоваться благами корпорация и уделять им столько внимания, сколько они заслужили.
Сегодня коллега показал Mermaid - простой язык для создания диаграмм прямо в документации (Notion, Mirro, Confluence). Это намного удобней, чес использовать тот же drawio для простых схем, который создает статические картинки, и потом их неудобно обновлять.

Я обычно использую draw.io потому что там есть все необходимое иконки Aws, azure.

Еще иногда использую python для создания диаграмм.

А вы что используете?
У меня уже есть небольшой опыт работы с Snowflake, не смотря на то, что до пандемии я написал книгу Jumpstart Snowflake, делал Snowflake user groups в Канаде и получил статус Snowflake Data Here (это такой статус их community), реальный опыт только появился летом.

Даже есть некоторые метрики по цене, в месяц за хранилище данных размером 830Тб стоит 100к+ US$. Используем pemifrost и terraform для управление хранилищем и доступом. Основные потребители это Looker, Tableau, dbt. Мой следующий вебинар для коллег будет про сравнение Looker и Tableau, так как "должен остаться только один!". Мы пока не используем Snowpark и хочется его сравнить с AWS Glue. Я попросил провести демо на эту тему их инженеров.

Несколько интересных ссылок по этой теме:
A Spark Developer’s Guide to Snowpark
Data Engineering with Snowpark Python and dbt

Вообще мне нравится работать с простыми технологиями, самостоятельно я могу сделать все что угодно, все просто и понятно, и если что-то сломается, я починю. Это к вопросу про легкозаменых людей. Другой вопрос, что я один могу сделать это быстрей чем команда из 3х менее опытных человек.

Потому что мой другой проект это вообще адок, он полностью состоит из Open Source решений, и чтобы добавить новый показатель в таблицу, это займет у меня неделю, нужно будет изменить код в 3-4х репозиториях. И тут конечно сложно заменить человека. Я не понимаю, почему 7 дата инженеров продолжают обслужить technical dbt, в котором есть Luigi, Airflow, Prefect, AWS Batch, куча custom code. Вместо того, чтобы убивать старое и плохое, мы продолжаем стоить новое, ничем не лучше, чем старое. Я как то писал про типы менеджеров, и это тот случай, когда директор по дата инжинирингу фанат открытого ПО и даже не знает преимуществ snowflake, databricks. Цена такого аналитического решения несколько тысячи $, но и объемы данных 50Тб для озера данных.

В целом хороший опыт, сразу участвовать в двух кардинально разных проектах. И видеть преимущества и недостатки каждого из них.

PS Я писал про возможность для желающих, кому нужно показать опыт в США/Канаде, могут использовать компания Rock Your Data - сайт работает, но у компании нет никаких активностей. Я даже на письма клиентов потенциальных не отвечаю.

Процесс примерно такой:
1) Добавляете себе компанию в Linkedin (любую вакансию)
2) Пишите в резюме про свои проекты (даже не настоящие)
3) Нужно написать статью на medium, чтобы опубликовать ее в блог компании
4) В linkedin в ленте компании расшарим пост и тег автора (это для надежности)
Для несерьезных контор этого вполне хватает, им не нужны доказательства, им важен ваш опыт.