{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Yuriy Gavrilov: posts tagged Architecture",
    "_rss_description": "Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov",
    "_rss_language": "en",
    "_itunes_email": "yvgavrilov@gmail.com",
    "_itunes_categories_xml": "",
    "_itunes_image": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic-square@2x.jpg?1643451008",
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/gavrilov.info\/tags\/architecture\/",
    "feed_url": "https:\/\/gavrilov.info\/tags\/architecture\/json\/",
    "icon": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic@2x.jpg?1643451008",
    "authors": [
        {
            "name": "Yuriy Gavrilov - B[u]g - for charity.gavrilov.eth",
            "url": "https:\/\/gavrilov.info\/",
            "avatar": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic@2x.jpg?1643451008"
        }
    ],
    "items": [
        {
            "id": "304",
            "url": "https:\/\/gavrilov.info\/all\/epoha-tolstogo-brauzera-i-revolyuciya-lokalnyh-dannyh-na-wasm\/",
            "title": "Эпоха «Толстого» браузера и революция локальных данных на WASM",
            "content_html": "<p>В истории IT-архитектуры маятник всегда качался между двумя крайностями: централизацией и децентрализацией. Сначала были мейнфреймы (центр), затем «толстые» клиенты на ПК (локальные вычисления), а потом пришла эра веб-приложений, и индустрия массово мигрировала в Облака.<\/p>\n<p>Мы привыкли считать браузер лишь «тонким окном», интерфейсом, где вся магия, сложные вычисления и хранение происходят где-то далеко — на серверах AWS или Google. Но сегодня правила игры меняются. Благодаря технологиям WebAssembly (WASM), современному «железу» и новым подходам, браузер превращается в полноценную операционную систему для анализа данных или еще чего-то <a href=\"https:\/\/blog.openreplay.com\/ru\/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE-%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0-%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0\">blog.openreplay.com<\/a>. Посмотрите статью о “Руководство по Разработке Local-First Приложений”.<\/p>\n<h3>Почему мы уходили в облака и почему возвращаемся?<\/h3>\n<p><b>Эра миграции в облака:<\/b><br \/>\nВ 2010-х локальные машины были «бутылочным горлышком». Чтобы обработать гигабайты данных, требовались серверные стойки. Облака давали бесконечную масштабируемость. Архитектура сводилась к простой формуле: *данные пользователя → загрузка через сеть (latency) → обработка на сервере ($$$) → результат обратно клиенту*.<\/p>\n<p><b>Проблемы сегодняшнего дня:<\/b><\/p>\n<ol start=\"1\">\n<li><b>Избыточность мощностей:<\/b> Современный ноутбук аналитика (даже базовый MacBook Air на M-чипе) обладает вычислительной мощностью, сопоставимой с сервером десятилетней давности. Эти ресурсы простаивают, пока компании платят за облачные CPU.<\/li>\n<li><b>Сетевые задержки и стоимость:<\/b> Передать CSV-файл на 2 ГБ в облако для простой фильтрации или агрегации — это долго и дорого (ingress\/egress трафик).<\/li>\n<li><b>Приватность:<\/b> Передача чувствительных отчетов или персональных данных на чужой сервер для разового анализа всегда несет риски утечки и нарушений регуляторики.<\/li>\n<\/ol>\n<p><b>Решение: Приложения Local-First<\/b><\/p>\n<p>Технология WebAssembly (WASM) позволила запускать нативный код (C++, Rust, Go) прямо в песочнице браузера со скоростью, близкой к нативной <a href=\"https:\/\/habr.com\/ru\/articles\/892052\">habr.com<\/a>. Это породило новый класс ПО, которое выглядит как веб-сайт, но работает как десктопное приложение. Вы заходите на страницу, она загружает легковесный движок, и далее вы можете отключить интернет — приложение продолжит «перемалывать» ваши данные локально.<\/p>\n<h3>Новые герои: Сервер внутри вкладки<\/h3>\n<p>Уже сейчас существуют продукты, которые меняют представление о работе с данными. Они объединяют UX веб-приложений с мощностью десктопного софта, создавая ощущение, что сервер находится прямо у вас в RAM.<\/p>\n<h4>1. DataKit — Швейцарский нож аналитика<\/h4>\n<p>Проект <b>DataKit.page<\/b> — яркий пример такой архитектуры. Это не просто “просмотрщик файлов”, это полноценная ETL\/Analytics платформа, живущая в вашем браузере.<\/p>\n<ul>\n<li><b>Как это работает:<\/b> Вы перетаскиваете массивные файлы (CSV, JSON, Excel, Parquet) в окно. Они <b>не загружаются<\/b> на внешний сервер. Браузер получает доступ к файлу через `File System Access API`, а движок (основанный на DuckDB WASM) монтирует их виртуально.<\/li>\n<li><b>Функционал:<\/b>\n<ul>\n  <li><b>SQL и Python в одном окне:<\/b> Внутри работает не только SQL-движок, но и Python (через Pyodide). Вы можете использовать `pandas`, `polars`,  `numpy` и строить графики `matplotlib`, обращаясь к данным прямо с вашего диска.<\/li>\n  <li><b>AI на борту:<\/b> Интеграция с локальными LLM (через Ollama) или облачными провайдерами позволяет писать запросы на естественном языке, при этом сама схема и данные остаются у вас.<\/li>\n  <li><b>Умные форматы и коннекторы:<\/b> Платформа «нативно» понимает Parquet и вложенные JSON, автоматически определяя типы данных и аномалии. Кроме того, она может подключаться к S3, Google Sheets и базам данных PostgreSQL, выполняя федеративные запросы.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>2. DuckDB Local UI — SQL без инсталляции<\/h4>\n<p>Команда DuckDB в сотрудничестве с MotherDuck выпустила официальный локальный UI, работающий через расширение. Это прямой ответ на боль пользователей консольных утилит и отличный пример гибридного подхода <a href=\"https:\/\/habr.com\/ru\/companies\/cinimex\/articles\/913878\">habr.com<\/a>.<\/p>\n<ul>\n<li><b>Сценарий:<\/b> Раньше, чтобы поработать с локальной базой данных, нужно было либо мучиться в CLI, либо ставить тяжелый DBeaver. Теперь одной командой `duckdb -ui` или SQL-вызовом `CALL start_ui();` запускается локальный веб-сервер и открывается современный Notebook-интерфейс.<\/li>\n<li><b>Гибридность:<\/b> Вы работаете локально, но интерфейс имеет встроенную бесшовную интеграцию с облачным сервисом MotherDuck. Если для разового анализа локальных ресурсов достаточно, вы делаете это приватно. Как только требуется коллаборация или более мощные вычисления, вы можете переключить контекст выполнения в облако в том же окне.<\/li>\n<\/ul>\n<h4>3. Marimo – тетрадки, почти тот же подход имеет<\/h4>\n<p><a href=\"https:\/\/gavrilov.info\/all\/tetradki-nashe-vsyo-marimo-io-i-utochkadb\/\">https:\/\/gavrilov.info\/all\/tetradki-nashe-vsyo-marimo-io-i-utochkadb\/<\/a><\/p>\n<h4>3. PGlite и PondPilot — Postgres и SQL-песочницы<\/h4>\n<ul>\n<li><b>PGlite:<\/b> Этот проект идет еще дальше и компилирует полноценный PostgreSQL в WASM, позволяя запускать его в браузере или Node.js без эмуляции ОС <a href=\"https:\/\/habr.com\/ru\/articles\/873112\">habr.com<\/a>. Это идеально для тестирования, прототипирования и создания приложений, которые требуют совместимости с Postgres.<\/li>\n<li><b>PondPilot:<\/b> Пример open-source SQL-редактора, построенного вокруг DuckDB-WASM <a href=\"https:\/\/habr.com\/ru\/articles\/913682\">habr.com<\/a>. Он позволяет быстро анализировать локальные файлы (CSV, Parquet, JSON), сохраняет историю, поддерживает вкладки и даже предлагает виджет для встраивания интерактивных SQL-примеров в блоги и документацию.<\/li>\n<\/ul>\n<h3>Сдвиг парадигмы: От DBeaver к Браузеру<\/h3>\n<p>Многие аналитики и инженеры привыкли к классическим клиентам баз данных (DBeaver, DataGrip). Это мощные, но «тяжелые» инструменты, требующие установки, настройки драйверов и обновлений. Новый WASM-тренд предлагает более гибкую альтернативу.<\/p>\n<p><b>Сценарий «Мгновенной аналитики»:<\/b><br \/>\nПредставьте, что вам прислали ссылку на лог-файл в S3 размером 5 ГБ или Parquet-дамп.<\/p>\n<ul>\n<li><b>Старый путь:<\/b> Скачать файл → Установить\/открыть DBeaver → Настроить драйвер → Импортировать → Ждать загрузки → Писать SQL.<\/li>\n<li><b>Новый путь (WASM):<\/b> Открыть ссылку веб-приложения → Перетащить файл (или указать S3 URL) → Мгновенно писать SQL.<\/li>\n<\/ul>\n<p>Еще вариант, лог 30ГБ и вы заказали функционал в другой команде, она с радостью сказала, что через два спринта сделает пайплайн за неделю, но ей надо требования. Вы их конечно написали на основе небольшого семпла строк из excel или на основе документации и отдали в разработку. А через месяц получили отличный пайплайн или, который не нужен или его нужно еще доработать.<\/p>\n<p><b>Технологическая магия за кулисами:<\/b><\/p>\n<ol start=\"1\">\n<li><b>Apache Arrow:<\/b> Это скрытый герой революции. Бинарный колоночный формат Arrow позволяет передавать данные из SQL-движка (DuckDB) в JavaScript-интерфейс или Python-ячейку <b>без копирования и сериализации памяти<\/b> (Zero-copy). Это обеспечивает мгновенную реакцию интерфейса на миллионах строк — то, чего раньше было невозможно добиться при работе с DOM. (все помним D3JS)<\/li>\n<li><b>Федеративные запросы:<\/b> Локальное приложение умеет «ходить» в интернет. Вы можете написать `SELECT * FROM ‘s3:\/\/my-bucket\/file.parquet’` прямо из браузера. Движок скачает только нужные байты (range requests), обработает их локально и покажет результат. Данные не оседают на промежуточных серверах разработчика софта.<\/li>\n<\/ol>\n<h3>Органическое масштабирование и новая экономика<\/h3>\n<p>Для архитекторов платформ данных этот тренд открывает удивительную экономическую модель <b>«Bring Your Own Compute» или «Client-side computing» (Принеси Свои Вычисления)<\/b>.<\/p>\n<ul>\n<li><b>Масштабирование без усилий:<\/b> Вам не нужно создавать сложный кластер, чтобы тысячи пользователей могли фильтровать свои Excel-файлы. Вы просто хостите статические JS\/WASM файлы на CDN.<\/li>\n<li><b>Органическая нагрузка:<\/b> Вычислительная мощность вашего “облака” растет линейно с количеством пользователей, потому что каждый новый пользователь приносит свой CPU и RAM. Пользователи выключают компьютеры — ваше “облако” естественным образом уменьшается.<\/li>\n<li>Коллаборация и Воспроизводимость:**\n<ul>\n  <li>*Разовая задача:* Сделал анализ локально, закрыл вкладку — данные исчезли из памяти (полная приватность).<\/li>\n  <li>*Командная работа:* Написал SQL\/Python код локально, сохранил его (текст скрипта весит килобайты) и отправил коллеге. Коллега открыл ту же ссылку, подгрузился код, и магия вычислений произошла уже на его машине над теми же данными (если они в общем S3) или над его локальной копией.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Итого<\/h3>\n<p>Мы движемся к миру, где браузер — это не тонкий клиент, а <b>универсальная песочница для гибридных вычислений<\/b>.<\/p>\n<p><b>Разработчикам и Архитекторам:<\/b><\/p>\n<ol start=\"1\">\n<li><b>Присмотритесь к Serverless 2.0:<\/b> Истинный `serverless` — это не AWS Lambda, за которую вы платите. Это когда сервера нет вообще, а код исполняется на клиенте (`client-side computing`). Это дешевле, быстрее для пользователя и безопаснее, удобно разрабатывать и обновлять код.<\/li>\n<li><b>Privacy-first как преимущество:<\/b> Позиционируйте такие решения как безопасные по умолчанию. Аргумент “Ваши данные никогда не покидают ваш компьютер” становится решающим для Enterprise-сектора.<\/li>\n<li><b>Гибридная архитектура:<\/b> Не отказывайтесь от сервера полностью. Пусть браузер берет на себя интерактивную работу, парсинг и предобработку, а сервер подключается для тяжелых “батчей” или работы с петабайтами данных в том же привычном окне.<\/li>\n<\/ol>\n<p><b>Пользователям и Аналитикам:<\/b><\/p>\n<ol start=\"1\">\n<li><b>Осваивайте инструменты:<\/b> Попробуйте <a href=\"https:\/\/datakit.page,\">https:\/\/datakit.page,<\/a> <a href=\"https:\/\/app.pondpilot.io\">https:\/\/app.pondpilot.io<\/a> или <a href=\"https:\/\/shell.duckdb.org\">DuckDB WASM Shell<\/a> для разведочного анализа данных. Это часто быстрее, чем запускать локальный Jupyter.<\/li>\n<li><b>Используйте облачные хранилища напрямую:<\/b> Учитесь подключать S3, Google Sheets и другие облачные источники напрямую к таким инструментам. Это дает мощь облачного хранения в сочетании со скоростью и приватностью локального интерфейса.<\/li>\n<\/ol>\n<p>Ренессанс локальных вычислений начался. Ваш браузер способен на большее, чем просто отображать HTML. Он становится вашей персональной дата-лабораторией.<\/p>\n",
            "date_published": "2025-12-13T01:20:55+03:00",
            "date_modified": "2025-12-13T01:20:35+03:00",
            "tags": [
                "Architecture",
                "Data",
                "Dev",
                "Platform"
            ],
            "_date_published_rfc2822": "Sat, 13 Dec 2025 01:20:55 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "304",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "234",
            "url": "https:\/\/gavrilov.info\/all\/analiz-knigi-postroenie-evolyucionnyh-arhitektur\/",
            "title": "Анализ книги – построение эволюционных архитектур",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-04-20-v-14.32.46.png\" width=\"780\" height=\"988\" alt=\"\" \/>\n<\/div>\n<p><a href=\"http:\/\/a.gavrilov.info\/data\/posts\/building_evolutionary_architectures_support_constant_change_1nbsped.pdf\">Полная версия тут <\/a><\/p>\n<p><b>Краткое содержание<\/b><\/p>\n<p>Книга “Построение эволюционных архитектур” Нила Форда, Ребекки Парсонс и Патрика Куа рассматривает подход к разработке программных систем, которые легко адаптируются к изменениям и новым требованиям. Книга подчеркивает важность постепенных изменений, объективных критериев оценки архитектуры (fitness-функций) и разумной связанности между компонентами. Авторы подробно описывают принципы, практики и антипаттерны эволюционного подхода, чтобы помочь читателям создавать гибкие и устойчивые системы.<\/p>\n<p><b>Основные тезисы и выводы<\/b><\/p>\n<ul>\n<li>Эволюционная архитектура – это не просто методология, это философия:** Подход к построению систем, которые “учатся” и адаптируются к изменениям, в отличие от жёстких, заранее спланированных архитектур.<\/li>\n<li>Изменения неизбежны и к ним надо готовиться:** Современный мир разработки требует гибкости. Эволюционные архитектуры призваны облегчить внесение изменений, а не предотвращать их.<\/li>\n<li>Fitness-функции – это компас для эволюции:**  Объективные критерии оценки архитектуры, которые помогают защитить важные её характеристики в процессе изменений (производительность, безопасность, масштабируемость и т.д.).<\/li>\n<li>Постепенность и малые изменения – основа успеха:**  Небольшие инкрементальные изменения легче контролировать, тестировать и развертывать, чем крупные реструктуризации. Большие изменения происходят из маленьких шагов.<\/li>\n<li>Связанность должна быть разумной и осознанной:**  Чрезмерная связанность (coupling) затрудняет изменения. Необходимо стремиться к минимальной связанности, необходимой для решения бизнес-задач и функциональной целостности. Разумная связанность должна обеспечивать масштабируемость и надежность.<\/li>\n<li>Команда и культура важны не меньше, чем технологии:** Успешное внедрение эволюционной архитектуры требует кросс-функциональной команды с культурой экспериментов и автоматизации (DevOps).<\/li>\n<li>Инструменты и автоматизация – основа практики:** Автоматизированные процессы и конвейеры развертывания (deployment pipelines) позволяют быстро и надежно вносить изменения и оценивать их влияние на архитектуру. Автоматизация позволяет снизить цену изменений.<\/li>\n<\/ul>\n<p><b>Заключение<\/b><\/p>\n<p>Книга “Построение эволюционных архитектур” предоставляет ценную методологию для разработки программных систем, способных адаптироваться к постоянным изменениям. Книга будет полезной для архитекторов, разработчиков и руководителей, стремящихся создавать гибкие, устойчивые и конкурентоспособные решения. Эта книга – практическое руководство по эволюции программного обеспечения, а не попытка навязать еще один “серебряный шар”.<\/p>\n<p><b>Рекомендации<\/b><\/p>\n<ol start=\"1\">\n<li><b>Начните с анализа текущей архитектуры:<\/b>  Определите узкие места, критические зависимости и области, требующие большей гибкости.<\/li>\n<li><b>Определите ключевые fitness-функции:<\/b> Какие характеристики архитектуры наиболее важны для бизнеса? Установите объективные критерии их оценки.<\/li>\n<li><b>Постепенно внедряйте конвейеры развертывания (deployment pipelines):<\/b> Автоматизируйте процессы сборки, тестирования и развертывания небольших изменений.<\/li>\n<li><b>Поддерживайте культуру экспериментов:<\/b> Поощряйте небольшие, контролируемые эксперименты с новыми технологиями и подходами.<\/li>\n<li><b>Используйте потребительски ориентированные контакты:<\/b> Отслеживайте требования потребителей и используйте feedback для постоянного совершенствования архитектуры.<\/li>\n<li><b>Создавайте небольшую, но эффективную команду:<\/b> Кросс-функциональная команда с необходимыми навыками будет залогом успешной эволюции архитектуры.<\/li>\n<li><b>Учитывайте организационные факторы:<\/b> Адаптируйте структуру команды, процессы бюджетирования и управления изменениями, чтобы поддерживать эволюционный подход.<\/li>\n<li><b>Применяйте на практике теорию Эрика Эванса в книге “Домен управляемый дизайн”:<\/b> Эффективные архитектурные решения будут приниматься с учетом предметной области.<\/li>\n<\/ol>\n<p><b>План действий согласно книге<\/b><\/p>\n<ol start=\"1\">\n<li><b>Оценка текущей ситуации:<\/b>\n<ul>\n  <li>Анализ архитектуры: Определение проблемных мест, связей, которые необходимо уменьшить.<\/li>\n  <li>Оценка зрелости команды: Анализ навыков, процессов и культуры разработки.<\/li>\n<\/ul>\n<\/li>\n<li><b>Определение целей и стратегии:<\/b>\n<ul>\n  <li>Определение ключевых бизнес-целей: Что должна обеспечивать архитектура? Чего ожидает бизнес? Какова ключевая ценность?<\/li>\n  <li>Выбор стиля архитектуры:  Учитывая ограничения и требования, выбрать подходящий стиль архитектуры (микросервисы, SOA, монолит с модульной структурой и т.д.).<\/li>\n<\/ul>\n<\/li>\n<li><b>Внедрение изменений:<\/b>\n<ul>\n  <li>Разработка fitness-функций:  Для защиты архитектуры с новыми возможностями.<\/li>\n  <li>Постепенные изменения с использованием deployment pipelines: Автоматизация процессов сборки, тестирование, изменение<\/li>\n  <li>Создание Cross-функциональной команды: Поместите все необходимые ресурсы в команду, чтобы уменьшить препятствия.<\/li>\n<\/ul>\n<\/li>\n<li><b>Непрерывное совершенствование:<\/b>\n<ul>\n  <li>Анализ метрик и feedback:  Постоянный сбор информации о работе системы и ее воздействии на бизнес.<\/li>\n  <li>Регулярный пересмотр архитектуры и fitness-функций:  Адаптация к изменяющимся требованиям и технологиям.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n",
            "date_published": "2025-04-20T14:33:38+03:00",
            "date_modified": "2025-04-20T14:34:33+03:00",
            "tags": [
                "Architecture",
                "big data",
                "IT"
            ],
            "image": "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-04-20-v-14.32.46.png",
            "_date_published_rfc2822": "Sun, 20 Apr 2025 14:33:38 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "234",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-04-20-v-14.32.46.png"
                ]
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171e)"
}