0

series Railway Bài 3: Khởi Tạo Và Kết Nối Cơ Sở Dữ Liệu (PostgreSQL & Redis)

Chúc mừng bạn đã đưa thành công ứng dụng đầu tiên "ra ánh sáng"!

Tuy nhiên, một ứng dụng thực tế hiếm khi chỉ in ra vài dòng chữ. Nó cần lưu trữ thông tin người dùng, sản phẩm, hoặc các phiên đăng nhập. Đó là lúc chúng ta cần đến Cơ sở dữ liệu (Database).

Railway làm cho việc thiết lập hệ thống cơ sở dữ liệu mạnh mẽ như PostgreSQL hay Redis trở nên dễ dàng đến mức bạn chỉ cần vài cú click chuột.

1. Tại sao lại cần Database trên Railway?

Khi bạn deploy ứng dụng ở Bài 2, mỗi khi ứng dụng khởi động lại (restart) hoặc có bản cập nhật mới, bộ nhớ tạm thời của máy chủ sẽ bị xóa sạch. Nếu bạn lưu dữ liệu vào các biến trong code hoặc file cục bộ, dữ liệu đó sẽ bay màu. Bạn cần một Dịch vụ (Service) độc lập để lưu trữ dữ liệu an toàn và lâu dài.

2. Thêm PostgreSQL hoặc Redis vào Project

Quay trở lại Project my-first-railway-app mà chúng ta đang làm việc ở Bài 2:

  1. Nhấn vào nút + New (Tạo mới) ở góc trên bên phải màn hình Project.
  2. Chọn Database.
  3. Bạn sẽ thấy một danh sách các loại Database phổ biến. Hãy chọn Add PostgreSQL (hoặc Redis nếu bạn muốn dùng nó để làm bộ nhớ đệm/cache).
  4. Đợi vài giây. Railway sẽ tạo ra một Service mới song song với ứng dụng Node.js của bạn.

Lúc này, Project của bạn đã có 2 Service: Một cho Backend (Node.js) và một cho Database (PostgreSQL).

3. Lấy thông tin kết nối (Connection String)

Để ứng dụng Node.js có thể "nói chuyện" được với PostgreSQL, nó cần một địa chỉ và mật khẩu.

  1. Click vào khối PostgreSQL vừa được tạo.
  2. Chuyển sang tab Connect.
  3. Tại đây, bạn sẽ thấy rất nhiều thông tin (User, Password, Port...). Tuy nhiên, Railway đã gom tất cả lại thành một đường dẫn duy nhất gọi là DATABASE_URL.
  4. Nhấn vào biểu tượng Copy bên cạnh dòng DATABASE_URL (nó sẽ có định dạng giống như thế này: postgresql://postgres:mat-khau-bi-mat@containers-us-west.railway.app:5432/railway).

4. Cho phép ứng dụng Node.js kết nối với Database

Thay vì copy-paste trực tiếp cái đường dẫn dài ngoằng đó vào trong file code index.js (rất nguy hiểm nếu bạn đẩy code lên GitHub cho mọi người xem), Railway có một cách thông minh hơn: truyền dữ liệu qua môi trường mạng nội bộ.

Vì cả Node.js và PostgreSQL đều nằm chung trong một Project trên Railway, chúng có thể tự động nhận diện nhau:

  1. Click vào khối Service Node.js của bạn.
  2. Chuyển sang tab Variables (Biến môi trường).
  3. Nhấn vào nút + Variable hoặc Reference Variable.
  4. Railway sẽ tự động gợi ý biến DATABASE_URL từ dịch vụ PostgreSQL bên cạnh. Hãy chọn nó và nhấn Add.

Khi bạn thêm biến này, Railway sẽ tự động khởi động lại ứng dụng Node.js của bạn. Bây giờ, trong file index.js, bạn có thể lấy đường dẫn kết nối database ra để sử dụng thông qua câu lệnh: const dbUrl = process.env.DATABASE_URL;

Bạn đã hoàn thành việc xây dựng kiến trúc cơ bản nhất của một hệ thống Backend thực thụ gồm Ứng dụng xử lý logic và Nơi lưu trữ dữ liệu hoàn toàn trên đám mây.


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í