0

Series Chinh phục Heroku | Bài 1: Heroku là gì? Lời chia tay với những đêm thức trắng cấu hình Server

Trước đây, để đưa một website hay một API (như API đồng bộ dữ liệu giao dịch vé) lên mạng, bạn cần thuê một máy chủ vật lý hoặc máy chủ ảo (VPS), sau đó tự cài hệ điều hành (Ubuntu/CentOS), tự cài Nginx/Apache, cài PHP/Node.js, thiết lập Firewall, rồi mới đưa code lên.

Đó gọi là mô hình IaaS (Infrastructure as a Service - Hạ tầng như một dịch vụ). Nó cho bạn toàn quyền kiểm soát, nhưng cực kỳ tốn thời gian vận hành.

Heroku ra đời và định nghĩa lại cách chúng ta deploy với mô hình PaaS (Platform as a Service - Nền tảng như một dịch vụ).

1. Sự khác biệt cốt lõi: PaaS vs VPS (IaaS)

Tiêu chí VPS (Ví dụ: AWS EC2, DigitalOcean) Heroku (PaaS)
Môi trường Bạn tự cài OS, Database, Web Server Heroku chuẩn bị sẵn mọi thứ
Bảo mật hạ tầng Bạn tự lo cấu hình Firewall, cập nhật bản vá Chỉ bằng một lệnh git push
Cách Deploy Tự viết script CI/CD hoặc SSH vào server Chỉ bằng một lệnh git push
Mở rộng (Scaling) Phức tạp, tự setup Load Balancer Chỉ cần kéo thanh trượt trên Dashboard

2. Giải phẫu hệ thống Heroku: Dynos và Buildpacks

Để làm chủ Heroku, bạn chỉ cần nắm vững 2 khái niệm "xương sống" này:

A. Dynos (Động cơ ảo)

Khi bạn đưa code lên Heroku, code của bạn không chạy chung chạ trên một cái máy chủ khổng lồ. Heroku sẽ đóng gói code đó vào một (hoặc nhiều) container ảo cực nhẹ, gọi là Dyno.

  • Giống như các toa tàu điện, nếu lượng khách (traffic) tăng đột biến, bạn chỉ cần báo Heroku "nối thêm" 5 Dynos nữa. Hệ thống sẽ tự chia tải mà code không cần thay đổi một dòng nào.
  • Dyno cũng có tính "bốc hơi" (Ephemeral). Nếu nó bị lỗi hoặc bạn khởi động lại, mọi file bạn ghi trực tiếp lên ổ cứng của Dyno sẽ biến mất. (Đây là lý do bạn bắt buộc phải dùng Database ngoài, AWS S3 hoặc Cloudinary để lưu ảnh/file).

B. Buildpacks (Người thợ xây thầm lặng)

Làm sao Heroku biết dự án của bạn viết bằng ngôn ngữ gì để cài đặt môi trường? Đó là nhờ Buildpacks. Khi bạn push code lên, Buildpack sẽ quét qua mã nguồn:

  • Thấy file composer.json -> Tự hiểu đây là dự án PHP, lập tức cài PHP và chạy composer install.
  • Thấy file package.json -> Tự hiểu đây là dự án Node.js, lập tức cài Node và chạy npm install.
  • Thấy file go.mod -> Tự hiểu đây là dự án Golang, tự động build file thực thi.

3. Workflow "Thần thánh" của Heroku

Quy trình làm việc với Heroku kết hợp hoàn hảo với tư duy Git mà chúng ta đã rèn luyện ở series Bitbucket.

Thay vì quy trình phức tạp, với Heroku CLI (Command Line Interface), mọi thứ thu gọn lại trong 3 lệnh:

  1. heroku create ten-du-an: Tạo ngay một server mới trên cloud.
  2. git commit -m "update api": Lưu lại code của bạn.
  3. git push heroku main: Đẩy code lên. Heroku tự động nhận diện, build, và cung cấp cho bạn một đường link HTTPS (VD: [https://ten-du-an.herokuapp.com](https://ten-du-an.herokuapp.com)) chạy trực tiếp trên Internet.

Key insight: Heroku là môi trường cực kỳ lý tưởng để các kỹ sư Backend dựng nhanh các API thử nghiệm (mock API), các hệ thống microservices cỡ nhỏ, hoặc làm môi trường Staging (môi trường kiểm thử) cho dự án trước khi đưa vào hệ thống máy chủ nội bộ.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí