Ship 26 NYC — Практикум — Запуск продакшн-приложения с v0 и Snowflake
VVercel
Computing/SoftwareInternet Technology
Transcript
00:00:00Всем привет! Добро пожаловать на воркшоп по интеграции v0 и Snowflake. Это специальный выпуск
00:00:12из Нью-Йорка. Две недели назад мы проводили аналогичный в Лондоне. Эта сессия предназначена для
00:00:23корпоративных клиентов Snowflake и v0. Чтобы использовать эту функцию, вам понадобятся обе интеграции.
00:00:31Позвольте сначала представиться. Меня зовут Дом, я пришел в Vercel четыре
00:00:39с половиной года назад как инженер. Сегодня я инженер по внедрению (forward deployed engineer) и помогаю крупнейшим
00:00:47корпоративным клиентам Vercel внедрять различные фреймворки, ИИ-нагрузки, агентов и
00:00:57в целом осваивать платформу. Джордан? — Да, всем привет! Меня зовут Джордан, я из Snowflake. Работаю
00:01:05там два года, я ведущий инженер-программист и занимался этой интеграцией со стороны Snowflake.
00:01:12Отлично. А теперь давайте перейдем к слайдам. Да,
00:01:23суть интеграции в том, что вы создаете приложения в инструменте v0 от Vercel. Это агентский инструмент разработки от Vercel
00:01:30с первоклассным опытом разработки на Next.js. И вы деплоите
00:01:37это приложение в Snowflake. После развертывания оно работает целиком внутри вашего аккаунта Snowflake,
00:01:41развертываясь с ролью Snowflake и используя управление доступом (RBAC) от Snowflake,
00:01:47а также ваш единый вход (SSO). В общем, все возможности Snowflake, причем изолированно
00:01:53и безопасно внутри вашего аккаунта. Идея в том, чтобы объединить лучшее из двух миров: удобство разработки (DX)
00:02:01от Vercel и корпоративные данные, комплаенс и RBAC от Snowflake.
00:02:10Небольшая оговорка: обычно воркшопы — это практические занятия,
00:02:17однако, как я сказал в начале, вам нужно быть корпоративным клиентом с обеих сторон. Поэтому мы
00:02:22покажем вам демо (даже несколько), а затем перейдем к интерактивной части, где спросим у аудитории,
00:02:29что мы можем собрать в v0 с помощью тестового набора данных Snowflake. А после
00:02:38перейдем к сессии вопросов и ответов. Сейчас я хочу показать, как мы в Vercel используем эту интеграцию.
00:02:48Есть три ключевых направления. Стандартный сценарий — создание интерактивных дашбордов в реальном времени. Их используют отделы продаж,
00:02:58чтобы отслеживать воронки, использование продуктов и динамику. Вам не нужно знать SQL, достаточно
00:03:07просто написать промпт, чтобы получить дашборд. Это базовый пример использования
00:03:17этой интеграции. Также у нас есть команды, отслеживающие внедрение продуктов или кастомные BI-решения
00:03:31в виде персонализированных приложений, которые мы покажем позже. Мой любимый сценарий, о котором я узнал
00:03:39совсем недавно в контексте моей команды в Vercel: вы можете создать собственный персонализированный дашборд по ARR и финансам вашей команды
00:03:50и детализировать данные до уровня SKU или конкретных сервисов. Я, например, раньше не знал, сколько выручки
00:03:57приносит моя команда, но в процессе подготовки к воркшопу обнаружил, насколько это удобно.
00:04:03Верно. Если здесь есть клиенты Snowflake, знакомые со Streamlit, — там делается много дашбордов.
00:04:14Одно из преимуществ нового подхода — возможность выйти за рамки обычных дашбордов. Дашборды — это
00:04:21отлично, они поддерживаются, но вы также можете делать внутренние инструменты. Это ведь JavaScript и Next.js, так что можно собрать
00:04:27все, что угодно. Внутренние утилиты получаются отличными: можно делать таблицы с записью,
00:04:31взаимодействующие с другими вашими таблицами, обогащая ваши данные. И даже агентские приложения:
00:04:38можно общаться со своими данными и при наличии времени создавать более сложные решения. Я сам
00:04:44использую это внутри компании для получения логов: хочу узнать, откуда взялся лог,
00:04:50кто пользователи, и изучить их подробнее. То есть в процессе
00:04:55исследования я могу легко переключаться от одного датасета к другому. Для таких задач это подходит идеально.
00:05:01Это ориентир того, что вы можете делать с помощью данной интеграции.
00:05:09Я могу описать процесс. Чтобы воспользоваться этой интеграцией, ваш администратор в корпоративном
00:05:16аккаунте Snowflake должен включить среду исполнения приложений (Snowflake App Runtime) в настройках,
00:05:23а затем включить интеграцию с Vercel. Это два шага, необходимых со стороны Snowflake.
00:05:29Со стороны Vercel администратор должен добавить Snowflake в вашу команду v0 в настройках
00:05:37во вкладке «Интеграции». Для иллюстрации: в v0 вы переходите в настройки аккаунта, добавляете интеграции,
00:05:47указываете идентификатор аккаунта Snowflake и затем подключаетесь к вашим датасетам.
00:05:58Вот как это выглядит, к примеру. Кажется, это скриншот из Vercel.
00:06:04Настройка завершена, идем дальше.
00:06:10Я покажу вам демо: начну с текстового запроса (промпта) — это
00:06:16первая часть, где v0 соберет приложение с дашбордом на основе данных. А во
00:06:25второй части я задеплою его в Snowflake. Там есть свои нюансы, я их объясню,
00:06:31пока v0 будет генерировать код. Но сразу дам подсказку:
00:06:39благодаря лучшим практикам Next.js и стратегиям серверного рендеринга (SSR),
00:06:47приложение будет исполняться на сервере и
00:06:51фактически находиться прямо рядом с вашими данными Snowflake из соображений безопасности. Я
00:06:55поясню это чуть позже. Итак, вот насколько просто выполнить деплой в инфраструктуру
00:07:05Snowflake. Да, вы не ослышались: v0 соберет проект, а затем он будет развернут
00:07:15с использованием вычислений Snowflake вплотную к данным Snowflake. Если вы корпоративный клиент, вы можете
00:07:24сканировать этот QR-код или, если хотите получить персональную демонстрацию от нашей команды продаж, отсканируйте его,
00:07:32и вам включат эту функцию. Что ж, перейдем к практической демонстрации.
00:07:47Конечно, мне нужно снова пройти аутентификацию через Okta, потому что это корпоративный аккаунт, и мы будем
00:07:54делать это довольно часто. Самое главное здесь — ключевое слово Snowflake.
00:08:05Вы просто пишете в промпте «используй Snowflake», а чтобы ускорить демо, я укажу: «используй датасет
00:08:14Crunchbase». Теперь я хочу сделать стандартное демо — создать дашборд,
00:08:25показывающий...
00:08:29информацию об IPO за последние годы, по сути, всю аналитику по IPO. Пусть v0
00:08:39сгенерирует это.
00:08:48Этого должно быть достаточно.
00:08:53Пока v0 готовит результат, сперва он проверит датасет Snowflake и сделает запрос. По идее,
00:09:03он должен запросить у меня разрешение или задать уточняющий вопрос.
00:09:09Так, Snowflake, поехали. Отлично.
00:09:18Возможно, понадобится... v0 должен попросить меня подключиться к базе данных Snowflake,
00:09:31после чего начнет запрашивать данные для сборки согласно моему промпту. Прямо сейчас я подключаюсь
00:09:53к Snowflake — в этом и заключается суть данной интеграции.
00:10:01v0 применит лучшие практики веб-производительности и Next.js по части
00:10:09стратегий рендеринга и кэширования, а затем соберет
00:10:15персонализированный дашборд реального времени. На генерацию уйдет около трех минут.
00:10:24Поэтому пока я хочу вам кое-что показать
00:10:29и рассказать. В ноябре прошлого года мы опубликовали статью в блоге,
00:10:36где пригласили несколько компаний протестировать интеграцию. Но я хочу подробнее рассказать,
00:10:45почему эта интеграция настолько крутая.
00:10:51v0 генерирует код для слоя управления доступом, подключающегося к вашим данным,
00:11:00и с нуля создает приложение Next.js. Однако при деплое оно разворачивается
00:11:06в инфраструктуре Snowflake — буквально в том же самом месте, где находятся данные.
00:11:14Причина — требования корпоративного сектора к комплаенсу, безопасности и скорости.
00:11:22Vercel управляет приложением на уровне аутентификации, а Snowflake берет на себя вычисления и данные.
00:11:29И еще один момент, о котором стоит упомянуть:
00:11:36когда вы создаете такое приложение, вы, конечно, используете его сами, но также можете
00:11:41отправить ссылку коллегам в вашей организации. Чтобы увидеть приложение, пользователь
00:11:49должен войти в систему и авторизоваться. Поэтому данные, которые откроются в приложении,
00:11:57будут ровно теми, на просмотр которых у конкретного пользователя есть права. Отправляя ссылку
00:12:02на этот дашборд, вы уверены: данные увидят только те, у кого есть соответствующие разрешения.
00:12:11Чтобы сэкономить время, я заранее развернул это приложение — до этого деплой занял 3 минуты 43 секунды.
00:12:38Не знаю, почему сейчас дольше — закон демо-эффекта в действии.
00:12:44Переустанавливаются зависимости...
00:12:49Вот приложение, которое было развернуто по точно такому же промпту: «Создай дашборд рынка IPO».
00:13:00Как видите, он полностью интерактивный.
00:13:14Так, процесс завершается.
00:13:27Видно: 50 000 IPO, общий привлеченный капитал, средние пиковые годы. Сгенерирован отличный дашборд, и вы можете дорабатывать его.
00:13:39И когда вы его публикуете,
00:13:42переходя по адресу, нужно авторизоваться. Это как раз те разрешения, о которых я говорил.
00:13:50Чтобы увидеть данные, мне нужно подтвердить свои права доступа в Snowflake. Приложение развернуто...
00:13:57Не знаю, видно ли вам URL,
00:14:00но оно работает на snowflakecompute.app.
00:14:04И каждый пользователь увидит данные в соответствии со своими правами.
00:14:10Итак,
00:14:16это был базовый успешный сценарий. Джордан покажет вам гораздо более
00:14:22продвинутую и интересную версию возможностей v0.
00:14:27Отлично, я переключу...
00:14:31ноутбук.
00:14:37Есть ли какие-то вопросы, пока мы переключаемся? Вопрос у вас?
00:14:45Подождите секунду, давайте дождемся микрофона.
00:14:49— Если у нас определены семантические модели в чем-то вроде dbt Cloud, есть ли способ связать их
00:14:54с этой системой, чтобы генерируемые запросы и доступные таблицы использовались моделями
00:15:01для проектирования?
00:15:05— То есть использовать семантическую модель для составления SQL-запросов, верно? Если вы используете dbt
00:15:11для управления самой моделью...
00:15:18Извините, переспросите еще раз. — Да, если мы используем dbt
00:15:25для разных уровней... допустим, у нас архитектура Medallion в Snowflake,
00:15:30но есть семантический слой dbt и используется dbt Cloud для управления им —
00:15:34можно ли привязать это сюда? — Да, вы можете направить модель промптами. Думаю, можно задать
00:15:40нужное направление, так как все работает на LLM. Здесь несколько уровней: уровень v0
00:15:46и уровень на стороне Snowflake. Если вы хотите оптимизировать процесс,
00:15:55есть много способов: от промптов до эвалов при выходе в продакшен.
00:16:02Сейчас это скорее «вайб-кодинг» — быстрое воплощение идеи из промпта. Я ответил на ваш вопрос? — Мне просто
00:16:08было интересно, есть ли там интеграция данных. — Да, есть, в том числе нативная.
00:16:13Их тут несколько.
00:16:23Да, в разделе наблюдаемости (observability) видно все, что происходит в приложении,
00:16:27как на стороне Snowflake, так и на стороне Vercel.
00:16:33Итак, для этого демо покажу вам сырые данные, с которыми буду
00:16:41работать. Это данные по электростанциям. Типичная ситуация: вы запускаете подобный запрос,
00:16:48выходит куча информации, долгота, широта, расположение объектов — в этом сложно
00:16:55сходу разобраться. Я заранее создал приложение, чтобы сэкономить время, пройдя те же шаги,
00:17:01что мы только что видели: выбираем аккаунт (у меня их несколько, и крупные клиенты
00:17:07могут выбирать нужный аккаунт для каждого отдельного чата).
00:17:13Но пойдем дальше. Сделаем интерфейс интереснее, потому что
00:17:20сейчас тут есть сводки и таблица, но я хочу сказать: «Добавь 3D-глобус
00:17:30для визуализации».
00:17:42Так как мы используем JavaScript и Next.js, система сможет подобрать подходящие библиотеки,
00:17:50чтобы отрендерить глобус. Она проанализирует существующие таблицы,
00:17:55возьмет широту и долготу и отобразит нечто более наглядное.
00:18:02Небольшая вводная: мы можем сначала пояснить, что это за датасет?
00:18:07Да, у нас тут данные по электростанциям в США. Источник данных —
00:18:15общедоступный датасет из Snowflake Marketplace, где можно приобретать наборы данных.
00:18:20Доступ к ним периодически обновляется, так что их удобно исследовать.
00:18:29Кажется, конкретно этот — бесплатный датасет, верно? — Да, верно.
00:18:37В Marketplace есть как платные, так и бесплатные датасеты. Их можно
00:18:41объединять со своими собственными данными для получения более глубокой аналитики.
00:18:49А еще они отлично подходят для демонстраций.
00:18:55Так.
00:18:59Похоже, сработало.
00:19:04Итак, вы можете показывать руководству или клиентам
00:19:13традиционные дашборды. Но с этой интеграцией и v0 вы можете создавать интерактивные
00:19:23визуализации данных в реальном времени,
00:19:29как в этом примере.
00:19:34Отлично, перейдем к интерактивной части. У нас есть этот бесплатный датасет
00:19:41из Маркетплейса, и мы можем протестировать промпты аудитории. Если кто-то хочет опробовать
00:19:46свой текстовый запрос для визуализации — мы можем сделать это сейчас, либо сразу перейти к сессии вопросов и ответов.
00:19:59Есть ли вопросы или кто-то хочет предложить свой промпт на проверку? С точки зрения возможностей —
00:20:09позволяет ли система запускать регрессионные модели и строить пайплайны внутри, или это
00:20:14скорее вайб-кодинг для исследовательской визуализации?
00:20:20— Я могу ответить, если не против. Это чистый вайб-кодинг для нетехнических специалистов.
00:20:28Однако мне нравится ваш вопрос, он отличный! Я бы...
00:20:35Есть ли тут интеграция...
00:20:44Так.
00:20:47Обычно у v0 есть интеграция с GitHub, и вы можете встроить код в привычный CI/CD цикл разработки.
00:20:56Здесь вы можете скачать код. Это прототип — у нас с Джорданом
00:21:05на сцене это заняло буквально минуту с небольшим. Генерация длилась 1 минуту
00:21:11и 53 секунды — сверхбыстрый вайб-кодинг, и это выглядит лучше привычных отчетов и дашбордов.
00:21:19Я бы выгрузил этот код и настроил эвалы и модель под ним.
00:21:33Смотрите, здесь задействована модель v0, но это не ИИ-приложение, с ним нельзя вести диалог.
00:21:39На слайде мы показывали целевое видение (North Star): есть классический BI, есть интерактивные
00:21:46персонализированные дашборды, и был третий пункт, который мы решили не показывать
00:21:51из-за нехватки времени. Но вы можете попросить v0: «Добавь возможность
00:21:59чата с моими данными», и v0 отлично это реализует. А далее уже стоит применить эвалы и пайплайны,
00:22:08чтобы исключить галлюцинации. Но это более сложный сценарий. Спасибо за вопрос,
00:22:14очень классный!
00:22:19Завершаем на этом или есть еще вопросы?
00:22:30— Когда вы деплоите приложение, как работает авторизация (OAuth)?
00:22:35— Отличный вопрос!
00:22:38После деплоя приложение находится в вашем аккаунте Snowflake. Не знаю,
00:22:41знакомы ли вы со Snowflake, но аутентификация работает так же:
00:22:48при переходе в приложение вы увидите запрос на вход. Какая бы система
00:22:54ни была настроена (в моем случае это SSO), она перенаправит вас
00:22:59на форму входа Snowflake: логин, пароль или единый вход.
00:23:04Дальше все происходит внутри Snowflake, и никакого подключения
00:23:10к Vercel уже нет. Вы авторизуетесь
00:23:13не в Vercel, а исключительно в своем аккаунте Snowflake.
00:23:19— Если это команда бизнес-пользователей без навыков разработки, им нужно заводить
00:23:26аккаунты в Snowflake? — Да, они должны быть в Snowflake. Хотя
00:23:32Snowflake работает над способами предоставления доступа к таким приложениям пользователям без аккаунтов.
00:23:39Кое-какая поддержка есть и сейчас, но полноценный функционал появится позже, так как
00:23:42потребность в этом действительно велика. Но войти под своей учетной записью можно,
00:23:50ведь в Snowflake есть разные роли. Вы можете выбрать,
00:23:56какие роли в v0 использовать для приложения при связывании этих двух
00:24:05сервисов. Очень важно, чтобы конечный пользователь видел только те данные, к которым
00:24:12у него есть доступ. Эта проблема полностью решена, и вы можете генерировать дашборды с учетом этого,
00:24:20что, на мой взгляд, просто отлично. Вот, пожалуйста: у вас есть эти роли, и вы можете
00:24:29скопировать их или просто указать: «v0, используй только эти роли для данного приложения». Спасибо за
00:24:36вопрос! — Я хотел спросить... Ой, осторожнее, это же твой экран, парень!
00:24:48Там буквально фотографируют данные. Отличные кадры! Я хотел спросить:
00:25:00если нужно создать подобные компоненты и встроить их в приложение Next.js, развернутое на Vercel —
00:25:09по сути, сделать компоненты, запрашивающие данные из Snowflake — это возможно при такой настройке?
00:25:19— Да, это возможно. Поднимите руки, кто использует v0? Можно задать вопрос
00:25:31аудитории: кто пользуется v0? Так, понятно. А кто использует Snowflake или является его клиентом?
00:25:41Клиентов Snowflake больше, отлично! Не так, как в Лондоне. Возвращаясь к вашему
00:25:48вопросу: вот ваши компоненты, как в shadcn, вот обзор станций. А где глобус?
00:25:59Должно быть, где-то здесь... может, в app?
00:26:08Ого, где же API? Наверное, на одной из страниц или вложена в один
00:26:13из этих компонентов.
00:26:18Неужели система сгенерировала весь глобус с нуля? Да, вот же он! Тут 167 строк кода UI-компонента.
00:26:27У вас есть доступ к этому коду, вы можете скачать его и дорабатывать. К слову,
00:26:34это было сделано с первого раза (zero-shot). Первая версия создана по начальному промпту,
00:26:44а добавление глобуса — по второму промпту (версия 2), так как в v0 идет версионирование v1, v2 и т. д. Ответил ли я на ваш вопрос?
00:26:52— Да, отлично, спасибо!
00:26:58Мы можем показать больше, если хотите. В v0 есть прямой...
00:27:04Кстати, вы сейчас, вероятно, увидите всю базу данных, к которой есть доступ.
00:27:08Это тестовый аккаунт, так что все в порядке. Вы можете исследовать свою
00:27:15базу данных прямо внутри v0, а значит, и вести с ней диалог. Вам не нужно
00:27:21деплоить приложение или создавать дашборды — можно просто общаться со своими данными в чате.
00:27:29Возможно, нужно переподключиться... Похоже, в этом аккаунте просто очень много таблиц.
00:27:34Да. Вы также можете выполнять SQL-запросы прямо из v0. В будущем
00:27:45появится еще больше возможностей. Но лично я считаю, что создание крутых интерактивных
00:27:51дашбордов с помощью вайб-кодинга — это главная фишка.
00:27:58Что ж,
00:28:01на этом, пожалуй, все. Если хотите протестировать это, просто свяжитесь с Vercel или Snowflake.
00:28:10Всем спасибо за внимание!