Tech Stack cho Solo Dev kiếm 1000$/tháng

Dẹp bỏ những tech stack cồng kềnh, đây là bộ công cụ thực tế và đau thương nhất để bạn chạm mốc doanh thu đầu tiên mà không bị over-engineering.

·7 phút đọc

a computer with a keyboard and mouse

🏗️ Tại sao tech stack “xịn” lại giết chết solo dev?

Sáng thứ Ba tuần trước, tôi ngồi nhìn cái hóa đơn AWS 142$ cho một project mới có đúng 3 active users và nhận ra mình lại rơi vào cái bẫy over-engineering quen thuộc. Mọi người thích khoe kiến trúc microservices trên mạng xã hội, nhưng thực tế để kiếm những đồng tiền đầu tiên, bạn cần sự thô thiển.

Khi bạn code một mình, thời gian là tài nguyên đắt đỏ nhất. Bạn không có team DevOps để lo chuyện CI/CD hay scale database. Nhiều người cắm đầu vào dựng Kubernetes cluster hay học cách config Kafka ngay từ ngày đầu. Thật vô nghĩa.

Nhìn lại Lộ trình $1000/tháng cho Solo Dev: Đừng Ảo Tưởng mà tôi từng chia sẻ, cốt lõi nằm ở việc ra mắt sản phẩm nhanh và có người dùng trả tiền. Bạn cần một bộ công cụ đủ rẻ để không xót ví, và đủ dễ để sửa lỗi lúc 2 giờ sáng. Đáng buồn là những công cụ dễ dùng nhất lại đi kèm với những cái giá ngầm rất đắt.

⚡ Frontend & Hosting: Vercel và Next.js

Sự tiện lợi đánh đổi bằng vendor lock-in

Dùng Next.js deploy lên Vercel là combo mặc định hiện nay. Bạn đẩy code lên GitHub, 3 phút sau có link live. Mọi thứ mượt mà đến mức đánh lừa cảm giác của bạn.

Nhưng đừng vội mừng. Vercel free tier giới hạn execution timeout của serverless functions ở mức 10 giây. Cuối tháng trước, một API gọi sang Claude Sonnet 4.5 của tôi mất 12 giây để generate report, và Vercel thẳng tay cắt đứt kết nối. Lỗi 504 xuất hiện liên tục trên màn hình khách hàng. Bạn bị khóa chặt vào hệ sinh thái của họ, và khi vượt ngưỡng free, giá sẽ tăng rất sốc. Đây không phải là nền tảng để bạn scale rẻ mạt.

🗄️ Database: Supabase - Đẹp nhưng đau

Không phải lúc nào cũng mượt mà

Supabase cho bạn Postgres mạnh mẽ, auth và storage có sẵn. Nghe như giấc mơ cho bất kỳ ai làm web một mình. Nó giúp bạn bỏ qua bước setup backend rườm rà.

Thực tế thì sao? Giao diện quản lý đôi khi cực kỳ lag khi load bảng dữ liệu lớn. Việc viết Row Level Security (RLS) policies rất dễ sai sót. Hôm 20 tháng 5, tôi config nhầm một dòng RLS khiến 47 user không thể đọc được dữ liệu của chính họ. Supabase tốt, nhưng việc phụ thuộc quá nhiều vào UI của họ làm tôi thấy bất an về lâu dài. Nếu bạn không rành SQL, bạn sẽ gặp rắc rối lớn khi dữ liệu phình to.

🤖 Coding AI: Cursor và Claude Sonnet 4.6

Code nhanh không có nghĩa là code đúng

Tôi đã chuyển hẳn sang dùng Cursor làm editor chính. Kết hợp với Claude Sonnet 4.6, việc viết boilerplate code giảm đi đáng kể. Từ 47 file UI components, tôi chỉ mất 2 giờ để refactor xong toàn bộ.

Tuần trước, tôi thử dùng Claude Opus 4.5 để giải quyết một bug phức tạp về state management. Opus 4.5 suy luận sâu hơn, nhưng lại chèn thêm quá nhiều abstraction không cần thiết. AI thường có xu hướng viết code lặp lại thay vì tối ưu kiến trúc. Nếu bạn không kiểm soát chặt, codebase sẽ nhanh chóng biến thành một đống rác không thể bảo trì. Bạn có thể đọc thêm bài AI Code Nhanh Hơn, Nhưng Có Thực Sự Tốt Hơn? để thấy AI đôi khi làm hại tư duy hệ thống của chúng ta nghiêm trọng thế nào.

★★★★★

sách hay về chủ đề này

🛒 Xem giá & Mua ngay trên Tiki →

* Liên kết tiếp thị liên kết - giá không đổi với bạn

Giảm ma sát kỹ thuật nhưng tốn kém

Đừng tự build hệ thống checkout. Việc đó mất thời gian và rủi ro bảo mật cực kỳ cao. Một solo dev không nên đụng vào việc lưu trữ thẻ tín dụng.

Tôi dùng Stripe Payment Links. Tạo một link trên dashboard, gắn vào nút “Mua ngay” trên web. Xong. Nhược điểm duy nhất là phí giao dịch của Stripe khá chát đối với các giao dịch nhỏ lẻ, và việc rút tiền về Việt Nam đôi khi mất thời gian. Nhưng ở giai đoạn đầu, thà mất phí cao còn hơn không có ai mua vì checkout bị lỗi.

Thành phầnLựa chọn thực tếLựa chọn “ảo tưởng”Vấn đề sẽ gặp phải
HostingVercel (Hobby)AWS EKS / KubernetesTimeout function, vendor lock-in
DatabaseSupabaseTự host Postgres trên EC2Viết RLS phức tạp, dễ lỗi quyền truy cập
Thanh toánStripe LinksTự build checkout flowPhí giao dịch cao, setup payout rườm rà
Code ToolCursor + Sonnet 4.6Setup Neovim 100 pluginsAI viết code rác nếu không review kỹ

🛠️ Cách setup stack cho project đầu tiên

  1. Bắt đầu với một repo Next.js trống trên Cursor. Đừng dùng các boilerplate rác trên mạng.
  2. Tạo dự án Supabase, copy ngay API key vào file .env cục bộ.
  3. Thiết kế schema database trực tiếp trên giao diện Supabase, đừng mất thời gian viết migration file bằng tay lúc này.
  4. Setup Stripe Payment Links, tạo các gói sản phẩm và lấy link dán thẳng vào UI.
  5. Push code lên GitHub và kết nối với Vercel để auto-deploy.
  6. Đóng editor lại và tập trung đi tìm khách hàng thay vì ngồi tinh chỉnh CSS cho cái nút bấm.

❓ Câu hỏi thường gặp

Stack này có chịu được 10000 người dùng không?

Không. Nó được thiết kế để bạn kiếm 1000 đô la đầu tiên, không phải để xử lý traffic ngang ngửa Netflix. Khi đạt ngưỡng đó, hệ thống sẽ nghẽn và bạn sẽ có đủ tiền để đập đi xây lại.

Tôi có nên dùng Firebase thay vì Supabase?

Firebase NoSQL rất dễ bắt đầu nhưng cực kỳ khó query khi dữ liệu phức tạp lên. Tôi khuyên dùng Supabase vì Postgres cho bạn nền tảng dữ liệu quan hệ chuẩn mực hơn để mở rộng về sau.

Nếu Vercel đắt quá thì chuyển đi đâu?

Bạn có thể mua một con VPS trên Hetzner hoặc DigitalOcean giá 5 đô, cài Dokku và tự host. Nhưng hãy chuẩn bị tinh thần tự fix lỗi server sập lúc nửa đêm.

🎯 Kết luận

Tech stack tốt nhất không phải là thứ có nhiều công nghệ mới nhất. Nó là thứ giúp bạn ship sản phẩm ra thị trường nhanh nhất mà không làm bạn phá sản. Giới hạn của Vercel hay Supabase thực sự rất khó chịu, nhưng chính những giới hạn đó ép chúng ta phải tập trung vào business logic thay vì ngồi chơi đồ hàng với infrastructure. Hãy chọn stack đủ dùng, chấp nhận những nhược điểm của nó, và quay lại làm việc thực sự đi.

Bài viết liên quan

← Quay lại Blog