Настройка Neon (Serverless Postgres) для веб-приложения

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Neon (Serverless Postgres) для веб-приложения
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Neon Serverless Postgres для веб-приложения

Neon — serverless PostgreSQL с разделением хранилища и compute, бранчингом баз данных и автоматическим scale-to-zero. Compute инстанс запускается за ~500ms при первом запросе и останавливается после периода простоя. Платите только за активное время, а не за работающий сервер 24/7.

Ключевые возможности

Scale-to-zero: полезно для dev/staging окружений — не платить за простаивающие инстансы. Production с постоянным трафиком от scale-to-zero не выиграет — cold start задержка неприемлема для пользователей.

Branching: моментальные копии базы через copy-on-write. Каждая ветка — полноценный PostgreSQL endpoint:

# Ветка для PR-preview
neon branches create --name preview/pr-123 --parent main

# Ветка для разработки
neon branches create --name dev/feature-payments --parent main

Serverless Driver: HTTP-транспорт вместо TCP. Обязателен для edge runtimes (Cloudflare Workers, Vercel Edge Functions), где нет постоянных TCP-соединений:

import { neon } from '@neondatabase/serverless';

const sql = neon(process.env.DATABASE_URL!);

// Верхнеуровневый await в edge функции
export default async function handler(req: Request) {
  const posts = await sql`SELECT id, title FROM posts WHERE published = true LIMIT 10`;
  return Response.json(posts);
}

Подключение с Prisma

npm install @prisma/client @neondatabase/serverless prisma
// schema.prisma
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
  // Neon использует ?sslmode=require в URL
}
// lib/prisma.ts — в Edge Runtime используем HTTP-адаптер
import { PrismaClient } from '@prisma/client';
import { Pool, neonConfig } from '@neondatabase/serverless';
import { PrismaNeon } from '@prisma/adapter-neon';
import ws from 'ws';

neonConfig.webSocketConstructor = ws; // для Node.js

const pool = new Pool({ connectionString: process.env.DATABASE_URL });
const adapter = new PrismaNeon(pool);

export const prisma = new PrismaClient({ adapter });

Connection pooling

Бессерверные функции не держат долгоживущих соединений — каждый invocation открывает новое. Neon имеет встроенный PgBouncer (connection pooler):

# Обычное соединение (прямое к PostgreSQL)
postgresql://user:[email protected]/mydb

# Через пулер (для serverless)
postgresql://user:[email protected]/mydb?pgbouncer=true

Для Next.js serverless функций используйте pooler URL. Для долгоживущих процессов (cron jobs, workers) — прямое соединение.

Branching в CI/CD

# GitHub Actions — создать ветку для каждого PR
- name: Create Neon branch
  uses: neondatabase/create-branch-action@v5
  id: create-branch
  with:
    project_id: ${{ vars.NEON_PROJECT_ID }}
    api_key: ${{ secrets.NEON_API_KEY }}
    branch_name: preview/pr-${{ github.event.pull_request.number }}
    parent: main

- name: Run migrations on branch
  env:
    DATABASE_URL: ${{ steps.create-branch.outputs.db_url }}
  run: npx prisma migrate deploy

- name: Deploy Preview
  env:
    DATABASE_URL: ${{ steps.create-branch.outputs.db_url }}
  run: vercel deploy --env DATABASE_URL=$DATABASE_URL

# При закрытии PR — удалить ветку
- name: Delete Neon branch
  if: github.event.action == 'closed'
  uses: neondatabase/delete-branch-action@v3
  with:
    project_id: ${{ vars.NEON_PROJECT_ID }}
    branch: preview/pr-${{ github.event.pull_request.number }}
    api_key: ${{ secrets.NEON_API_KEY }}

Ограничения

  • Максимальный размер строки 8 КБ (стандартный PostgreSQL)
  • Не поддерживает некоторые PostgreSQL расширения (PostGIS поддерживается, btree_gist — да, pgaudit — нет)
  • Scale-to-zero cold start ~500ms — неприемлем для production с SLA < 1 секунды
  • Цена на высоких нагрузках может превысить dedicated PostgreSQL

Когда выбирать Neon

Подходит:

  • Next.js / Vercel приложения с переменной нагрузкой
  • Стартапы с низким начальным трафиком
  • Preview environments для каждого PR
  • Бессерверные функции на edge

Не подходит:

  • Высоконагруженные production системы (>1000 req/sec к БД)
  • Приложения с жёсткими latency требованиями
  • Long-running соединения (PostgreSQL LISTEN/NOTIFY, logical replication)

Сроки

Настройка Neon проекта, Prisma + HTTP-адаптер, CI pipeline с branching per PR, pooler для serverless: 1–2 дня.