[DevOps Thực Chiến] Vercel từ A-Z: Phép thuật Deploy "Chạm là Chạy"
Chào anh em, lại là mình đây.
Nhớ cái thời mới ra trường, mỗi lần code xong một con app muốn khoe với thiên hạ là cả một cực hình. Mua VPS trắng bóc, hì hục chui vào màn hình đen xì SSH, cài cắm Node.js, config Nginx mờ cả mắt, cài PM2 để giữ process không chết, rồi lại lóc cóc xin cái chứng chỉ SSL Let's Encrypt cho nó có cái ổ khóa xanh HTTPS. Làm xong mớ đấy mất cha nó nửa ngày thanh xuân.
Nhưng thời thế thay đổi rồi. Nhờ sự trỗi dậy của kiến trúc Serverless, chúng ta có một thế lực mang tên Vercel.
Giả sử anh em vừa hì hục code xong một con API siêu xịn bằng Node.js & TypeScript cho một hệ thống bất động sản chẳng hạn. Anh em muốn đẩy nó lên mạng trong đúng 1 phút mà không cần động vào một dòng lệnh Linux nào? Vercel chính là chân ái. Hôm nay mình sẽ hướng dẫn anh em bế con app lên Vercel từ A-Z chuẩn chỉ nhất.
1. Vercel là cái quái gì mà ảo ma vậy?
Vercel (công ty đứng sau Next.js) là một nền tảng cloud platform tập trung vào Frontend và Serverless Functions.
Khác với VPS truyền thống (máy chủ chạy 24/7), khi đẩy code lên Vercel, code của anh em sẽ được biến thành các Serverless Functions (Hàm không máy chủ). Nghĩa là: Lúc nào có user gọi API, Vercel mới "gọi hồn" code của anh em dậy để chạy. Chạy xong nó lại "ngủ" tiếp để tiết kiệm tài nguyên.
2. Bước 1: Chuẩn bị Source Code và cái bẫy vercel.json
Để Vercel hiểu được code của anh em, source code bắt buộc phải được đẩy lên một Git Provider (phổ biến nhất là GitHub).
Nhưng khoan đã, nếu anh em deploy Next.js, React hay Vue thì Vercel tự nhận diện phát một. Còn nếu anh em vác một con API thuần Node.js/Express lên, anh em phải "chỉ đường" cho nó bằng một file cấu hình thần thánh tên là vercel.json nằm ở thư mục gốc.
Tạo ngay file vercel.json và táng đoạn này vào:
Đặc biệt, nó miễn phí hoàn toàn cho project cá nhân (Hobby Tier) và tự động cấp sẵn SSL HTTPS luôn. Quá thơm!
{
"version": 2,
"builds": [
{
"src": "api/index.ts",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "api/index.ts"
}
]
}
Giải thích nhẹ: Đoạn này bảo Vercel là: "Ê, lấy file api/index.ts của tao build bằng môi trường Node.js nhé. Có bất kỳ request nào gõ vào URL thì cũng ném hết về file này xử lý".
Push toàn bộ code (bao gồm cả file vercel.json) lên GitHub.
3. Bước 2: 3 cú click chuột "Thần thánh" trên Vercel
Truy cập & Đăng nhập: Vào vercel.com, đăng nhập thẳng bằng tài khoản GitHub của anh em (cho nó tự link quyền với nhau).

Import Project: Bấm nút "Add New..." -> "Project". Nó sẽ hiện ra danh sách các repository trên GitHub của anh em. Thấy cái repo mình vừa push lên thì bấm nút Import.



Cấu hình Environment Variables (Biến môi trường): Đây là khúc cực kỳ quan trọng! Vercel không đọc được file .env trên máy anh em đâu (vì mình đã cho .env vào .gitignore rồi). Ở màn hình Configure Project, mở tab Environment Variables ra, anh em có bao nhiêu cái DB_HOST, DB_PASSWORD, JWT_SECRET thì copy/paste hết vào đây.




Chốt hạ: Bấm nút Deploy to đùng.
Lúc này, anh em cứ ngả lưng ra ghế nhâm nhi ngụm cafe. Vercel sẽ tự động kéo code về, tự chạy npm install, tự build TypeScript ra JavaScript, và nhét nó lên các Edge Servers vòng quanh thế giới. Chừng 30 giây sau, màn hình nổ pháo hoa tung tóe, anh em sẽ nhận được một cái URL xịn xò kiểu my-real-estate-api.vercel.app. Xong!
4. Bước 3: CI/CD "Tự động hóa" rảnh tay
Cái sướng nhất của Vercel không phải là lúc setup, mà là lúc bảo trì.
Vercel đã tự động gắn một cái "móc" (Webhook) vào repo GitHub của anh em. Từ nay về sau, anh em code thêm tính năng mới ở máy tính, chỉ cần gõ git push origin main.
Bùm! Vercel tự động nhận tín hiệu, tự lấy code mới nhất về, tự build và đè lên bản cũ trong âm thầm. Zero-downtime (không chết server phút nào). Anh em hoàn toàn thoát khỏi kiếp phải SSH vào server gõ git pull rồi pm2 restart.
5. Những "Cú lừa" của Vercel anh em cần biết để né
Đừng thấy hoa nở mà ngỡ xuân về. Vercel rất ngon, nhưng gói Free của nó có vài giới hạn "chí mạng" cho anh em làm Backend:
- Cold Start (Khởi động lạnh): Vì Serverless function sẽ "ngủ" khi không ai dùng, nên request đầu tiên gọi vào sau một thời gian dài nghỉ ngơi sẽ mất chừng 2-3 giây để Vercel "khởi động" lại code. Các request sau thì nhanh như điện. Đừng giật mình tưởng API mình code cùi nhé.
- Giới hạn thời gian (Timeout): Gói Free chỉ cho phép một API chạy tối đa 10 giây. Nếu anh em viết một cái hàm export file Excel hay convert ảnh tốn 15 giây, Vercel sẽ chém rớt cổ nó và ném ra lỗi 504 Gateway Timeout.
- Tuyệt đối không dùng được WebSocket/Socket.io: Serverless không thể duy trì một kết nối mở liên tục được. Anh em nào định làm chức năng chat real-time trên Vercel thì dẹp ngay ý định đó đi, phải xài dịch vụ ngoài như Pusher hoặc tách riêng một con VPS để chạy Socket.
- Không có Background Jobs: Anh em không thể cài Cronjob hay chạy các tiến trình ngầm (như Kafka consumer) trên Vercel được đâu. Nó chỉ sống khi có request HTTP chạm vào.
Lời kết
Tóm lại, nếu anh em làm Frontend, web tĩnh, blog, hay các RESTful API nhẹ nhàng (CRUD, lấy data từ Database trả về JSON), thì Vercel là "Trùm cuối". Nó giúp dev tập trung 100% vào việc code logic mà không phải nhức đầu với mớ bòng bong hạ tầng mạng.
All rights reserved