Chương 5. Kiến trúc của EzyPlatform
Back To BlogsChương 5. Kiến trúc của EzyPlatform
📚 Mục lục sáchTrước khi bắt tay xây dựng sản phẩm đầu tiên, bạn cần hiểu EzyPlatform được tổ chức như thế nào. Không cần hiểu sâu về mặt kỹ thuật — chỉ cần nắm được "cái gì nằm ở đâu" là đủ để bạn mô tả yêu cầu chính xác cho AI, và tự tin đọc hiểu code mà AI tạo ra.
Sơ đồ dưới đây tóm tắt toàn bộ kiến trúc — các phần sẽ được giải thích chi tiết ngay sau đó:
flowchart TD
WEB["Website"] --> MODULES["Module (Plugin)"]
ADMIN["Admin"] --> MODULES
MODULES --> DB[("Database")]
classDef ui fill:#3b82f6,stroke:#1d4ed8,color:#ffffff;
classDef module fill:#10b981,stroke:#047857,color:#ffffff;
classDef db fill:#6366f1,stroke:#4338ca,color:#ffffff;
class WEB,ADMIN ui;
class MODULES module;
class DB db;
linkStyle default stroke:#94a3b8,stroke-width:1.5px;
Hai khu vực chính: Website và Admin
- Admin: khu vực quản trị, nơi bạn (hoặc nhân viên) đăng nhập để quản lý nội dung, đơn hàng, người dùng.
- Website (Web): phần khách truy cập nhìn thấy — trang chủ, bài viết, sản phẩm, form liên hệ.
Khi vibe coding, phần lớn thời gian bạn sẽ làm việc ở khu vực Website để xem kết quả, còn Admin bạn sẽ truy cập để cấu hình hay bổ sung dữ liệu là chính.
Admin: Trang quản trị
Đây là nơi bạn có thể quản trị mọi thứ: tài khoản quản trị viên, người dùng, phân quyền, cài đặt và bật/tắt các mô đun (plugin), cùng toàn bộ nội dung như bài viết, sản phẩm, đơn hàng. Gần như mọi thao tác cấu hình hệ thống — thay vì sửa trực tiếp trong database hay code — đều được thực hiện ngay tại đây. Nếu thiếu tính năng nào bạn có thể tải plugin có tính năng đó hoặc tự mình phát triển plugin để bổ sung.
Website: Nơi người dùng truy cập
Giao diện và các chức năng hiển thị của website đều được quyết định bởi theme (một loại mô đun) mà bạn cài đặt — từ bố cục trang chủ, màu sắc, cho đến cách bài viết hay sản phẩm được trình bày. Bạn có thể đổi theme để thay đổi toàn bộ diện mạo website mà không ảnh hưởng đến dữ liệu bên trong. Với Vibe Coding, chúng ta sẽ chủ yếu bổ sung, chỉnh sửa các tính năng liên quan đến website — vì đây là nơi khách truy cập nhìn thấy và tương tác trực tiếp.
Bạn có thể tìm kiếm và cài đặt theme thông qua giao diện admin theo đường dẫn {đường_dẫn_admin_của_bạn}/themes
Module: những khối chức năng độc lập
EzyPlatform được xây dựng theo dạng Module (còn gọi là plugin, theme) — mỗi module đảm nhiệm một nhóm chức năng riêng biệt, có thể bật/tắt hoặc cài thêm độc lập, ví dụ:
| Module | Chức năng |
|---|---|
| EzyArticle | Quản lý trang, bài viết, danh mục (term) |
| EzyMail | Gửi email tự động (chào mừng, đặt lại mật khẩu...) |
| EzySupport | Quản lý ticket hỗ trợ, mẫu nội dung, i18n |
| E-commerce | Sản phẩm, giỏ hàng, đơn hàng, thanh toán |
| Freestyle | Một theme trống cho phép Vibe Coding để khởi tạo giao diện |
Các mô đun sẽ được các nhà phát triển đăng bán hoặc miễn phí lên chợ ezyplatform.com để có thể được tìm thấy và tải xuống một cách chính thức, tương tự cách bạn tìm theme ở phần trên. Một số nhà phát triển không muốn bán plugin của mình có thể phân phối qua các kênh riêng và được cài đặt thủ công. Bạn cũng có thể sử dụng Vibe Coding để tạo mô đun cho riêng nhu cầu của mình, hoặc đăng bán trên chợ để tham gia vào nền kinh tế chia sẻ của EzyPlatform.
Cách dữ liệu được truy cập: GraphQL và REST API
- GraphQL: cách linh hoạt để truy vấn đúng dữ liệu cần thiết — hữu ích khi AI cần lấy dữ liệu phức tạp, có liên kết nhiều bảng.
- REST API: cách phổ biến, đơn giản để gửi/nhận dữ liệu qua các đường dẫn cố định — thường dùng khi tích hợp với dịch vụ bên ngoài.
Bạn không cần tự viết các API này — EzyPlatform đã cung cấp sẵn. Việc của bạn (và AI) là gọi đúng API cần thiết khi xây dựng tính năng.
Template: nơi giao diện được định hình
Giao diện của trang và bài viết được viết bằng Thymeleaf — một ngôn ngữ giống HTML nhưng có thêm các thuộc tính đặc biệt giúp EzyPlatform hiển thị dữ liệu động. Mỗi trang/bài viết gồm ba phần tách biệt:
content.html— nội dung chính hiển thị trên trang.head.html— phần chèn vào thẻ<head>, thường chứa CSS và metadata.foot.html— phần chèn trước khi đóng thẻ<body>, thường chứa JavaScript.
Đây chính là cấu trúc bạn đã thấy xuyên suốt các chương trước — mỗi trang, bài viết, mẫu email trong EzyPlatform đều tuân theo quy tắc ba file này.
Database: nơi mọi dữ liệu được lưu trữ
Toàn bộ bài viết, sản phẩm, đơn hàng, người dùng đều được lưu trong cơ sở dữ liệu (Database) của EzyPlatform. Bạn hiếm khi cần thao tác trực tiếp với database — thay vào đó, bạn làm việc thông qua giao diện Admin hoặc để AI gọi API/GraphQL để đọc và ghi dữ liệu giúp bạn.
Bạn không cần nhớ hết kiến trúc này. Chỉ cần nhớ: Website hiển thị, Admin quản trị, Module cung cấp tính năng, Event kết nối chúng lại, API là cầu nối dữ liệu, Template định hình giao diện.
Các dịch vụ chạy ngầm
Trong thuật ngữ chuyên ngành gọi là Batch, còn trong EzyPlatform gọi là Appender (trình thêm dữ liệu). Đây là các tiến trình chạy nền liên tục, tự động quét dữ liệu mới hoặc thay đổi để cập nhật chỉ mục tìm kiếm, đếm số liệu thống kê, hay xây dựng liên kết giữa các dữ liệu — mà bạn không cần yêu cầu hay chờ đợi mỗi khi vào trang Admin.
Bạn có thể xem và quản lý các Appender này tại Admin > Cài đặt, nơi cho phép bật/tắt (start/stop), khởi động lại (restart) từng Appender. Có một thao tác nâng cao gọi là "tải lại" (reload) khiến Appender chạy lại từ đầu — nên cân nhắc kỹ trước khi dùng vì có thể gây trùng lặp hoặc sai lệch dữ liệu. Với Vibe Coding, bạn hầu như không cần đụng đến các Appender này, trừ khi cần xử lý sự cố hoặc build lại dữ liệu sau một thay đổi lớn.
📌 Tóm tắt chương
- EzyPlatform chia thành hai khu vực chính: Website (hiển thị) và Admin (quản trị).
- Các Module như EzyArticle, EzyMail, EzySupport, E-commerce đảm nhiệm từng nhóm chức năng riêng.
- Event giúp các module tự động phản ứng với nhau, là nền tảng cho tự động hóa.
- GraphQL và REST API là cách AI truy cập dữ liệu; Thymeleaf định hình giao diện qua content/head/foot.
Young Monkeys - Founder