Списком
Модель PaaS (Platform as a Service) стала відповіддю на потребу розробників зосередитись виключно на написанні коду, не витрачаючи час на управління серверами, операційними системами, веб-серверами та іншою інфраструктурою. PaaS надає повністю готову платформу для розробки, розгортання та масштабування застосунків — хмарний провайдер бере на себе відповідальність за весь стек нижче рівня застосунку.
Порівняно з IaaS, PaaS бере на себе додаткові рівні стека:
┌─────────────────────────────────────────────────────────────┐
│ Шар │ Клієнт (On-Premise) │ IaaS │ PaaS │
├─────────────────────────────────────────────────────────────┤
│ Дані │ Клієнт │ Клієнт │ Клієнт │
│ Застосунок │ Клієнт │ Клієнт │ Клієнт │
│ Рантайм (Node, Python, JVM) │ Клієнт │ Клієнт │Провайдер│
│ Middleware │ Клієнт │ Клієнт │Провайдер│
│ Операційна система │ Клієнт │ Клієнт │Провайдер│
│ Віртуалізація │ Клієнт │Провайдер│Провайдер│
│ Мережа/обладнання│ Клієнт │Провайдер│Провайдер│
└─────────────────────────────────────────────────────────────┘
Ключові характеристики PaaS:
| Перевага | Опис |
|---|---|
| Швидкість розробки | Деплоймент у хвилини: git push → застосунок запущений |
| Менше DevOps | Не потрібен спеціаліст з адміністрування серверів |
| Автоматичні патчі | ОС та рантайм оновлюються провайдером |
| Вбудована масштабованість | Конфігурується у кілька кліків або автоматично |
| Інтеграція з екосистемою | Готові конектори до БД, черг, моніторингу |
| Обмеження | Вплив |
|---|---|
| Менше контролю | Не можна налаштувати ОС, веб-сервер, мережевий стек |
| Vendor lock-in | Специфічні API та конфігурації прив’язують до провайдера |
| Обмеження рантайму | Лише підтримувані версії мов та фреймворків |
| Більша ціна | PaaS коштує більше, ніж аналогічний IaaS для великих навантажень |
AWS Elastic Beanstalk (EB) — PaaS-сервіс AWS, що автоматично провізіонує та управляє EC2-інстансами, Load Balancer, Auto Scaling Group та іншою інфраструктурою для запуску веб-застосунків.
Підтримувані платформи:
Як це працює:
Розробник: eb init → eb create → eb deploy
│
AWS: EC2 Launch Template ──► Auto Scaling Group
ALB + Target Group ──► EC2 Instances (рантайм)
CloudWatch Alarms ──► RDS (опціонально)
Route 53 CNAME ──►
# Ініціалізація проєкту
eb init my-app --platform python-3.11 --region eu-central-1
# Створення середовища
eb create my-app-prod --instance-type t3.medium --elb-type application
# Деплоймент
eb deploy
# Перегляд логів
eb logs
# Відкрити застосунок у браузері
eb open
# SSH до інстансу
eb ssh
Кастомне налаштування через YAML-файли у директорії .ebextensions/:
# .ebextensions/01-packages.config
packages:
yum:
git: []
postgresql-devel: []
option_settings:
aws:autoscaling:asg:
MinSize: 2
MaxSize: 10
aws:elasticbeanstalk:environment:process:default:
HealthCheckPath: /health
EB підтримує Blue/Green Deployment — стратегію нульового downtime при оновленнях:
Azure App Service — повноцінна PaaS-платформа Azure для веб-застосунків та API. Є більш зрілою та функціонально багатою PaaS-платформою порівняно з Elastic Beanstalk.
Підтримувані стеки:
App Service Plan (план) — визначає обчислювальні ресурси та рівень сервісу:
| Tier | Рівень | Особливості |
|---|---|---|
| Free (F1) | Dev/Test | 60 хв/день CPU, без SLA |
| Basic (B1–B3) | Dev/Test | Без auto scaling, без staging slots |
| Standard (S1–S3) | Production | Auto scaling, до 5 slots, custom domains+SSL |
| Premium (P1v3–P3v3) | Production | Покращені Azure VNet Integration, zone redundancy |
| Isolated (I1v2–I3v2) | Enterprise | Повна ізоляція, ASE |
Deployment Slots — одна з найпотужніших функцій Azure App Service: окремі екземпляри застосунку в межах одного App Service Plan:
Production slot: → my-app.azurewebsites.net (реальні користувачі)
Staging slot: → my-app-staging.azurewebsites.net (тестування)
Після тестування: Swap → Production ↔ Staging (миттєве переключення)
Переваги Swap:
Google App Engine (GAE) — один із перших PaaS-сервісів у хмарній індустрії (2008). Існує у двох варіантах:
Standard Environment:
Flexible Environment:
runtime: python311
entrypoint: gunicorn -b :$PORT main:app
automatic_scaling:
min_instances: 0
max_instances: 20
target_cpu_utilization: 0.65
env_variables:
DATABASE_URL: postgresql://...
handlers:
- url: /static
static_dir: static
- url: /.*
script: auto
# Деплоймент
gcloud app deploy
# Перегляд логів
gcloud app logs tail
# Перегляд версій
gcloud app versions list
# Розподіл трафіку між версіями (A/B testing)
gcloud app services set-traffic default --splits v1=0.8,v2=0.2
| Критерій | AWS Elastic Beanstalk | Azure App Service | Google App Engine |
|---|---|---|---|
| Простота старту | ★★★★☆ | ★★★★★ | ★★★★☆ |
| Підтримка мов | ★★★★☆ | ★★★★★ | ★★★★☆ |
| Deployment Slots | ❌ (Swap env) | ✅ (до 20 slots) | ✅ (версії) |
| Масштабування до 0 | ❌ | ❌ (min 1) | ✅ (Standard) |
| Кастомний Docker | ✅ | ✅ | ✅ (Flexible) |
| Інтеграція з екосистемою | AWS | Microsoft | GCP |
| VNet/VPC інтеграція | ✅ | ✅ | ✅ |
| Матуральність | Висока | Дуже висока | Висока |
Оберіть PaaS, якщо:
Залишайтесь на IaaS (K8s/EC2), якщо:
Сучасні PaaS рухаються у бік контейнерів:
Традиційний PaaS (Elastic Beanstalk, App Service) розроблявся для enterprise-команд із DevOps-спеціалістами та зосереджений на надійності та контролі. Нове покоління PaaS обрало протилежний пріоритет: максимально спростити шлях від коду до продакшну для окремого розробника або малої команди. Підхід отримав назву «DX First» (Developer Experience First).
Традиційний PaaS шлях: Нове покоління PaaS:
git push git push
│ │
▼ ▼
налаштуй buildspec.yml Автоматичне визначення фреймворку
створи середовище Автоматична збірка
налаштуй ALB/auto-scaling ✅ Deployed: https://myapp.vercel.app
додай SSL-сертифікат (< 30 секунд)
підключи CDN
додай env variables
...7–15 кроків...
✅ Deployed
Ключові характеристики нового покоління PaaS:
Vercel — найпопулярніша платформа для frontend та full-stack застосунків, створена командою Next.js (тепер: Vercel Inc.).
Ключові можливості:
feature-login.vercel.app)Підтримувані фреймворки: Next.js, React, Vue, Nuxt, SvelteKit, Astro, Remix, Angular, та інші.
Розгортання на Vercel:
# Варіант 1: через CLI
npm install -g vercel
vercel login
vercel # деплоймент поточної директорії
vercel --prod # деплоймент у production
# Варіант 2: Git-інтеграція (рекомендований)
# 1. Підключіть GitHub репозиторій у Vercel Dashboard
# 2. Кожен push → автоматичний деплоймент
# 3. Кожен PR → Preview URL
Vercel + Neon (serverless PostgreSQL):
// Підключення Neon через Vercel Storage (Next.js API Route)
import { sql } from "@vercel/postgres";
// або через Neon serverless driver:
import { neon } from "@neondatabase/serverless";
const db = neon(process.env.DATABASE_URL);
export async function GET() {
const users = await db`SELECT * FROM users LIMIT 10`;
return Response.json(users);
}
Netlify — піонер Jamstack-деплойменту (2015), зосереджений на статичних сайтах та serverless functions.
Ключові можливості:
netlify.toml — конфігурація:
[build]
command = "npm run build"
publish = "dist" # або "out", ".next", тощо
[build.environment]
NODE_VERSION = "20"
[[redirects]]
from = "/api/*"
to = "/.netlify/functions/:splat"
status = 200
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-Content-Type-Options = "nosniff"
Netlify Function (serverless backend):
// netlify/functions/users.js
export default async function handler(req, context) {
const { neon } = await import("@neondatabase/serverless");
const db = neon(process.env.DATABASE_URL);
const users = await db`SELECT id, name FROM users`;
return Response.json(users);
}
Render — найпоширеніша альтернатива Heroku для backend-застосунків (веб-сервіси, фонові задачі, PostgreSQL, Redis).
Ключові можливості:
render.yaml — Infrastructure as Code для Render:
services:
# Основний веб-сервіс
- type: web
name: my-api
runtime: node
buildCommand: npm ci
startCommand: node server.js
plan: starter # безкоштовний тир
envVars:
- key: NODE_ENV
value: production
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
# Воркер
- type: worker
name: email-worker
runtime: node
startCommand: node workers/email.js
databases:
- name: my-db
plan: starter # безкоштовно (90 днів)
databaseName: myapp
Особливість: Render — єдина з нових платформ, що надає постійно запущені процеси (на відміну від serverless Vercel/Netlify), що робить її ідеальною для WebSocket-серверів, фонових задач та будь-яких застосунків зі станом.
Railway — платформа з фокусом на максимальну простоту деплойменту будь-якого backend-стека.
Ключові можливості:
# railway.toml
[build]
nixpacks_config_file = "nixpacks.toml"
[deploy]
healthcheck_path = "/health"
restart_policy_type = "ON_FAILURE"
Нове покоління PaaS вводить концепцію serverless database — БД, що як і застосунок, масштабується до нуля при відсутності навантаження.
Neon (serverless PostgreSQL):
# Підключення Neon до Vercel проєкту
vercel env add DATABASE_URL
# або через Vercel Marketplace → Neon → Connect
# Migration (Prisma):
npx prisma db push
npx prisma migrate deploy
Supabase (Firebase-альтернатива на PostgreSQL):
// supabase/client.js
import { createClient } from "@supabase/supabase-js";
const supabase = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY,
);
// Select
const { data, error } = await supabase
.from("users")
.select("*")
.order("created_at", { ascending: false });
// Realtime subscription
supabase
.channel("users")
.on(
"postgres_changes",
{ event: "INSERT", schema: "public", table: "users" },
(payload) => console.log("New user:", payload.new),
)
.subscribe();
| Критерій | Vercel | Netlify | Render | Railway |
|---|---|---|---|---|
| Ідеально для | Next.js, frontend, Edge | Jamstack, static, forms | Backend сервіси, Always-on | Будь-який стек, швидкий старт |
| Backend runtime | Edge/Serverless | Serverless (Lambda) | Постійний процес | Постійний процес |
| PostgreSQL | Vercel Postgres (Neon) | Netlify DB (Neon) | Вбудований | Вбудований |
| Безкоштовний тир | Hobby (100 GB bandwidth) | Free (125k functions/міс) | Free (750 год/міс) | $5 credit/міс |
| Preview URLs | ✅ (кожен PR) | ✅ (кожен PR) | ✅ (PR environments) | ✅ (environments) |
| websocket / always-on | ❌ | ❌ | ✅ | ✅ |
| Docker підтримка | ❌ | ❌ | ✅ | ✅ |
| Vendor lock-in | Середній | Середній | Низький | Низький |
Оберіть Vercel/Netlify, якщо:
Оберіть Render/Railway, якщо:
Оберіть традиційний PaaS або IaaS, якщо:
PaaS звільняє розробника від управління інфраструктурою (ОС, рантайм, веб-сервер), дозволяючи зосередитись на бізнес-логіці. За це доводиться платити зниженим контролем та vendor lock-in.
AWS Elastic Beanstalk є оркестратором AWS-ресурсів (EC2, ALB, ASG), що підтримує широкий спектр платформ та кастомних конфігурацій через .ebextensions.
Azure App Service є найзрілішою PaaS-платформою з потужними Deployment Slots, вбудованою автентифікацією та глибокою інтеграцією з Microsoft-екосистемою.
Google App Engine Standard унікальний можливістю масштабування до нуля — ідеальний для застосунків з нерівномірним навантаженням та мінімальними витратами при простої.
Container-based PaaS (Cloud Run, Azure Container Apps, App Runner) стає новим стандартом — поєднує простоту PaaS з гнучкістю контейнерів.
Нове покоління PaaS (Vercel, Netlify, Render, Railway) ставить Developer Experience (DX) на перше місце: git push → автоматичний деплоймент, Preview URLs для кожного PR, serverless бази даних (Neon, Supabase). Vercel/Netlify оптимальні для frontend/Jamstack, Render/Railway — для backend із постійними процесами.