Thiết kế hệ thống

Image
Ngày cập nhật 01/01/2023
Thực hiện tdat.it

Với mục tiêu ban đầu là thiết kế ra 1 website áp dụng kiến trúc microservice, ở đó các tính năng phải được tách ra từng service nhỏ và tùy vào yêu cầu của service mà sẽ chọn ra các giải pháp công nghệ sao cho phù hợp nhất.

Dự án chọn Java và Go để phát triển cho phía Backend và TypeScript cùng với React để phát triển ứng dụng FE. Để nói về Java thì dự án sử dụng Spring Framework để phát triển các service như User, Auth, Product,... bởi hệ sinh thái của Spring rất mạnh mẽ phù hỗ trợ các tính năng cần thiết để giúp việc phát triển các tính năng trở nên nhanh chóng và hiệu quả. Ngoài ra sự lựa chọn Golang trong dự án để đáp ứng được nhu cầu xử lý tốc độ cao cho các giao dịch trong hệ thống đi kèm là framework web fiber hiện đang là top tier trong các web framework nhanh nhất hiện tại.

Frontend với giao diện thân thiện được tạo ra bởi React sẽ giao tiếp với Backend thông qua API Gateway

Ngoài ra còn một số công cụ hỗ trợ trong hệ thống cần kể đến như:

  • API Gateway: Điều phối các request từ phía client đến với các service cụ thể trong hệ thống
  • Redis: Cache các dữ liệu được người dùng thử dụng thường xuyên
  • RabbitMQ: Làm trung gian trao đỗi các message của các service khác nhau bên trong hệ thống
  • Quartz: Sử dụng như công cụ lập lịch các job cần thực hiện sau khoảng thời gian
  • Elasticsearch: Search engine để thực hiện tìm kiếm trong hệ thống
  • Google Dialogflow: Chatbot FAQ cho trang web
  • Prometheus: Theo dõi và cảnh báo hệ thống trong quá trình hoạt động của service
  • Grafana: Vizualizer các dự liệu của Prometheus để phân tích I/O, Ram, Cpu, Traffic...