Tổng quan đồ án
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
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
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. Nền tảng này cho phép người dùng tự động hóa các tác vụ trong quy trình phát triển phần mềm như:
- Tích hợp liên tục (CI): Tự động tích hợp mã nguồn từ các nhà phát triển khác nhau vào kho lưu trữ trung tâm và thực hiện các bài kiểm tra tự động để đảm bảo chất lượng phần mềm.
- Kiểm tra tự động: Tự động thực hiện các bài kiểm tra đơn vị, kiểm tra tích hợp và kiểm tra chức năng để đảm bảo chất lượng phần mềm.
- Triển khai tự động: Tự động triển khai mã nguồn mới lên môi trường sản xuất sau khi các bài kiểm tra thành công.
- Giám sát: Giám sát hiệu suất của ứng dụng và cảnh báo về các vấn đề tiềm ẩn.
Docker
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

AWS EC2 – Amazon Elastic Compute Cloud
Amazon Elastic Compute Cloud (Amazon EC2) là dịch vụ điện toán đám mây cung cấp khả năng sử dụng các tài nguyên máy tính có thể mở rộng và định cấu hình theo nhu cầu. EC2 cho phép bạn khởi chạy và quản lý các instance máy ảo (instance) trong đám mây.
AWS EKS – Amazon Elastic Kubernetes Service
Amazon Elastic Kubernetes Serivce (EKS) là một dịch vụ Kubernetes được quản lý để chạy Kubernetes trên AWS hay có thể coi là một hệ tính toán phân bố, giúp tự động hoá mức độ sẵn sàng (Availability) và khả năng mở rộng (Scalability) của các Node.
AWS VPC – Amazon Virtual Private Cloud
AWS VPC (Amazon Virtual Private Cloud) là dịch vụ mạng đám mây do Amazon Web Services (AWS) cung cấp, cho phép bạn tạo mạng riêng ảo được cô lập logic trong môi trường AWS. Giống như bạn xây dựng một khu phố riêng biệt trong thành phố, VPC giúp bạn tạo ra một mạng riêng biệt trên đám mây để chạy các ứng dụng và lưu trữ dữ liệu của mình.
AWS Route53
AWS Route 53 là dịch vụ DNS (Domain Name System) do Amazon Web Services (AWS) cung cấp. Nó cho phép bạn quản lý lưu lượng truy cập đến các ứng dụng và tài nguyên web của mình một cách dễ dàng và hiệu quả. Route 53 hoạt động như một bộ định tuyến lưu lượng truy cập, hướng người dùng đến các điểm đến chính xác dựa trên tên miền và cấu hình DNS của bạn.
AWS CloudWatch
AWS CloudWatch là một dịch vụ giám sát và quản lý của Amazon Web Services (AWS), cung cấp các khả năng theo dõi hiệu suất và hoạt động của các tài nguyên AWS và các ứng dụng chạy trên AWS. CloudWatch thu thập và theo dõi các số liệu (metrics), thu thập và giám sát log files, đặt cảnh báo và phản ứng với những thay đổi trong hệ thống của bạn.
AWS S3 – AWS Simple Storage Service
Amazon S3 (Simple Storage Service) là dịch vụ lưu trữ đám mây cung cấp cho người dùng khả năng lưu trữ lượng lớn dữ liệu một cách an toàn và hiệu quả. S3 hoạt động như một kho lưu trữ khổng lồ trên đám mây, nơi bạn có thể lưu trữ bất kỳ loại dữ liệu nào, bao gồm ảnh, video, tài liệu, mã nguồn và nhiều hơn nữa. Dữ liệu được lưu trữ trong các “bucket” (xô) ảo, có thể được truy cập từ bất cứ đâu trên thế giới thông qua internet.
AWS IAM – AWS Identity and Access Management
AWS Identity and Access Management (IAM) là dịch vụ quản lý danh tính và truy cập đám mây của Amazon Web Services (AWS). IAM cho phép bạn kiểm soát ai có thể truy cập tài nguyên AWS của bạn và họ có thể làm gì với tài nguyên đó. IAM giúp bạn bảo mật tài khoản AWS và dữ liệu của bạn bằng cách cung cấp các tính năng như xác thực, ủy quyền và kiểm toán.
AWS Certificate Manager
AWS Certificate Manager (ACM) là dịch vụ quản lý chứng chỉ SSL/TLS được cung cấp trên nền tảng đám mây AWS. ACM giúp bạn dễ dàng cấp phát, quản lý và triển khai các chứng chỉ cần thiết để bảo mật kết nối giữa trình duyệt web và ứng dụng web của bạn.
Nginx Ingress
Nginx Ingress là bộ điều khiển Ingress mã nguồn mở phổ biến cho Kubernetes, sử dụng Nginx làm proxy ngược và bộ cân bằng tải để quản lý lưu lượng truy cập đến các ứng dụng được triển khai trong cụm. Ingress cung cấp một cách tập trung để cấu hình định tuyến HTTP, HTTPS và TLS cho các ứng dụng, giúp đơn giản hóa việc quản lý lưu lượng truy cập và bảo mật cho các ứng dụng Kubernetes.
MongoDB
MongoDB là hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở, được viết bằng C++. MongoDB lưu trữ dữ liệu dưới dạng các tài liệu BSON, là định dạng JSON có cấu trúc và có thể nhúng các loại dữ liệu khác nhau như chuỗi, số, mảng và tài liệu con. MongoDB được sử dụng phổ biến cho các ứng dụng web hiện đại, các ứng dụng di động và các ứng dụng big data vì khả năng mở rộng, linh hoạt và hiệu suất cao
Kiến trúc




Mô hình triển khai lên Cloud

Kết luận
Đã 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.
Link Github của các mô hình tự động
- Link deploy bằng EKS: https://github.com/tiendat1011/DACN-Cloud
- Link tự động build, push images lên DockerHub:
https://github.com/halephu01/DACN_Backend,
https://github.com/halephu01/DACN_Frontend


