Hasura đã giúp tôi xây dựng sản phẩm ra sao
product-thinking
4
White

ShinaBR2 viết ngày 28/05/2020

Giới thiệu

Đây là một bài viết về một công nghệ cụ thể, thường thì tôi không thích viết những bài kiểu này. Công nghệ sẽ thay đổi nay mai, chỉ có tư duy mới là cái tồn tại mãi. Tuy nhiên, cái mà tôi giới thiệu hôm nay, Hasura, có thể sẽ là tương lai của lập trình viên, theo tôi là vậy, bởi vì nó thay đổi cái cách mà lập trình viên làm.
Bối cảnh đặt ra: tôi là một lập trình viên Frontend, và tự xây dựng một sản phẩm cho riêng mình. Và tôi lười code, chính xác là lười phải làm đi làm lại những việc mà dự án nào cũng làm, mà không học thêm được gì cả, có thể kể tới:

  • Viết APIs để CRUD data
  • Authentication và Authorization

Công nghệ là để giải quyết một vấn đề nào đó mình gặp, và tôi tình cờ phát hiện ra Hasura, nó giúp tôi giải quyết hai vấn đề trên.
Trang chủ của hasura.

Khi xài Hasura, cuối cùng ta sẽ có gì

Tưởng tượng, Hasura chỉ là 1 source code mã nguồn mở, bạn deploy ở đâu, nó sẽ tạo một con server ở đó và sẽ cho bạn một GraphQL endpoint, ví dụ: "domain.xxx/graphql".
Nếu bạn đã làm quen với GraphQL, đây là tất cả những gì bạn cần.

Ưu điểm của Hasura

GraphQL thay vì REST

Đây là ý kiến cá nhân, tuy nhiên tôi không thể phủ nhận cảm giác của bản thân khi làm việc với RESTful không khác gì eating shit. Hasura làm việc dựa trên GraphQL, đó là điều tôi thích đầu tiên. Tôi không bận tâm về REST nên nếu bạn muốn tìm Hasura alternative cho REST, bạn phải tự google rồi.

CRUD

Chắc hẳn không có một dự án nào mà không có những API với mục đích CRUD (thêm sửa xóa) một bảng nào đó. Tôi đặt câu hỏi? Tại sao phải làm đi làm lại những cái này từ khi tôi còn làm backend với PHP cho tới giờ (đến giờ tôi thấy ngày xưa tôi bỏ hơi muộn)?
Tôi là một đứa lười code, cho nên mình sẽ kiếm giải pháp từ công nghệ. Và Hasura giúp tôi làm việc đó như sau:

  • Input: các bảng trong PostgresQL database.
  • Output: toàn bộ GraphQL cần thiết để CRUD. Bạn thử hình dung xem bạn sẽ mất bao lâu để viết toàn bộ API CRUD cho ví dụ khoảng 20 bảng trong database? 20 bảng với tôi là còn ít.

Tiếp theo, không dừng lại ở đó. Chuyện gì sẽ xảy ra nếu tôi cần những API khác thay vì chỉ CRUD?
Câu trả lời, là tùy vào bạn, vì đây là cái phụ thuộc vào dự án. Bạn sẽ phải tự viết riêng cho mình những hàm xử lý logic cụ thể. Và với xu hướng ngày nay, serverless dần trở nên phổ biến, bạn sẽ làm quen rất dễ dàng. Hasura gọi những hàm này là action.

Như vậy, trước khi dùng Hasura, bạn sẽ phải:

  • Viết toàn bộ API, 80% cho CRUD, 20% cho những logic khác (con số chỉ là tương đối).

Sau khi có Hasura, bạn sẽ phải:

  • Viết 20% API còn lại.

Xong, về cụ thể bạn hãy xem document của Hasura.

Authentication và Authorization

Bản thân Hasura không làm nhiệm vụ Authentication. Tôi dùng firebase để quên hết đi những nỗi nhọc nhằn về quản lý đăng nhập và người dùng. Hasura có hỗ trợ cấu hình với firebase. That's all I need!

Về authorization, Hasura cung cấp sẵn một môi trường giao diện để bạn cài đặt role cho từng bảng trong Postgres database. Điều đó có nghĩa là bạn sẽ tự tay cấu hình những API nào public với mọi user mà vẫn đảm bảo được bảo mật cho API. Crazy?

Ngoài ra có lẽ còn những ưu điểm khác, tuy nhiên chỉ hai điều trên, nó đã giúp tôi giải quyết hai vấn đề thực tế trong dự án, đặc biệt giảm thiểu thời gian code. Lập trình viên, theo tôi, không nên tốn thời gian code những cái như vậy, thay vào đó, chú tâm vào business của dự án. Dự án của tôi, chỉ có Junior và Fresher. Và như vậy là cũng đủ rồi.

Nhược điểm của Hasura

Tôi chưa dùng hết tính năng của Hasura, chỉ mới hóng trên discord và thấy được những vấn đề sau. Cơ bản là một công nghệ còn mới, tất nhiên sẽ chưa hoàn thiện.

  • GraphQL chăng? Bạn đã làm 10 năm với REST có lẽ bạn cũng chẳng willing học GraphQL nữa, thì đó là trở ngại đầu tiên.
  • Deploy Hasura hiện tại chỉ hỗ trợ 3 cách: Heroku, Docker, Kubernetes. Mất khoảng vài phút để bạn lựa chọn cách để deploy. Tôi cũng không nghĩ đây là nhược điểm nữa, nhưng có lẽ với một dự án mà không có dev ops, thì có lẽ sẽ có một chút khó khăn.
  • Nhiều tính năng chưa được hoàn thiện: giao diện console của Hasura chưa được ổn định, chưa hỗ trợ được nhiều tính năng như auto backup database.

Kết luận

Như đã nói từ đầu, tôi không thích viết về công nghệ, một thứ mà có thể nay mai sẽ chẳng ai dùng nữa. Tuy nhiên, với tình hình thực tế của dự án, điều tuyệt vời nhất mà Hasura mang lại, đó chính là thay đổi cách mà tôi xây dựng sản phẩm.
Nếu chỉ biết code, thì bạn chỉ là coder, không phải là lập trình viên.
Mọi ý kiến đóng góp đều rất được cảm kích. Cảm ơn đã đọc bài viết.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

ShinaBR2

15 bài viết.
130 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
72 16
Đây là một vấn đề kinh điển, và có rất nhiều bài viết về nó, tuy nhiên đa phần là dịch từ bản gốc ra và sao chép lại một vài câu lệnh, và câu hỏi t...
ShinaBR2 viết hơn 3 năm trước
72 16
White
47 11
Vào một ngày đẹp trời, khi bạn nhận được yêu cầu phải thiết kế database cho một hệ thống, câu hỏi đầu tiên được đặt ra, quy trình làm ra nó sẽ cụ t...
ShinaBR2 viết hơn 3 năm trước
47 11
White
40 10
Bàn về code thối Hãy tự đặt câu hỏi cho bạn, khi bắt đầu lập trình, bạn nghĩ tới điều gì? Đi phỏng vấn Điều đầu tiên tôi muốn nói về những câu hỏ...
ShinaBR2 viết 3 năm trước
40 10
Bài viết liên quan
White
6 0
Câu chuyện Đây là câu chuyện kể về một gamer, khi đang chơi game thì cần một tool để phục vụ nhu cầu chơi game. May thay, gamer đó là mình, vừa là...
ShinaBR2 viết 9 tháng trước
6 0
White
49 11
(Ảnh) Dân lập trình mới ra trường, nếu bay vào làm outsource liền là 1 sự uổng phí. Thay vào đó, đầu quân cho 1 công ty product, hay tốt nhất là 1...
Karmi Phuc viết hơn 5 năm trước
49 11
White
36 5
Quyển này thì khá là nổi rồi, không cần phải giới thiệu nhiều về nó nữa. (Ảnh) Quả thực thì ngay từ đầu mình không hề có ý định đọc quyển này, vì...
Huy Trần viết hơn 3 năm trước
36 5
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
15 bài viết.
130 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!