Đồ án 2: Phát triển sàn thương mại điện tử cho sản phẩm OCOP dựa trên kiến trúc Microservice

MỤC LỤC

Mục tiêu

  • Đối tượng sử dụng

    Kiến trúc Microservice, một phương pháp tiếp cận đổi mới trong phát triển phần mềm, đã nhanh chóng trở thành xu hướng hàng đầu trong việc xây dựng các ứng dụng quy mô lớn và phức tạp. Phát triển từ nhu cầu về sự linh hoạt và khả năng mở rộng, kiến trúc này đánh dấu sự chuyển mình từ mô hình monolithic truyền thống sang một hệ thống gồm nhiều dịch vụ nhỏ, độc lập. Trái tim của kiến trúc microservice là việc chia nhỏ ứng dụng thành một tập hợp các dịch vụ nhỏ, mỗi dịch vụ chạy một quy trình riêng biệt và giao tiếp với nhau thụng qua cỏc API định nghĩa rừ ràng.

    Mỗi microservice được thiết kế để thực hiện một chức năng cụ thể và có thể được phát triển, triển khai, quản lý và mở rộng một cách độc lập với những dịch vụ khác trong hệ thống. Trong kết luận, kiến trúc microservice mở ra một hướng tiếp cận linh hoạt và mở rộng cho phát triển phần mềm, phù hợp với nhu cầu của các doanh nghiệp trong kỷ nguyên số hóa và dữ liệu lớn. Mô hình này cho phép nhiều người dùng, hoặc "tenant", sử dụng cùng một ứng dụng hoặc cơ sở hạ tầng với cấu hình riêng biệt và dữ liệu độc lập, tăng cường hiệu quả vận hành và giảm chi phí.

    Về cơ bản, kiến trúc multi-tenancy đem lại lợi ích đáng kể cho cả nhà cung cấp dịch vụ và người dùng cuối, nhưng cũng đòi hỏi sự cân nhắc kỹ lưỡng trong thiết kế và triển khai để tối ưu hóa hiệu quả và đảm bảo an toàn, bảo mật.  Phức tạp trong quản lý: Việc quản lý nhiều microservices trong một môi trường multi-tenant có thể trở nên phức tạp, đòi hỏi hệ thống giám sát và quản lý hiệu quả.

    Hình 2-1 Một số loại của kiến trúc Multi-tenancy
    Hình 2-1 Một số loại của kiến trúc Multi-tenancy

    Công nghệ sử dụng 1. React

      Stripe cung cấp một nền tảng thanh toán trực tuyến cho các doanh nghiệp và nhà phát triển, giúp họ chấp nhận thanh toán trực tuyến một cách dễ dàng và bảo mật. Họ cung cấp các tính năng bảo mật mạnh mẽ như mã hóa dữ liệu và xác thực hai yếu tố để đảm bảo rằng các giao dịch được thực hiện một cách an toàn và riêng tư. Phát triển lần đầu vào năm 2014, Grafana đã trở thành một trong những công cụ hàng đầu cho việc trực quan hóa và giám sát dữ liệu thời gian thực, được sử dụng rộng rãi trong các hệ thống IT, mạng, và phân tích dữ liệu.

      Phát triển bởi SoundCloud vào năm 2012, Prometheus nhanh chóng trở thành một trong những công cụ giám sát hệ thống và ứng dụng hàng đầu, đặc biệt trong hệ sinh thái Kubernetes. Prometheus thu thập dữ liệu giám sát thông qua mô hình "pull", nơi Prometheus chủ động lấy dữ liệu từ các dịch vụ được giám sát, giúp dễ dàng tích hợp và mở rộng hệ thống giám sát. Cấu trúc lưu trữ dữ liệu của Prometheus cũng được tối ưu hóa cho việc lưu trữ và truy vấn dữ liệu thời gian thực, giỳp người dựng nhanh chúng phõn tớch và hiểu rừ về trạng thỏi hệ thống.

      Apache Kafka là một nền tảng xử lý luồng dữ liệu mạnh mẽ và đa năng, phát triển ban đầu bởi LinkedIn và hiện nay là một dự án mã nguồn mở dưới quản lý của Apache Software Foundation. Điều này cho phép các tổ chức xây dựng các hệ thống xử lý dữ liệu toàn diện, kết hợp khả năng xử lý luồng dữ liệu nhanh chóng của Kafka với các hệ thống phân tích và lưu trữ dữ liệu mạnh mẽ khác. Cộng đồng Kafka cũng rất sôi động, cung cấp nhiều tài liệu học tập, hướng dẫn và công cụ hỗ trợ, giúp người dùng dễ dàng triển khai và tận dụng tối đa nền tảng này.

      Nó cung cấp một môi trường chạy đồng nhất cho các ứng dụng, cho phép chúng được phân phối và mở rộng một cách linh hoạt trên các môi trường cloud hoặc máy chủ vật lý. Nó cho phép tự động mở rộng hoặc thu nhỏ số lượng bản sao của ứng dụng dựa trên nhu cầu thực tế, giúp tối ưu hóa việc sử dụng tài nguyên và đảm bảo hiệu suất ổn định. Kubernetes cũng có một cộng đồng hỗ trợ mạnh mẽ, cung cấp tài nguyên học tập, tài liệu và công cụ, giúp người dùng dễ dàng triển khai và quản lý ứng dụng của mình.

      Ra mắt vào năm 2018, Kind đã nhanh chóng trở thành một công cụ phổ biến trong cộng đồng Kubernetes, nhất là với những người phát triển muốn thử nghiệm và triển khai cụm Kubernetes một cách nhanh chóng và hiệu quả trong môi trường phát triển cục bộ. Kind cung cấp một cách thuận tiện để triển khai, kiểm thử và phát triển các ứng dụng trên Kubernetes mà không cần một cụm Kubernetes vật lý hay cloud-based. Điều này cho phép các nhà phát triển kiểm tra cách ứng dụng của họ hoạt động trong một môi trường sản xuất giống như thực tế mà không gặp rủi ro hoặc chi phí cao.

      Cộng đồng Kind cũng rất năng động, cung cấp hướng dẫn, tài liệu và hỗ trợ kỹ thuật, làm cho nó trở thành một công cụ không thể thiếu cho bất kỳ nhà phát triển Kubernetes nào. Nó có thể xử lý số lượng lớn người dùng và tải truy vấn một cách hiệu quả, đồng thời hỗ trợ các tính năng như sao lưu và phục hồi dữ liệu, cân bằng tải và nhân rộng dữ liệu.

      Hình 2.3 Các thành phần của Redux 3
      Hình 2.3 Các thành phần của Redux 3

      PHÂN TÍCH THIẾT KẾ ỨNG DỤNG 3.1. Use case

      Sơ đồ Use case

        − Người dùng muốn vào hệ thống để thực hiện các tính năng thì phải thông qua đăng nhập. − Đăng ký tài khoản để người dùng có thể có tài khoản để đăng nhập vào hệ thống. Sự kiện kích hoạt: Bấm nút “Sign up ” ở màn hình đăng nhập Điều kiện thực hiện: Không có.

        − Người dùng muốn thay đổi thông tin cá nhân hoặc mật khẩu thì sử dụng use case này. Đặc tả Use case Xem thông tin sản phẩm Use case: Chỉ đường đến bãi đỗ. Sự kiện kích hoạt: Người dùng bấm vào hình ảnh của các sản phẩm đã được hiển thị trước đó.

        Đặc tả Use case Thêm sản phẩm vào danh sách mua Use case: Đặt chỗ. Sự kiện kích hoạt: Bấm vào “Thêm vào giỏ” ở phần xem thông tin sản phẩm Điều kiện thực hiện: Không có. − Sản phẩm được thêm vào giỏ sẽ được cập nhật và báo cho người dùng.

        Sự kiện kích hoạt: Bấm vào “Giỏ hàng” để vào trang thanh toán Điều kiện thực hiện: Đã đặt lịch trước đó. Đặc tả Use case Xem lịch sử mua hàng Use case: Xem lịch sử đặt chỗ.

        Bảng 3.3 Đặc tả Use case Đăng nhập
        Bảng 3.3 Đặc tả Use case Đăng nhập

          CÀI ĐẶT VÀ THỬ NGHIỆM 5.1. Môi trường cài đặt