Đặt vấn đề Trong thời đại mà khoa học công nghệ phát triển mạnh mẽ như hiện nay, Việt Nam đã có những bước tiễn hội nhập vào dòng chảy của khoa học và công nghệ tiên tiến trên thé giới. Một trong những lĩnh vực quan trọng và phát triển mạnh mẽ là công nghệ thông tin, đóng vai trò quan trọng trong các ngành khoa học công nghệ và ảnh hưởng đến tất cả các khía cạnh trong đời sông xã hội cũng như các công tác tổ chức quản lý. Trong lĩnh vực quản lý, công nghệ thông tin đã được ứng dụng rộng rãi và góp phần tạo nên sự khoa học, chính xác và hiệu quả trong công việc của các nhà quản lý. Các công ty, tổ chức và cơ quan đều muốn áp dụng công nghệ thông tin vào hoạt động của minh dé nâng cao hiệu qua và tăng cường quản lý.
Với sự phat triển của các công ty trong các lĩnh vực sản xuất, kinh đoanh và dịch vụ, quy mô của chúng ngày càng lớn. Quá trình sản xuất và bán hàng diễn ra qua nhiều khâu và công đoạn khác nhau. Số lượng hàng hóa sản xuất và khách hàng sử dụng ngày càng tăng lên. Điều này khiến cho công tác quản lý phức tạp hơn.
Do đó, việc áp dụng công nghệ thông tin trong công việc quản lý trở thành một nhu cầu thiết yếu và quan trọng đối với các công ty. Một trong những thách thức trong quản lý là việc lưu trữ và tra cứu thông tin hóa đơn. Khi có nhiều cơ sở và hàng ngày phải viết nhiều hóa đơn, việc lưu trữ và tìm kiếm các hóa đơn này có thé tốn nhiều thời gian và đôi khi gặp khó khăn. Thống kê và báo cáo hàng tháng hoặc hàng năm cũng trở nên khó khăn khi số lượng hóa đơn bán hàng ngày càng tăng.
Việc lặp đi lặp lại quá nhiều lần gây khó khăn cho người quản lý trong việc lưu trữ và quản lý thông tin. Do đó, công tác quản lý bán hàng đóng vai trò quan trọng trong mọi cửa hàng. Để nâng cao hiệu quả, cần phát triển và hoàn thiện quản lý bán hàng dé đáp ứng với thực tế của từng cửa hàng. Hiện nay, có nhiều hệ thống quản lý bán hàng tiêu biêu như KiotViet, PopApp,.
Tuy nhiên, những hệ thống này thường đòi hỏi sự kết hợp với các thiết bị đặc biệt và chi phi lắp đặt, bảo trì cao. Với mục tiêu giảm thiểu chỉ phí, tăng hiệu suất hoạt động, dễ dàng bảo trì và dễ dàng mở rộng chúng em muôn xây dựng một phân mêm quản lý bán hàng với chức năng vận hành và quản lý toàn bộ quy trình hoạt động của cửa hàng trên chính thiết bị điện thoại di động và máy tính cá nhân. Phần mềm giúp cửa hàng thu thập dữ liệu bán hàng một cách tự động, liên tục từ việc quản lý hàng hóa, quản lý khách hàng đến việc quản lý doanh thu và lợi nhuận. Từ đó cửa hàng tiết kiệm được thời gian và công sức, tăng cường độ chính xác, giảm thiểu sai sót.
Người chủ cửa hàng sẽ có cái nhìn rõ ràng về hiệu suất kinh doanh, xu hướng tiêu dùng, và các chỉ số quan trọng khác, giúp đưa ra những quyết định kinh doanh thông minh, tối ưu hóa chiến lược và định hướng phát triển tiếp theo. Chúng em tin rằng việc áp dụng công nghệ thông tin vào quản lý bán hàng là một bước cần thiết dé cải thiện hiệu suất và thành công của cửa hang trong thị trường cạnh tranh ngày này, đó cũng là lý do nhóm em quyết định chọn đề tài “Ứng dụng các công nghệ React Native, React va Spring Boot trong kiến trúc Microservices dé xây dựng phần mềm quan lý ban hàng cho nha hàng và dich vụ đồ uống" cho khóa luận của nhóm. Mục tiêu Nghiên cứu nắm vững quy trình bán hàng, nhập hàng, quản lý thông tin. Nghiên cứu các công cụ, nền tang lập trình được sử dụng dé xây dựng hệ thống như là React Native, React, Spring Boot và kiến trúc Microservices.
Xây dung phần mềm quan ly bán hàng trên các nền tang mobile, tablet và website, quản lý được hầu hết các thông tin và xử lý các quy trình nghiệp vụ trong quy trình quản lý bán hàng như là quản lý thông tin sản phẩm, quản lý khách hàng, xử lý đặt bàn, đặt món, đặt đồ uống, xuất ra các thống kê, báo cáo dưới dang số liệu tổng hợp, đồ thị trực quan nhằm giúp chủ cửa hàng có thể nắm bắt được tình hình kinh doanh và đứa ra các quyết định đúng đắn nhất. Đối tượng nghiên cứu Cơ chế, cách thức hoạt động của các nghiệp vụ bán hàng, nhập hàng, quản lý thông tin của các cửa hàng đồ ăn và dịch vụ đồ uống. Tìm hiểu về các công nghệ phía Back-End, bao gồm ngôn ngữ lập trình Java, Spring Boot, Spring Security, Spring Cloud, MySQL, kiến trúc Microservices. Tìm hiểu về các công nghệ phía Front-End, bao gồm HTML, CSS, JavaScript, TypeScript, React, React Native, Redux Saga.
Tìm hiểu một số công nghệ phụ trợ khác để việc lập trình, quản lý code, quản lý hệ 2 thong trở nên dé dàng va thuận tiện hơn, bao gồm Docker, Docker compose, Gradle, Keycloak, Zipkin, Prometheus, Grafana. Pham vi nghiên cứu Tập chung nghiên cứu và xây dựng hệ thống quản lý bán hàng cho doanh nghiệp kinh doanh dịch vụ nhà hàng và đồ uống, không thực hiện cho các ngành khác. Thời gian nghiên cứu: 30/01/2023 - 08/09/2023 CHƯƠNG 2 TỎNG QUAN CÔNG NGHỆ 2. Tổng quan về Microservices 2.
Giới thiệu về Microservices Microservice là một kỹ thuật phát triển phần mềm, là một biến thể của kiến trúc hướng dịch vụ (SOA - xuất hiện trong những năm 1990). SOA tập trung vào việc chia ứng dụng thành các dịch vụ nhỏ và độc lập, nhằm tạo sự linh hoạt và tái sử dụng trong phát triển phần mềm. Tuy nhiên, SOA thường gặp khó khăn trong việc triển khai thực tế do sự phức tạp của các dịch vụ lớn và sự phụ thuộc mạnh mẽ giữa các dịch vụ. Bắt đầu vào khoảng giữa những năm 2000, một số công ty công nghệ lớn như Amazon, Netflix và Twitter đã bắt đầu áp dụng kiến trúc microservice để tăng cường tính mở rộng, khả năng module và triển khai liên tục trong hệ thong của ho.
Việc triển khai thành công của những công ty này đã thu hút sự quan tâm và lan rộng kiến trúc microservice sang các lĩnh vực phát triển phần mềm khác. Đến những năm 2010, kiến trúc microservice đã trở nên phổ biến và trở thành một trong những phong cách kiến trúc phô biến trong công nghiệp phát triển phan mềm. Các công ty và tổ chức phát trién phần mềm khắp thé giới đã bắt đầu chuyền từ kiến trúc monolithic truyền thống sang kiến trúc microservice đề tận dụng các lợi ích vượt trội của kiến trúc này trong việc xây dựng các ứng dụng phức tap và linh hoạt. Cho đến hiện nay, kiến trúc microservice tiếp tục phát triển và tiến xa hơn trong việc tạo ra các hệ thống phần mềm phức tạp, đáp ứng nhanh chóng và hiệu quả yêu cầu của thị trường và người đùng.
Trong kiến trúc microservices, các logic ứng dụng được phân chia thành các phần riêng biệt, được gọi là các microservices. Thay vì phải hiện thực tat cả các logic ứng dụng trong một ứng dụng nguyên khối (monolithic application), mỗi microservice độc lập triển khai một phần cụ thể của ứng dụng hoặc một khả năng kinh doanh. Các microservices có thê được viết bằng nhiều ngôn ngữ lập trình và được triển khai và mở rộng độc lập với nhau. Mỗi microservice hoạt động như một ứng dụng con độc lập, có khả năng giao tiếp với các microservices khác thông qua các giao thức giao tiếp nhẹ nhàng như HTTP, RPC hoặc các hang đợi tin nhắn.
Việc phân chia ứng dụng thành các microservices độc lập giúp cải thiện tính module và tách biệt các chức năng, ø1úp ứng dụng dễ hiéu, phát triển, kiểm thử và duy trì. Storefront WebApp (Nguồn: https://microservices.io/i/Microservice Architecture. Những đặc trưng của Microservices Phân chia thành các dịch vụ độc lập (Decoupling): Kiến trúc Microservices chia ứng dụng thành các dịch vụ nhỏ hơn và độc lập nhau, mỗi dịch vụ triển khai một phần cụ thể của ứng dụng hoặc một phần riêng biệt trong lĩnh vực kinh doanh. Tach biệt các chức năng: Mỗi microservices thực hiện một chức năng cụ thể, đảm bao tính tách biệt giữa các chức năng và giúp dé dang quản ly và phát triển từng phần riêng biệt Giao tiếp thông qua các giao thức có tính loose coupling cao: Các microservices giao tiếp thông qua các giao thức như HTTP, gRPC, hoặc các hàng đợi tin nhắn (Message Queue) giúp giảm sự phụ thuộc và tăng tính linh hoạt giữa các thành phần.
Khả năng mở rộng dễ dàng: Các microservices có thể mở rộng một cách độc lập, cho phép tăng cường hiệu suất và đáp ứng điều kiện tải cao cho các dịch vụ riêng biệt mà không ảnh hưởng đến toàn bộ hệ thống Quản lý và duy trì dễ dàng: Việc chia ra làm các dịch vụ riêng biệt giúp microservices trở nên dé dang quản lý và bảo trì hơn. Nếu cần thay đổi hoặc cập nhật một tính năng cụ thể, chỉ cần tập trung vào dịch vụ liên quan mà không cần ảnh hưởng đến các dịch vụ khác. Viết bằng nhiều ngôn ngữ lập trình và các công nghệ khác nhau: Các dịch vụ microservices có thé được viết bằng nhiều ngôn ngữ lập trình và sử dụng các công nghệ khác nhau, giúp cho việc lựa chọn công nghệ phù hợp nhất cho từng dịch vụ, tối ưu hóa hiệu suất và linh hoạt trong việc phát triển. Ngoài ra, các dịch vụ của microservices còn cho phép tích hợp các dịch vụ và hệ thống từ các nhà cung cấp bên thứ ba một cách dễ dàng, giúp mở rộng tính năng của ứng dụng mà không ảnh hưởng đến các dịch vụ khác.
Tương thích với mô hình phát triển phần mềm Agile: Microservices cho phép đội ngũ phát triển phần mềm chia ra làm các nhóm nhỏ phát triển và triển khai các dịch vụ của họ một cách độc lập, giúp tăng tốc độ phát triển và giảm thời gian đưa sản phẩm ra thị trường. Phân phối và triển khai liên tục (CI CD - Continuous Integration và Continuous Delivery): Kiến trúc microservices hỗ trợ việc triển khai các dich vụ độc lập với nhau, cho phép các nhóm phát triển có thê phân phối và triển khai các phiên bản mới một cách độc lập và đồng thời. So sánh kiến trúc Microservices và kiến trúc nguyên khối (Monolithic) MONOLITHIC MICROSERVICE ARCHITECTURE ARCHITECTURE User Business Logic _,Data Access Layer Micro- Micro- Micro- Micro- service service service service ©® @ @ ©® @® ©® @ © ọ @ @ ©® © © © Data Base Data Base Data Base Data Base Data Base Hinh 2.2: So sanh gitta Monolithic va Microservices (Nguon: https:/www.com/hs- fs/hubfs/Picturel.webp?width=889 &height=478 &name=Picturel.