Đặt vấn đề Như chúng ta đã thấy trong môi trường kinh doanh hiện đại, việc chia sẻ tài liệu là một phần quan trọng của quy trình làm việc và hợp tác. Việc này mang lại nhiều lợi ích về cộng tác, hiệu suất làm việc, quản lý thông tin và linh hoạt làm việc. Hiện nay, càng nhiều doanh nghiệp chú trọng phát triển hệ thống chia sẻ tài liệu, điển hình như Google cho ra google drive, Microsoft OneDrive của hãng Microsoft, github,. Theo khảo sát có rất nhiều công ty ở Việt Nam cũng chú trọng về hệ thống chia sẻ tài liệu.
Việc có hệ thống chia sẻ tài liệu đem lại hiệu quả to lớn trong doanh nghiệp. So với việc phải photo tài liệu và phân phát cho mọi người thì giờ đây ta có thể thực hiện thao tác một cách đơn giản, nhanh chóng, đỡ tốn thời gian và chi phí, đem lại hiệu quả công việc cao. Ngoài ra nó còn đem lại các lợi ích như tiết kiệm thời gian và tăng hiệu suất làm việc, quản lý tài liệu dễ dàng hơn, cải thiện sự cộng tác và làm việc nhóm, tiết kiệm chi phí, dễ dàng sao lưu và khôi phục dữ liệu. Tuy nhiên, để phát triển một hệ thống chia sẻ tài liệu ta cần đối mặt những thách thức sau: 1.
Quản lý và tìm kiếm tài liệu: Trong các tổ chức lớn, việc quản lý và tìm kiếm tài liệu trở nên phức tạp. Có hàng nghìn, thậm chí hàng triệu tài liệu được tạo ra và lưu trữ, và việc tìm kiếm một tài liệu cụ thể hoặc các tài liệu liên quan có thể là một thách thức. Đặc biệt là tài liệu được lưu trữ trên nhiều nền tảng và hệ thống khác nhau, việc tìm kiếm và quản lý lại càng trở lên khó khăn. Đồng bộ hóa và quản lý phiên bản: Trong quá trình làm việc nhóm và hợp tác, nhiều người cùng truy cập và chỉnh sửa cùng một tài liệu.
Điều này có thể dẫn đến sự mất đồng bộ hóa và trùng lặp phiên bản. Quản lý phiên bản tài liệu trở nên quan trọng để đảm bảo rằng mọi người đang làm việc trên phiên bản mới nhất và có thể phục hồi lại phiên bản trước đó nếu cần. Phan Quốc Anh - B19DCCN040 2 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC 3. Quyền truy cập và bảo mật: Trong việc chia sẻ tài liệu, việc xác định và quản lý quyền truy cập là rất quan trọng.
Cần xác định ai có quyền truy cập vào tài liệu nào và có thể thực hiện những thao tác gì, như chỉnh sửa, xem, hoặc chia sẻ. Đồng thời, bảo mật thông tin trong tài liệu trở thành một yếu tố quan trọng để đảm bảo rằng tài liệu không bị truy cập trái phép hoặc rò rỉ. Tích hợp và tương tác với các hệ thống khác: Trong môi trường kinh doanh hiện đại, việc chia sẻ tài liệu thường xuyên liên quan đến việc tích hợp và tương tác với các hệ thống khác hoặc các ứng dụng và nền tảng khác. Điều này đòi hỏi khả năng tương thích và tích hợp của hệ thống chia sẻ tài liệu.
Từ những vấn đề trên, em chọn đồ án tốt nghiệp “Xây dựng hệ thống chia sẻ tài liệu theo kiến trúc hướng dịch vụ”.2 Tìm hiểu các giải pháp 1. Tổng quan về yêu cầu 1. Giới thiệu về bài toán chia sẻ tài liệu Bài toán chia sẻ tài liệu là một vấn đề trong truyền thông tin giữa các cá nhân với nhau. Trước khi công nghệ phát triển, việc này phải thực hiện qua thư, từ, in ấn, phân phối giấy tờ,… Ngày nay với công nghệ phát triển ta có thể chia sẻ qua internet, các trang web,.
Bài toán chia sẻ tài liệu đặt ra một số thách thức là bảo mật và quyền riêng tư, cũng như về bản quyền,. Tóm lại, bài toán chia sẻ tài liệu là một vấn đề quan trọng trong việc truyền tải thông tin và kiến thức. Nó đòi hỏi sự quản lý, tổ chức và bảo mật tài liệu một cách hiệu quả để đảm bảo rằng thông tin có thể được chia sẻ một cách dễ dàng, an toàn và có ý nghĩa. Giới thiệu sơ qua về đề tài Đây là website nhằm đáp ứng trao đổi tài liệu.
website sau khi xây dựng xong sẽ đáp ứng được các yêu cầu sau: ● Quản lý người dùng ● Quản lý danh mục ● Quản lý tài liệu ● Xem danh sách tài liệu theo danh mục ● Upload tài liệu lên kho ● Bình luận, đánh giá tài liệu Phan Quốc Anh - B19DCCN040 3 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC 1. Kiến trúc Monolithic Monolithic(kiến trúc nguyên khối) là ứng dụng mà mọi dịch vụ đều nằm trên một hệ thống và dùng chung một database. Người dùng thao tác trực tiếp với giao diện, giao diện gọi đến chức năng, chức năng lại tìm đến dữ liệu trong database. Kiến trúc Microservices Microservices là kiểu kiến trúc thay vì các chức năng được đặt cùng nhau trong hệ thống thì nó sẽ được tách riêng lẻ và có thể với mỗi chức năng đó sẽ tương tác đến các database khác nhau.
So sánh giữa Monolithic và Microservices Kiến trúc Monolithic Kiến trúc Microservices Hiệu suất truyền tải tốt hơn Dễ mở rộng Đơn giản hơn Đảm bảo an toàn khi gặp sự cố, dễ chỉnh sửa Tài nguyên dùng ít hơn Bảng 1: So sánh giữa kiến trúc Monolithic và Microservices Ta thấy đối với bài toán chia sẻ tài liệu, tài nguyên sẽ lớn, phức tạp, và có thể mở rộng ra nhiều lĩnh vực, nhiều chức năng trong tương lai, và đặc biệt các chức năng sẽ được tách riêng lẻ, dễ chỉnh sửa. Vì thế nên trong trường hợp này, kiến trúc Microservices phù hợp hơn kiến trúc Monolithic nên em quyết định chọn kiến trúc Microservices để xây dựng đề tài. Kiến trúc Ta sử dụng kiến trúc Microservices áp dụng cho hệ thống chia sẻ tài liệu. Khái niệm kiến trúc Microservices Microservices là một mô hình kiến trúc mà trong đó ứng dụng được phát triển và triển khai dưới dạng một tập hợp các dịch vụ độc lập và nhỏ gọn.
Mỗi dịch vụ đảm nhận một phần nhỏ của toàn bộ ứng dụng và chúng tương tác với nhau thông qua các giao diện được định rõ. Mỗi dịch vụ có thể được triển khai, mở rộng và quản lý độc lập, giúp tăng tính linh hoạt và mở rộng của hệ thống. Phan Quốc Anh - B19DCCN040 4 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Hình 1: Kiến trúc Microservices API Gateway: hoạt động như một điểm truy cập duy nhất cho tất cả khách hàng với vai trò là dịch vụ biên giúp hiển thị các vi dịch vụ ra thế giới bên ngoài dưới dạng API được quản lý. Ngoài ra nó còn có nhiệm bổ sung như cân bằng tải đơn giản, xác thực và ủy quyền, xử lý lỗi, kiểm tra, dịch giao thức và định tuyến.
Ưu điểm của việc sử dụng API Gateway: ● Tách khách hàng khỏi các service. Các service có thể được cập nhật hoặc tái cấu trúc mà không cần cập nhật tất cả các máy khách. ● Các dịch vụ có thể sử dụng các giao thức nhắn tin không thân thiện với web, chẳng hạn như AMQP. ● API Gateway có thể thực hiện các chức năng xuyên suốt như xác thực, ghi nhật ký và cân bằng tải.
Ví dụ về Microservices [6] Một vài công ty sử dụng kiến trúc Microservices như: ● Netflix đã quyết định chia kiến trúc Monolithic của mình thành các vi dịch vụ vào năm 2009, sau khi gặp phải nhiều thất bại và sự gián đoạn máy chủ thường xuyên do thiết kế nguyên khối của nó. Netflix phải mất 2 năm để chuyển hoàn toàn các giải pháp kiến trúc của họ sang microservice và họ đã công bố ứng dụng được thiết kế lại vào năm 2011. Phan Quốc Anh - B19DCCN040 5 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ● Amazon - Amazon là một trong những công ty đầu tiên sử dụng microservice để cách mạng hóa toàn bộ công ty của họ. Là một trong những nhà quảng bá vi dịch vụ nổi tiếng nhất hiện nay, Amazon Web Services (AWS) cung cấp cho các doanh nghiệp cơ sở hạ tầng mà họ cần để xây dựng và quản lý các bộ chứa cũng như dịch vụ vi mô một cách nhanh chóng.
Một số đặc điểm chính của kiến trúc Microservices Nhiều thành phần: Bản thân đặc điểm nổi bật của microservice là sự phân chia thành từng ngăn. Điều này giúp hệ thống triển khai lại bất kỳ thành phần đơn lẻ nào sau khi cấu hình lại mà không cần phải tắt hoạt động của toàn bộ ngăn xếp ứng dụng. [6] Dành cho doanh nghiệp: Toàn bộ kiến trúc vi dịch vụ tập trung vào khả năng kinh doanh. Về cơ bản nó được thực hiện để phản ánh sự thuận tiện trong kinh doanh.
Mỗi nhóm được giao một nhiệm vụ phụ cụ thể và họ cần tập trung phát triển giao diện đó một mình. Truyền thông nội bộ được thực hiện thông qua dịch vụ bus tin nhắn.[6] Phi tập trung - Một hệ thống nguyên khối sử dụng một cơ sở dữ liệu logic duy nhất cho nhiều ứng dụng. Trong khi các ứng dụng microservice quản lý cơ sở dữ liệu riêng thì mỗi dịch vụ thường quản lý cơ sở dữ liệu riêng. Phân cấp giúp nâng cao năng suất và quản lý nhóm tốt hơn.
Định tuyến đơn giản: Giống như các hệ thống UNIX tiêu chuẩn, vi dịch vụ nhận yêu cầu, xử lý chúng và phản hồi chính xác. Trong nhiều sản phẩm khác, chẳng hạn như Xe buýt dịch vụ doanh nghiệp (ESB) , hệ thống công nghệ cao xử lý việc định tuyến tin nhắn, bố trí và các quy tắc kinh doanh. Vi dịch vụ giúp việc định tuyến dễ dàng hơn với các điểm cuối thông minh có khả năng phân tích dữ liệu và áp dụng các quy trình logic cũng như quy trình câm.[6] Khắc phục lỗi: Điều gì xảy ra nếu một trong các ứng dụng đột nhiên bị hỏng? Thông thường, điều này có nghĩa là toàn bộ chương trình sẽ bị tắt để bảo trì. Nhưng microservice xử lý những lỗi này một cách dễ dàng và duy trì hoạt động của framework.
Thiết kế tiến hóa: Nhiều ứng dụng bắt đầu với kiến trúc nguyên khối, nhưng khi xuất hiện các yêu cầu bổ sung, nó có thể được cải tiến dần dần thành các dịch vụ vi mô thông qua các API tương tác trên kiến trúc nguyên khối cũ hơn. Phan Quốc Anh - B19DCCN040 6 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC 1. Lợi ích của kiến trúc Microservices Khả năng mở rộng: Mỗi microservice có thể được điều chỉnh quy mô độc lập để đáp ứng nhu cầu về các tính năng mà nó hỗ trợ trong ứng dụng. Do đó, các nhóm có thể điều chỉnh quy mô phù hợp với nhu cầu cơ sở hạ tầng của mình, ước tính chính xác chi phí của các tính năng mới và duy trì tính khả dụng của dịch vụ trong thời gian cao điểm.