BẢNG GIÁBLOG
Ngôn ngữ

Cara Migrate dari Vercel ke Helipod: Full-Stack tanpa Batasan

Tim Helipod
Đăng ngày 7 phút đọc

Bài viết này được viết bằng tiếng Indonesia.

Vercel adalah pilihan populer untuk deploy Next.js dan frontend frameworks. Tapi banyak developer yang akhirnya sadar: Vercel hanya untuk frontend. Butuh backend always-on? Database? Queue workers? Kamu harus pakai layanan tambahan, dan masing-masing punya biaya sendiri.

Helipod adalah alternatif full-stack yang mendukung frontend, backend, dan database dalam satu platform, dan bayar Rupiah tanpa kartu kredit.

Artikel ini menjelaskan cara migrate dari Vercel ke Helipod.

Kenapa Migrate dari Vercel?#

Keterbatasan Vercel#

Fitur Vercel Helipod
Frontend (Next.js) ✅ Excellent ✅ Supported
Backend always-on ❌ Serverless only ✅ Containers
Database ❌ Via third-party ✅ PostgreSQL, MariaDB
Queue workers ❌ Via third-party ✅ Built-in
WebSocket ⚠️ Limited ✅ Full support
Cold start ⚠️ Ada ✅ Tidak ada
Harga $20/user/bulan Rp 350/hari mulai
Kartu kredit ✅ Diperlukan ❌ QRIS & Transfer
Bayar Rupiah ❌ ✅

Kapan Harus Migrate?#

Migrate ke Helipod jika kamu:

  • Butuh backend always-on (bukan serverless)
  • Butuh database dalam satu platform
  • Ingin bayar Rupiah tanpa kartu kredit
  • Ingin mengurangi biaya (Vercel Pro $20/bulan vs Helipod mulai Rp 350/hari)
  • Punya WebSocket atau real-time features
  • Butuh queue workers untuk background jobs

Persiapan Migration#

1. Audit Aplikasi Vercel#

Vercel Dashboard → pilih project → Settings

Catat:

  • Framework (Next.js, Nuxt, etc.)
  • Build command
  • Output directory
  • Environment variables
  • Domain settings
  • Functions (serverless)

2. Backup Environment Variables#

Vercel Dashboard → Settings → Environment Variables

Export semua env vars, kamu akan memindahkannya ke Helipod.

3. Pahami Perbedaan Serverless vs Container#

Vercel (Serverless):

Request → Vercik Edge → Serverless Function → Response
                ↑
          Cold start (500ms-2s)

Helipod (Container):

Request → Container → Response
         ↑
    Always-on, no cold start

Step-by-Step Migration#

Step 1: Buat Project di Helipod#

  1. Login ke helipod.io
  2. Klik New Project
  3. Beri nama (bisa sama dengan nama Vercel project)

Step 2: Deploy Frontend (Next.js)#

  1. Klik Add Service → GitHub/GitLab
  2. Connect repo yang sama dengan Vercel
  3. Helipod akan auto-detect Next.js

Catatan: Jika pakai Next.js, pastikan next.config.js punya output standalone:

// next.config.js
module.exports = {
  output: 'standalone',
}

Step 3: Deploy Backend (Jika Ada)#

Jika aplikasi punya backend terpisah:

  1. Klik Add Service → GitHub/GitLab
  2. Connect repo backend
  3. Atur resource (CPU & RAM)

Step 4: Deploy Database (Jika Perlu)#

Jika pakai PlanetScale, Neon, atau database lain:

  1. Klik Add Service → pilih PostgreSQL atau MariaDB
  2. Atur resource
  3. Deploy

Perbedaan penting:

# Vercel: pakai PlanetScale/Neon (third-party)
DATABASE_URL=mysql://xxx@planetscale.com/db

# Helipod: database dalam project
DATABASE_URL=postgresql://user:pass@postgres-db:5432/myapp
                                              ↑
                                      service name, bukan external URL

Step 5: Set Environment Variables#

Di tab Variables, tambahkan semua env vars dari Vercel:

# Frontend
NEXT_PUBLIC_API_URL=https://backend-api.helipod.app

# Backend
DATABASE_URL=postgresql://user:pass@postgres-db:5432/myapp
REDIS_URL=redis://redis-cache:6379
JWT_SECRET=your-secret

# Third-party APIs
STRIPE_SECRET_KEY=sk_live_xxx
SENDGRID_API_KEY=SG.xxx

Perbedaan Vercel vs Helipod:

Vercel Helipod Note
NEXT_PUBLIC_* NEXT_PUBLIC_* Sama, client-side
VERCEL_URL APP_URL Ganti manual
VERCEL_ENV APP_ENV Ganti manual
Serverless secrets Container secrets Sama cara pakainya

Step 6: Deploy#

Klik Deploy untuk setiap service. Helipod akan:

  1. Build image
  2. Deploy container
  3. Setup SSL & domain
  4. Connect ke database (jika ada)

Step 7: Test#

  1. Buka URL dari Helipod
  2. Test semua halaman
  3. Test API endpoints
  4. Test database connections
  5. Test WebSocket (jika ada)
  6. Cek logs untuk error

Step 8: Update DNS (Jika Pakai Custom Domain)#

Vercel:

Vercel Dashboard → Settings → Domains

Helipod:

Helipod Dashboard → Settings → Networking & Domains → Add Domain

Update DNS records:

  • Jika pakai Cloudflare: gunakan Grey Cloud (DNS Only)
  • Jika pakai other DNS: update A record atau CNAME ke Helipod

Perbedaan Kode#

Next.js Config#

Vercel:

// next.config.js: default Vercel
module.exports = {
  // Tidak perlu output: 'standalone'
}

Helipod:

// next.config.js: tambahkan standalone
module.exports = {
  output: 'standalone',
}

API Routes vs Backend Service#

Vercel, Serverless Functions:

app/
├── api/
│   ├── users/
│   │   └── route.ts    ← Serverless function
│   └── posts/
│       └── route.ts    ← Serverless function

Helipod, Backend Service:

project/
├── frontend/           ← Next.js (service terpisah)
├── backend/            ← Node.js/Laravel/Django (service terpisah)
└── database/           ← PostgreSQL/MariaDB (service terpisah)

Database Connection#

Vercel, External Database:

// PlanetScale, Neon, atau Supabase
const db = mysql({
  host: 'aws.connect.psdb.cloud',
  user: 'username',
  password: 'password',
  database: 'mydb',
});

Helipod, Internal Database:

// Database dalam project, gunakan service name
const db = postgresql({
  host: 'postgres-db',  // service name
  user: 'user',
  password: 'password',
  database: 'mydb',
});

Cold Start Handling#

Vercel, Perlu handle cold start:

// Serverless function: cold start bisa lambat
export default async function handler(req, res) {
  // First request mungkin lambat (500ms-2s)
  const data = await fetchData();
  res.json(data);
}

Helipod, Tidak ada cold start:

// Container always-on: response time konsisten
app.get('/api/data', async (req, res) => {
  const data = await fetchData();
  res.json(data);
});

Arsitektur: Vercel vs Helipod#

Vercel (Perlu Banyak Layanan)#

Vercel          → Next.js frontend
PlanetScale     → MySQL database
Upstash         → Redis cache
Vercel Functions → API endpoints
─────────────────────────────
Total: ~$69/bulan (~Rp 1.104.000)

Helipod (Satu Platform)#

Project: MyApp
├── Next.js Frontend   (0.25 vCPU, 512MB)
├── Node.js Backend    (0.5 vCPU, 1GB)
├── PostgreSQL         (0.5 vCPU, 1GB)
└── Redis              (0.25 vCPU, 256MB)
─────────────────────────────
Total: Rp 7.000/hari (~Rp 210.000/bulan)

Hemat 80% dengan Helipod.

Checklist Migration#

  • Audit aplikasi Vercel (framework, env vars, functions)
  • Backup environment variables
  • Tambahkan output: 'standalone' ke next.config.js
  • Buat project di Helipod
  • Deploy frontend (Next.js)
  • Deploy backend (jika ada)
  • Deploy database (jika perlu)
  • Set environment variables
  • Test semua fitur
  • Update custom domain
  • Test WebSocket (jika ada)
  • Monitor logs dan metrics

Troubleshooting#

"Build failed: output standalone"#

Pastikan next.config.js punya:

module.exports = {
  output: 'standalone',
}

"API routes not working"#

Vercel API routes tidak bisa dipindahkan langsung. Buat backend service terpisah atau konversi ke standalone API.

"Database connection refused"#

Pastikan gunakan service name (misal: postgres-db), bukan localhost atau external URL.

"Cold start still happening"#

Helipod tidak punya cold start. Jika ada delay, cek:

  • Resource allocation (CPU/RAM terlalu kecil?)
  • Database query lambat?
  • External API calls?

"WebSocket not connecting"#

Pastikan WebSocket di-handle di backend service, bukan di Next.js API routes.

FAQ#

Baca pakai Next.js API routes?#

Tidak langsung. Vercel API routes adalah serverless functions. Di Helipod, buat backend service terpisah (Node.js/Express, NestJS, Laravel) untuk API.

Apakah perlu ubah code?#

Minimal. Yang perlu diubah:

  1. Tambahkan output: 'standalone' di next.config.js
  2. Ganti VERCEL_URL → APP_URL
  3. Ganti database host → service name

Bagaimana dengan ISR/SSG?#

ISR (Incremental Static Regeneration) bekerja di Helipod. SSG (Static Site Generation) juga support.

Berapa biaya migration?#

Gratis. Biaya hanya untuk resource yang kamu pakai setelah migration.

Berapa lama migration?#

30-60 menit untuk aplikasi sederhana. 1-2 jam untuk aplikasi complex dengan database dan multiple services.

Kesimpulan#

Migration dari Vercel ke Helipod memberikan kamu:

  • Full-stack deployment: frontend + backend + database
  • Bayar Rupiah: QRIS, transfer bank, tanpa kartu kredit
  • Lebih murah: hemat hingga 80% dari Vercel + third-party services
  • Tidak ada cold start: container always-on
  • Full WebSocket support: real-time apps tanpa batasan

Mulai migration di helipod.io, tidak perlu kartu kredit.

Punya pertanyaan? Hubungi kami di support@helipod.io atau bergabung ke komunitas di hangar.helipod.io.

Blog

Bài viết liên quan

Xem tất cả

Sẵn sàng thử Helipod?

Triển khai ứng dụng ngay. Miễn phí, không cần thẻ tín dụng.
WhatsApp