0
0
Lập trình
TT

Khám Phá Hasura: Nền Tảng GraphQL Thế Hệ Mới Cho Các Nhà Phát Triển

Đăng vào 2 tuần trước

• 6 phút đọc

Giới thiệu

Trong thời đại công nghệ 4.0, việc phát triển các API hiệu quả, linh hoạt và tiết kiệm thời gian trở nên quan trọng hơn bao giờ hết. Hasura là một nền tảng GraphQL hiện đại, nổi bật với khả năng tự động hóa quy trình tạo API từ cơ sở dữ liệu, và đang trở thành một công cụ ưa chuộng trong cộng đồng lập trình viên.

Hasura cho phép bạn nhanh chóng chuyển đổi cơ sở dữ liệu của mình thành API GraphQL hoàn chỉnh chỉ trong vài phút, giảm thiểu đáng kể thời gian phát triển và gia tăng tốc độ triển khai ứng dụng.

Nội dung chính

Các tính năng nổi bật

Tự động hóa tạo API GraphQL

  • Hasura có khả năng tự động tạo API GraphQL dựa trên cấu trúc bảng và dữ liệu trong cơ sở dữ liệu của bạn, giúp giảm thiểu công sức lập trình thủ công.
  • Hỗ trợ đầy đủ các thao tác CRUD (Create, Read, Update, Delete).

Ví dụ: Bạn có thể tạo bảng users trong PostgreSQL như sau:

sql Copy
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    email TEXT UNIQUE,
    created_at TIMESTAMP DEFAULT NOW()
);

Và thực hiện các truy vấn như:

graphql Copy
GET:
query {
  users {
    id
    name
    email
  }
}

UPDATE hoặc CREATE:
mutation {
  insert_users(
      objects: { name: "Viblo", email: "Viblo@example.com" },
      on_conflict: {
          constraint: constraint_key,
          update_columns: [name, email]
      }
  ) {
    returning {
      id
      name
    }
  }
}

Hỗ trợ thực tế theo thời gian (Real-time)

  • Live Queries: Tạo điều kiện cho ứng dụng theo dõi thay đổi dữ liệu theo thời gian thực.
  • Caching: Tăng tốc độ truy vấn thông qua việc lưu trữ dữ liệu cache.

Ví dụ: Một ứng dụng chat có thể sử dụng Live Queries để hiển thị tin nhắn mới ngay khi được gửi:

graphql Copy
subscription {
 messages {
    id
    content
    author {
        name
        email
        avatar
    }
    created_at
  }
}

Quản lý quyền truy cập linh hoạt

  • Hasura cho phép bạn kiểm soát quyền truy cập vào dữ liệu thông qua các vai trò (roles). Mỗi vai trò sẽ được cấu hình chi tiết để giới hạn người dùng chỉ truy cập những dữ liệu mà họ được phép.

Ví dụ:

  • Vai trò admin có quyền truy cập tất cả các trường.
  • Vai trò user chỉ có thể xem thông tin nhưng không thể chỉnh sửa dữ liệu.

Tích hợp với REST và các nguồn dữ liệu khác

  • Hasura cũng cho phép bạn thêm các API REST vào schema GraphQL của mình. Bạn có thể thêm các đầu API ở mục ACTIONS trong tài liệu Hasura.
  • Hỗ trợ kết nối tới các dịch vụ bên ngoài hoặc microservices bằng cách nhúng các schemas khác vào phần REMOTE SCHEMAS.

Mở rộng và tùy chỉnh

  • Hỗ trợ tích hợp các webhook hoặc xử lý business logic bằng serverless functions.
  • Dễ dàng tích hợp vào quy trình DevOps nhờ hỗ trợ Docker, Kubernetes, và các công cụ CI/CD như Jenkins, GitHub Actions.
  • Khả năng kết nối với nhiều loại cơ sở dữ liệu như PostgreSQL, MySQL, SQL Server, BigQuery, và REST API (thông qua Remote Schemas).

Lợi thế của Hasura

Mặc dù có nhiều công cụ khác hỗ trợ việc xây dựng API, nhưng Hasura nổi bật với các tính năng tự động hóa và hiệu suất. Dưới đây là bảng so sánh giữa Hasura với một số công cụ xây dựng API phổ biến như Apollo Server và Firebase:

Tính năng Hasura Apollo Server Firebase
Tự động tạo API Có (dựa trên cấu trúc cơ sở dữ liệu) Không (phải định nghĩa schema và resolver) Không (hỗ trợ REST/Firestore APIs)
Hỗ trợ GraphQL Không
Quản lý quyền (RBAC) Có (chi tiết theo vai trò) Có (thủ công qua resolver) Có (cơ bản, dựa trên Firebase Rules)
Thời gian thực (Realtime) Có (Live Queries, Subscriptions) Có (Subscriptions) Có (Realtime Database, Firestore)
Hiệu suất Cao (caching, phân trang tự động) Phụ thuộc vào triển khai Cao (nhưng hạn chế tính linh hoạt)
Triển khai Nhanh chóng (Docker/Kubernetes) Thủ công Dễ dàng qua nền tảng Firebase
Hỗ trợ nhiều loại cơ sở dữ liệu Có (PostgreSQL, MySQL, SQL Server,...) Không (GraphQL-only) Không (Firestore hoặc Realtime DB)
Học tập và triển khai Dễ dàng, cấu hình nhanh Khó hơn (cần nhiều mã tùy chỉnh) Dễ dàng, giao diện trực quan

Hạn chế của Hasura

  • Có một số nhược điểm như sau:
    • Phụ thuộc vào PostgreSQL (dù đang mở rộng sang MySQL, SQL Server).
    • Việc kết hợp nhiều nguồn dữ liệu hoặc schema phức tạp có thể gặp khó khăn.
    • Yêu cầu kiến thức cơ bản về Docker/Kubernetes để triển khai hiệu quả.

Hướng dẫn cài đặt Hasura

Cấu hình Docker:

yaml Copy
version: "3.6"
services:
  postgres:
    image: postgres:15
    container_name: postgres
    ports:  
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: hasura
    volumes:
      - postgres_data:/var/lib/postgresql/data

  hasura:
    image: hasura/graphql-engine:v2.38.1
    container_name: hasura
    ports:
      - "8080:8080"
    depends_on:
      - postgres
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:postgres@postgres:5432/hasura
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
      HASURA_GRAPHQL_ADMIN_SECRET: demo
    volumes:
      - hasura_metadata:/hasura-metadata

volumes:
  postgres_data:
  hasura_metadata:
  • Giải thích các thông số:
    • POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB: Cấu hình tên người dùng, mật khẩu, và tên cơ sở dữ liệu PostgreSQL.
    • HASURA_GRAPHQL_DATABASE_URL: URL kết nối tới PostgreSQL.
    • HASURA_GRAPHQL_ADMIN_SECRET: Thiết lập mật khẩu bảo mật cho bảng điều khiển Hasura.

Chạy Hasura

Bạn có thể chạy ứng dụng bằng câu lệnh sau:

Copy
docker-compose up -d
hoặc
docker compose up -d

Kết quả đạt được

  • Truy cập http://localhost:8080.
  • Đăng nhập bằng HASURA_GRAPHQL_ADMIN_SECRET đã thiết lập.
  • Kết nối với cơ sở dữ liệu PostgreSQL đã được cấu hình.

Kết luận

Hasura là một lựa chọn tuyệt vời cho các nhà phát triển muốn xây dựng API nhanh chóng và hiệu quả. Với nhiều tính năng ưu việt như khả năng real-time, tự động hóa GraphQL và quản lý quyền truy cập linh hoạt, Hasura đã chứng tỏ là một công cụ đáng tin cậy.

Dù có một số hạn chế nhỏ, nhưng sự phát triển liên tục của Hasura sẽ giúp công cụ này ngày càng hoàn thiện hơn, trở thành bạn đồng hành lý tưởng cho các dự án ứng dụng hiện đại.

Nếu bạn đang tìm kiếm một giải pháp mới để phát triển API, Hasura chắc chắn là lựa chọn không thể bỏ qua!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào