I. Tổng quan
1. Virto Atomic Architecture là gì?
- Virto Atomic Architecture là một mô hình kiến trúc phần mềm nhấn mạnh tính modular, đơn giản và có khả năng mở rộng.
- Kiến trúc này dựa trên khái niệm về thiết kế nguyên tử (atomic design), tức là phân chia giao diện phức tạp thành các thành phần nhỏ hơn, đơn giản hơn để dễ dàng tái sử dụng và quản lý.
- Mỗi thành phần trong kiến trúc Virto Atomic Architecture được thiết kế để thực hiện một nhiệm vụ cụ thể, độc lập với các thành phần khác, nhưng lại có khả năng tương tác và kết hợp với nhau để tạo thành các tính năng và chức năng toàn diện hơn.
1. Lợi ích khi sử dụng?
- Tính modular và đơn giản: Kiến trúc này giúp phân chia mã nguồn thành các thành phần nhỏ hơn, dễ dàng quản lý và tái sử dụng, tăng tính mô đun và giảm độ phức tạp của mã nguồn.
- Dễ dàng bảo trì: Các thành phần độc lập của kiến trúc Virto Atomic Architecture cho phép thực hiện các tác vụ bảo trì và nâng cấp phần mềm một cách dễ dàng và nhanh chóng.
- Tính mở rộng: Kiến trúc này cho phép thêm các tính năng mới vào phần mềm một cách dễ dàng và nhanh chóng, giúp tăng tính mở rộng và khả năng thích ứng với nhu cầu thay đổi của khách hàng.
- Hiệu suất cao: Tính mô đun của kiến trúc Virto Atomic Architecture giúp tối ưu hóa hiệu suất phần mềm, đặc biệt là trong các ứng dụng lớn và phức tạp.
- Tính linh hoạt: Kiến trúc này cho phép sử dụng các công nghệ khác nhau và tương thích với các hệ thống khác, giúp tăng tính linh hoạt của code và giảm chi phí phát triển
- Teamwork hiệu quả: Dễ dàng kiểm tra các component được sử dụng cho các phần khác nhau của solution => giảm việc viết code trùng lặp và cho phép kiểm soát chính xác các dependency.
II. Kiến trúc Virtual Atomic
Virto Atomic gồm 5 thành phần chính:
1. Atoms (Nguyên tử)
Layer Atoms (còn gọi là lớp nguyên tử) trong kiến trúc Virto Atomic Architecture™ là tầng nhỏ nhất trong cấu trúc của nền tảng thương mại điện tử. Tầng này chứa các thành phần tối thiểu của hệ thống, được thiết kế để thực hiện một nhiệm vụ đơn giản nhất có thể. Các nguyên tử này là các thành phần tái sử dụng có tính linh hoạt cao, có thể được kết hợp lại để tạo thành các phân tử, tế bào và cuối cùng là các ứng dụng trên nền tảng thương mại điện tử.
Lớp này thường do team Core hoặc team Devops cấu hình và thiết lập chung cho toàn bộ các site Các quy tắc sử dụng Atoms:
- Không nên bao gồm các thành phần khác. Chỉ sử dụng các component gốc hoặc các thành phần dành riêng cho framework.
- Không nên có quyền truy cập trực tiếp vào 1 lớp cao hơn.
- Không nên chứa bất kỳ business logic nào.
2. Molecules (Phân tử)
Lớp Molecules là lớp thứ hai trong kiến trúc Virto Atomic Architecture™, được xây dựng bằng cách kết hợp các Atoms (nguyên tử) lại với nhau. Các Molecules được thiết kế để giải quyết các nhu cầu kinh doanh cụ thể hơn so với Atoms. Ví dụ, một Molecule có thể là một box giỏ hàng hoặc một box tìm kiếm. Các Molecules cũng có thể được sử dụng lại và kết hợp để tạo thành các Cells (tế bào).
Ví dụ: Category: Chịu trách nhiệm phân loại danh mục, sản phẩm, biến thể và quan hệ giữa các sản phẩm. Price: Chịu trách nhiệm định giá giá sản phẩm. Search: Chịu trách nhiệm về các bản tóm tắt tìm kiếm toàn văn ở trên bằng cách sử dụng các công cụ như Elaticsearch,... …. Các quy tắc sử dụng Molecules:
- Phân tử được tạo ra từ một hoặc nhiều nguyên tử.
- Được xây dựng với một nguyên tắc single resonsibility.
- Có thể giao tiếp với component khác qua API, events,...
- Có không gian lưu trữ riêng
- Hỗ trợ khả năng mở rộng (injection, overriding) từ các tế bào (cells).
- Không nên có quyền truy cập vào một cấp cao hơn trực tiếp.
Lớp này do các developer triển khai
3. Cells (Tế bào)
Lớp Cells là lớp thứ ba trong kiến trúc Virto Atomic Architecture™, được xây dựng bằng cách kết hợp các Molecules lại với nhau. Các Cells được thiết kế để giải quyết các nhu cầu kinh doanh cụ thể hơn so với Molecules. Ví dụ, một Cell có thể là một trang sản phẩm hoặc một trang thanh toán. Các Cells cũng có thể được sử dụng lại và kết hợp để tạo thành các Organisms (cơ quan).
Ví dụ về các cells thương mại điện tử có thể là một Digital Catalog, Order, Shopping Cart,... Digital Catalog: Đối với hầu hết các giải pháp thương mại điện tử, một danh mục kỹ thuật số nên kết hợp catalog, price, inventory, … và các cellnhư một thực thể và trình bày dưới dạng API cho ứng dụng khách. Order: Đây là một thành phần đặt hàng đầy đủ tính năng với hàng tồn kho, thuế, xử lý thanh toán, v.v ... cell này đã sẵn sàng để tích hợp với ERP thông qua API và phần mềm trung gian tích hợp. Thông thường, nó chứa một webhook hoặc eventbus để tương tác giữa các package. Các quy tắc sử dụng cells:
- Là một thành phần phức tạp được tạo thành từ nhiều Molecules.
- Có thể mở rộng và có nhiều instance cells hoạt động độc lập.
- Được đóng gói, triển khai và chạy như một container độc lập.
- Chạy trên một máy cục bộ (tại chỗ).
- Sử dụng event bus để liên lạc nội bộ bên trong 1 cells.
- Sử dụng event bất đồng bộ, như webhooks cho giao tiếp bên ngoài.
- Đây là nơi để triển khai business logic
- Có giao diện văn phòng / quản trị viên riêng của nó.
- Không nên có quyền truy cập vào các cells khác
4. Organisms (Sinh vật)
Lớp Organisms là lớp cuối cùng trong kiến trúc Virto Atomic Architecture™, được xây dựng bằng cách kết hợp các Cells lại với nhau. Các Organisms là các ứng dụng hoàn chỉnh. Ví dụ, một Organism có thể là một trang web bán hàng, hoặc trang web quản trị,.... Tất cả các thành phần trong một organisms sử dụng API để liên lạc và có thể được triển khai, mở rộng và duy trì độc lập.
5. Cloud (Môi trường chứa toàn bộ các sinh vật)
Lớp Cloud là lớp bổ sung của kiến trúc Virto Atomic Architecture™, được sử dụng để lưu trữ và triển khai các ứng dụng ecommerce. Virto Commerce cung cấp các giải pháp đám mây cho khách hàng của mình, bao gồm cả các tùy chọn đám mây công cộng và riêng tư, cho phép khách hàng lựa chọn giải pháp tốt nhất cho nhu cầu kinh doanh của mình.
Thông qua việc so sánh các thành phần, ta có thể tưởng tượng kiến trúc Virto Atoms là sự kết hợp của các module tự chứa đựng được ghép lại với nhau.
Tài liệu tham khảo
1. Virto Ecommerce Catalog 1. What Is Virto eCommerce Atomic Architecture™? 1. Virto Commerce Documentation