🔸
Привет! Cursor IDE, dev Containers, Env management, Advancing Github Actions, dbt reusable repo
Updates + Ideas Sharing за последние несколько недель:
🟡
Cursor IDE— Установил попробовать IDE with advanced AI support
— Довольно просто перейти с VS Code (кто не в курсе, Cursor forked from VS Code)
— Порадовали очень быстрые ответы Advanced AI Models
— За 2 дня разработки потратил квоту в 150 запросов 😆
— Ранее я пользовался VS Code + Github Copilot
— В целом, я не сказал бы, что это прямо disruptor & game changer (только если вы ранее не пользовались чем-то подобным), но по ощущениям - приятно, интересно, шустренько
Продолжу trial на slow requests
🔵
Development ContainersРегулярно пишу об этом, и понимаю, что уже стал dev containers advocate, но не перестаю восхищаться тем, как это оптимизирует деятельность.
Представьте, по клику для вас локально или в облаке создается рабочее окружение:
— Вы работаете над dbt-проектом: Python + dbt (clickhouse/snowflake/bigquery/...) + linter + AWS/GCP/Azure CLI + Anything
— Вы работаете над Observable Data App: Javascript + npm + Python + linters
— Вы работаете над Kafka SMT: Java/Scala + Maven/Gradle
Плюс
IDE Extensions: Kafka, Docker, Github, Gitlens, ...
Плюс
Any feature: zsh, Terraform, Kubernetes, Docker in Docker, AWS CLI
🟢
Environments managementА далее я продолжил размышлять над тем, чтобы тот же контейнер использовался в качестве окружения для запуска кода в средах TEST и PROD.
— Код гарантированно и с одинаковым результатом работает локально и на сервере / в облаке
—
TEST (CI): вы открыли PR - собралась новая версия Image, запустились тесты. Если ОК - вы получили зеленую галочку, PR можно вливать
—
PROD (CD): после merge собралась новая версия Image и она публикуется как основная версия приложения (либо для регулярных запусков dbt, например)
▶ Максимальная автоматизация (почти все работает само), унификация (у всех одинково, у тебя, меня, в облаке и на сервере), простота (обновляем версии, устанавливаем новые тулы, управляем зависимостями).
Звучит как рай? Или утопия?
🔴
Github Actions: self-hosted runners, act CLI, actionlint CLIПока это самый удобный и feature-rich способ организовать полный цикл разработки и поставки кода приложений / сервисов (на мой взгляд).
— Я создал несколько
self-hosted runners (linux based) - квота hosted runners ограничена
— При необходимости auto scaling можно использовать Kubernetes operator for
Actions Runner Controller (ARC)— Я собираюсь унифицировать и создать Actions /
reusable Workflows для всех своих нужд
— И далее в каждом проекте / репо ссылаться и переиспользовать код, заданный в одном месте
Конечно, не всё просто и легко. Есть нюансы: lifecycle management, clean up, pruning old/untagged images, optimize image build time, only build if specific files change (devcontainer.json, Dockerfile, requirements.txt).
Я устал открывать PRs и дергать Actions вручную. Feedback loop показался слишком длительным, поэтому:
— Стал использовать
actionlint = Static checker for GitHub Actions workflow files
— И научился имитировать запуски локально с
act CLI = Run your GitHub Actions locally 🚀
Но, в целом, это total disruption, на мой взгляд. Меня зажигает эта идея. Вся infra часть закрыта, всё работает как часы, максимум фокуса и усилий на решении бизнес-задач и создании ценности.
🟤
dbt repo (module) for importing as a packageЕсть идея вынести повторяющиеся части кода / макросы / тесты / функции в отдельный модуль:
— Работа с envs: dev, test, prod; Limit data for dev, test envs
— Macros: data masking, schema management, RBAC (Access grants), External tables, cleaning up
— Custom test suites
— Reusable dbt models (for specific data sources)
— Code linting (SQL Fluff, for example)
— Guidelines:
CONTRIBUTING.md, Code style and conventions, PR checklist
— Docs: generate and publish dbt Docs automatically
Ранее я уже делал нечто подобное для dbt-проектов на основе myBI Connect (data integration SaaS):
—
mybi-dbt-core - dbt module for myBI connect
—
mybi-dbt-showcase - myBI Connect + dbt showcase project