Tổng quan
Sự bùng nổ của web thương mại điện tử đòi hỏi giải pháp đáp ứng tốc độ phát triển, tính linh hoạt và khả năng mở rộng cao. DevOps và microservices kết hợp mang đến giải pháp tối ưu, giúp:
- Tự động hóa quy trình, rút ngắn thời gian từ ý tưởng đến sản phẩm.
- Phát hiện lỗi sớm, đảm bảo chất lượng phần mềm cao.
- Giám sát hệ thống liên tục, tối ưu hóa hiệu suất vận hành.
- Phản hồi nhanh chóng, đáp ứng nhu cầu thị trường linh hoạt. DevOps và microservices là lựa chọn hoàn hảo cho thiết kế và triển khai web thương mại điện tử, đáp ứng nhu cầu thị trường, nâng cao hiệu quả và khả năng cạnh tranh.
Mục tiêu
- Thiết kế và triển khai web thương mại điện tử bằng kiến trúc Microservices.
- FrontEnd web sử dụng React + Vite + TypeScript để thiết kế giao diện người dùng.
- BackEnd web sử dụng TypeScript,JavaScript để phát triển các dịch vụ trong Microservices.
- Database sử dụng MongoDB.
- Sử dụng Docker Container để đóng gói web và các dependencies vào container.
- Sử dụng k8s để quản lý các container.
- Sử dụng GithubAction để tự động triển khai hoặc kiểm thử các container trong môi trường thử nghiệm.
- Terraform để tự động quản lý và triển khai cấu hình hạ tầng.
- Sử dụng công cụ giám sát Prometheus và Grafana để theo dõi.
Cơ sở lý thuyết
Terraform là một công cụ mã nguồn mở được sử dụng để quản lý cơ sở hạ tầng (Infrastructure as Code – IaC) một cách hiệu quả. Nó cho phép định nghĩa và quản lý cơ sở hạ tầng đám mây của mình bằng cách sử dụng lập trình thay vì giao diện người dùng đồ họa (GUI) hoặc các công cụ dòng lệnh phức tạp.

GitHub Actions là một nền tảng tự động hóa quy trình phát triển phần mềm (CI/CD – Continuous Integration/Continuous Delivery) được tích hợp sẵn vào GitHub.
Docker là một nền tảng mã nguồn mở giúp việc phát triển, triển khai và vận hành ứng dụng trở nên dễ dàng và hiệu quả hơn. Nó sử dụng công nghệ ảo hóa để đóng gói ứng dụng cùng với tất cả các phụ thuộc của nó vào một đơn vị độc lập dựa trên container.
Container chứa các phần mềm, thư viện, công cụ hệ thống, mã ứng dụng cần thiết để tạo nên môi trường độc lập và tách biệt, giúp khởi chạy và phát triển ứng dụng dựa vào môi trường được chứa trong Container.

Đây là file Dockerfile dùng để build image và push lên Docker Hub. Dockerfile này cho phép tạo một container cho một ứng dụng Node.js, sử dụng base image node:20:14-alpine, cài đặt các dependency. Định nghĩa lệnh để khởi động ứng dụng và lắng nghe trên tất cả các địa chỉ IP. Khai báo cổng 8080 sẽ được sử dụng bởi container.


Kết luận
Kết quả đạt được
- Đã triển khai được cơ bản một mô hình tự động hóa đơn giản của một ứng dụng Web thương mại điện tử.
- Rèn luyện được kĩ năng cơ bản của DevOps về các dịch vụ và công nghệ như
- Docker, Terraform, AWS.
- Hiểu được một quy trình triển khai tự động từ đó có thể phát triển được một mô hình hoàn chỉnh hơn trong tương lai.
Những hạn chế còn gặp phải - Chưa đánh giá hiệu năng các services.
- Triển khai mô hình Monolithic thay vì mô hình Microservices.
- Thiếu biện pháp Monitoring cho services.


