Tech stack — 16 công cụ

Chúng tôi dựng bằng gì

Một danh sách ngắn, và ngắn là có chủ đích. Mỗi công cụ ở đây đều có vòng đời hỗ trợ dài cùng một cộng đồng đủ đông để tuyển người, bởi phép thử thật sự của một stack không nằm ở lúc chúng tôi viết, mà ở lúc người khác phải tiếp quản nó.

02 công cụ

Ngôn ngữ

Một ngôn ngữ duy nhất cho cả stack, để kiểu dữ liệu đi được xuyên qua ranh giới mạng thay vì dừng lại ở đó.

  • TypeScript

    Mặc định cho mọi thứ chúng tôi viết. Một kiểu dữ liệu dùng chung giữa API và client sẽ chặn nguyên một nhóm lỗi ngay từ lúc gõ, trước khi dòng code nào kịp chạy.

  • Python

    Dùng khi bài toán nghiêng về dữ liệu hoặc mô hình, và hệ sinh thái Python thực sự phục vụ việc đó tốt hơn.

04 công cụ

Frontend

Render phía server ở nơi điều đó tạo ra khác biệt, và chỉ để tương tác ở nơi nó xứng đáng.

  • React

    Nhàm chán theo nghĩa đáng quý nhất: đây là nơi có nhiều kỹ sư sẵn sàng tiếp quản những gì chúng tôi để lại nhất.

  • Next.js

    Server rendering, routing và xử lý ảnh nằm gọn trong cùng một khung, nhờ đó trang chạy nhanh trên máy thật mà chúng tôi không phải tự dựng riêng cả một hệ thống build.

  • Tailwind CSS

    Design token nằm ngay cạnh markup, nên phần style không trôi dần ra khỏi design system theo năm tháng.

  • React Native

    Một codebase cho cả iOS lẫn Android, dùng khi lớp vỏ native không phải điều làm nên giá trị của sản phẩm.

03 công cụ

Backend & data

Mô hình dữ liệu trước đã. Phần lớn những rắc rối backend về sau đều bắt nguồn từ một quyết định schema được chốt quá sớm.

  • Node.js

    Cùng ngôn ngữ với phía client, nên cả đội chỉ phải giữ một cách tư duy và một bộ kiểu dữ liệu dùng chung.

  • PostgreSQL

    Mặc định là cơ sở dữ liệu quan hệ. Chúng tôi chỉ tìm tới thứ khác khi bản thân dữ liệu thực sự đòi hỏi như vậy.

  • Redis

    Cache, hàng đợi và giới hạn tần suất — những việc mà nếu không có Redis thì cuối cùng cơ sở dữ liệu sẽ phải gánh thay.

04 công cụ

Hạ tầng

Môi trường được viết bằng code, và mỗi lần deploy đều nhàm chán một cách có chủ đích. Chừng nào việc release còn khiến người ta hồi hộp, thì mọi lộ trình vẽ ra cũng chỉ nằm trên giấy.

  • Docker

    Local, staging và production khớp nhau thật, để không còn ai phải nói câu "máy tôi chạy mà" nữa.

  • AWS

    Lựa chọn mặc định của chúng tôi. Nhưng nếu bạn đã ở đâu thì chúng tôi deploy ở đó, chứ không bắt bạn dời đi cho tiện phía mình.

  • GitHub Actions

    Test, preview và deploy ở từng pull request, để không còn thao tác tay nào chạm vào production.

  • Terraform

    Hạ tầng nằm trong git, nên dựng lại một môi trường là việc chạy một câu lệnh, không phải việc cố nhớ xem lần trước đã làm gì.

03 công cụ

Design & chất lượng

Những phần quyết định sản phẩm có dùng được hay không, và có trụ được lâu hay không.

  • Figma

    Thiết kế trên đúng bộ token và component mà code sử dụng, nhờ vậy bản được duyệt và bản chạy thật luôn là một.

  • Playwright

    Test end-to-end cho những luồng mà hỏng là mất tiền thật, chứ không chạy theo một con số phần trăm coverage.

  • Sentry

    Lỗi đến từ người dùng thật, kèm đủ ngữ cảnh để xử lý ngay, thay vì một phiếu hỗ trợ chỉ vỏn vẹn mấy chữ "màn hình trắng".

Cách chọn

Chúng tôi chọn dựa trên điều gì

Những quy tắc đứng sau danh sách trên, nói thẳng ra để bạn có thể phản đối ngay từ trước khi dự án bắt đầu, thay vì sau khi mọi thứ đã lỡ.

  • Bền vững hơn thời thượng

    Chúng tôi chọn những công cụ có vòng đời hỗ trợ dài và cộng đồng đủ đông để tuyển người. Bởi sau khi chúng tôi rời đi, bạn vẫn phải tìm được người tiếp quản — và điều đó khó hơn hẳn nếu chúng tôi trót chọn một thứ đang thời thượng.

  • Stack của bạn quan trọng hơn stack của chúng tôi

    Nếu bạn đang chạy một stack và chạy tốt, chúng tôi làm việc ngay trên đó. Chỉ cần cho biết sớm: gặp thứ chúng tôi không kham nổi tử tế, chúng tôi sẽ nói thẳng, chứ không lấy ngân sách của bạn ra để học nghề.

  • Càng ít thành phần càng nhẹ đầu

    Mỗi service thêm vào là thêm một thứ phải giám sát, phải vá, và phải giải thích cho người đến sau. Chúng tôi chỉ thêm khi bài toán thực sự đòi hỏi, chứ không phải để sơ đồ kiến trúc trông dày dặn hơn.

  • Không khoá chân bạn vào chúng tôi

    Hạ tầng viết bằng code, hosting tiêu chuẩn, tài khoản đứng tên bạn. Không có thứ gì ở đây cần đến sự có mặt của chúng tôi thì mới tiếp tục chạy được.

Tiếp theo

Xem nó được áp dụng ra sao