TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
Điện toán đám mây
Hạ tầng máy tính và viễn thông hiện nay đã chuyển mình mạnh mẽ trên nền tảng công nghệ số, với các phương thức kết nối đa dạng như có dây, không dây, cáp đồng, cáp quang, vệ tinh, wifi, và mạng 3G, 4G Những công nghệ này cho phép kết nối mạng toàn cầu, mở rộng khả năng giao tiếp đến mọi ngóc ngách trên thế giới Sự phát triển của hạ tầng kỹ thuật công nghệ đã dẫn đến sự đa dạng của các thiết bị tính toán, từ siêu máy tính và máy chủ lớn đến máy tính cá nhân, laptop, thiết bị di động thông minh và cả những thiết bị di động giá rẻ, tất cả đều có thể kết nối với nhau.
Trong thế giới điện toán hiện đại, điện toán đám mây (Cloud Computing) ra đời nhằm tối ưu hóa khả năng điện toán với chi phí thấp và thời gian nhanh chóng Công nghệ này cung cấp các sản phẩm và dịch vụ công nghệ thông tin chất lượng cao đến mọi đối tượng, giúp doanh nghiệp tiết kiệm chi phí mua sắm và duy trì hạ tầng công nghệ Thay vì lưu trữ trên máy tính cá nhân, các nguồn điện toán như máy chủ, phần mềm và dịch vụ được lưu trữ trên Internet, cho phép người dùng kết nối và sử dụng dễ dàng Hơn nữa, các dịch vụ này có khả năng mở rộng và thu hẹp linh hoạt theo nhu cầu, với chi phí tính theo mức độ sử dụng thực tế của khách hàng.
1.1.2 Các đặc tính cơ bản của điện toán đám mây Điện toán đám mây có năm tính chất nổi bật so với mô hình truyền thống.[14]
Hình 1.1: Mô hình điện toán đám mây
Người dùng có khả năng tự phục vụ theo nhu cầu, cho phép họ tự động yêu cầu các dịch vụ tài nguyên như máy chủ, phần mềm hoặc dịch vụ lưu trữ mà không cần sự can thiệp của nhà cung cấp dịch vụ.
Tính đàn hồi nhanh chóng trong điện toán đám mây cho phép tài nguyên được cung cấp một cách linh hoạt và nhanh chóng, có khả năng mở rộng hoặc thu hẹp theo nhu cầu Tài nguyên này được coi là không có giới hạn và có thể truy cập bất kỳ lúc nào, đáp ứng kịp thời các yêu cầu của người dùng.
Tập hợp tài nguyên là mô hình cho thuê tài nguyên máy tính của nhà cung cấp, cho phép nhiều người dùng cùng sử dụng Các nguồn tài nguyên vật lý và ảo được gán động và phân bổ theo nhu cầu người dùng, mặc dù khách hàng không kiểm soát hay biết vị trí chính xác của các tài nguyên, nhưng có thể chỉ định ở mức trừu tượng cao như quốc gia hay trung tâm dữ liệu Tài nguyên này bao gồm lưu trữ, xử lý, bộ nhớ và băng thông mạng.
Dịch vụ đám mây cung cấp khả năng truy cập mạng rộng rãi, cho phép người dùng dễ dàng kết nối với tài nguyên đám mây từ bất kỳ thiết bị nào như máy tính để bàn, laptop hay thiết bị di động, miễn là có kết nối internet Người dùng có thể truy cập các dịch vụ đám mây mọi lúc, mọi nơi, mang lại sự linh hoạt và tiện lợi tối đa.
Dịch vụ được đo đếm (Measured Service) trong hệ thống đám mây cho phép tự động kiểm soát và tối ưu hóa việc sử dụng tài nguyên thông qua khả năng đo lường dịch vụ lưu trữ, xử lý, băng thông và tài khoản người dùng Điều này giúp khách hàng theo dõi và kiểm tra các tài nguyên mà họ sử dụng, từ đó mang lại sự minh bạch cho cả nhà cung cấp dịch vụ và khách hàng.
Các mô hình dịch vụ trong điện toán đám mây
Hiện nay, nhiều hãng công nghệ cung cấp dịch vụ điện toán đám mây với ba loại hình cơ bản: Dịch vụ hạ tầng (IaaS), dịch vụ nền tảng (PaaS) và dịch vụ phần mềm (SaaS) Phân loại này được gọi là "mô hình SPI".
Hình 1.2: Các loại dịch vụ của ĐTĐM
1.2.1 Dịch vụ hạ tầng (IaaS – Infrastructure as a Service)
Dịch vụ IaaS là một giải pháp đám mây cung cấp hạ tầng thô dưới dạng máy ảo cho người dùng Khách hàng có khả năng triển khai và vận hành phần mềm trên các máy ảo tương tự như trên một máy chủ, đồng thời có thể lưu trữ dữ liệu cá nhân trên nền tảng đám mây.
Người dùng trong môi trường "đám mây" không có quyền kiểm soát hạ tầng vật lý, nhưng họ hoàn toàn có quyền quản lý và sử dụng các tài nguyên được cung cấp Họ cũng có khả năng yêu cầu mở rộng lượng tài nguyên mà mình được phép sử dụng.
Dịch vụ EC2 của Amazon và Virtual Machine của Microsoft là những ví dụ điển hình về dịch vụ máy tính ảo Khách hàng có thể đăng ký sử dụng máy tính ảo, lựa chọn hệ điều hành như Windows, Ubuntu, CentOS, và tự cài đặt ứng dụng theo nhu cầu của mình.
Các đặc trưng tiêu biểu [4]:
Tài nguyên được cung cấp dưới dạng dịch vụ bao gồm máy chủ, thiết bị mạng, bộ nhớ, CPU, không gian đĩa cứng và trang thiết bị trung tâm dữ liệu.
❖ Cung cấp khả năng linh hoạt trong việc mở rộng dịch vụ
❖ Người sử dụng chỉ phải trả phí cho các tài nguyên thực tế sử dụng
❖ Cho phép nhiều người dùng có thể cùng sử dụng trên một tài nguyên
❖ Đối với cấp độ doanh nghiệp: mang lại lợi ích cho công ty bởi một nguồn tài nguyên tính toán tổng hợp được cung cấp sẵn
1.2.2 Dịch vụ nền tảng (PaaS – Platform as a Service)
Dịch vụ PaaS (Platform as a Service) cung cấp nền tảng điện toán giúp khách hàng phát triển và triển khai phần mềm trên nền tảng đám mây mà không cần lo lắng về chi phí hay phức tạp trong việc quản lý hạ tầng PaaS tích hợp tất cả các tính năng cần thiết để xây dựng và triển khai ứng dụng web mà không cần tải hay cài đặt phần mềm Nhờ vào PaaS, các nhà phát triển có thể nhanh chóng tạo ra ứng dụng mà không gặp rắc rối trong việc thiết lập máy chủ hay cài đặt cơ sở dữ liệu, vì những vấn đề này đã được nhà cung cấp dịch vụ giải quyết.
Mô hình PaaS được thể hiện rõ qua dịch vụ App Engine của Google, cho phép người dùng phát triển ứng dụng web bằng ngôn ngữ lập trình Java hoặc Python Tương tự, dịch vụ Web App của Microsoft cũng hỗ trợ khách hàng xây dựng ứng dụng web trong môi trường NET, mang lại sự linh hoạt và tiện lợi cho các nhà phát triển.
Các đặc trưng tiêu biểu [4]:
❖ Cung cấp môi trường phát triển tích hợp cho việc phát triển, kiểm thử, triển khai và vận hành ứng dụng
❖ Khách hàng sử dụng công cụ trên nền web để khởi tạo, quản lý các dịch vụ
❖ Kiến trúc của các dịch vụ được cung cấp trên cloud là đồng nhất
❖ Tích hợp dịch vụ web và cơ sở dữ liệu
❖ Hỗ trợ cộng tác nhóm phát triển
❖ Cung cấp các công cụ hỗ trợ tiện tích khác
1.2.3 Dịch vụ phần mềm (SaaS – Software as a Service)
Dịch vụ SaaS là mô hình cung cấp ứng dụng qua internet, cho phép khách hàng sử dụng phần mềm theo nhu cầu Nhà cung cấp có thể lưu trữ ứng dụng trên máy chủ của họ hoặc cho phép tải xuống thiết bị của khách hàng Sau khi hết thời gian sử dụng, các dịch vụ này sẽ bị vô hiệu hóa.
Một ví dụ điển hình về mô hình dịch vụ SaaS là Salesforce.com, nổi bật với ứng dụng CRM phục vụ cho doanh nghiệp Ngoài ra, các ứng dụng SaaS phổ biến cho người dùng cuối bao gồm Office Online của Microsoft và Google Docs của Google.
Các đặc trưng tiêu biểu [4]:
❖ Là các phần mềm có sẵn và yêu cầu việc truy xuất, quản lý thông qua mạng internet
❖ Quản lý các hoạt động một cách tập trung, cho phép khách hàng truy xuất từ xa thông qua web
Cung cấp ứng dụng thông thường và gần gũi với mô hình ánh xạ từ một đến nhiều, bao gồm các đặc trưng về kiến trúc, giá cả và quản lý hiệu quả.
❖ Tập trung phần mềm ở server của nhà cung cấp giúp giải phóng người dùng khỏi việc tải các bản vá lỗi và cập nhật
❖ Thường xuyên tích hợp những phần mềm giao tiếp trên mạng diện rộng.
Các thành phần của điện toán đám mây
Điện toán đám mây gồm các thành phần cơ bản như dưới đây:
Hình 1.6: Thành phần của điện toán đám mây
Cơ sở hạ tầng của điện toán đám mây bao gồm phần cứng được cung cấp như các dịch vụ chia sẻ, cho phép người dùng dễ dàng sử dụng lại Tài nguyên phần cứng này được cung cấp theo yêu cầu, như trong môi trường máy ảo, giúp giảm chi phí bảo trì và sử dụng Người dùng có thể tắt các dịch vụ khi không cần thiết, mang lại sự linh hoạt và tiết kiệm chi phí.
❖ Lưu trữ: Lưu trữ đám mây (Cloud Storage) gồm việc phân phối các dịch vụ lưu trữ dữ liệu như: cơ sở dữ liệu, dịch vụ web
Nền tảng điện toán đóng vai trò quan trọng trong việc cung cấp hạ tầng cho dịch vụ và ảnh hưởng đến cấu trúc của “đám mây” Nó cũng là cơ sở vững chắc cho các lớp ứng dụng, cho phép các ứng dụng hoạt động hiệu quả trên nền tảng này.
10 đó Platform giúp làm cho giảm sự tốn kém khi triển khai các ứng dụng do người dùng không phải trang bị cơ sở hạ tầng của riêng mình
Lớp ứng dụng trong điện toán đám mây cung cấp phần mềm như một dịch vụ qua Internet, cho phép khách hàng truy cập và sử dụng ứng dụng mà không cần cài đặt Các ứng dụng này dễ dàng chỉnh sửa và người dùng có thể nhận hỗ trợ nhanh chóng.
Dịch vụ đám mây là một phần mềm độc lập có khả năng tích hợp với các dịch vụ khác, cho phép tương tác giữa nhiều máy tính để thực hiện các ứng dụng theo yêu cầu Ví dụ về các dịch vụ này bao gồm Google Maps và các giải pháp thanh toán linh hoạt trên Amazon.
Khách hàng đám mây bao gồm các thiết bị phần cứng như máy tính và đường dây kết nối Internet, cùng với phần mềm như trình duyệt Web, giúp người dùng truy cập và sử dụng các ứng dụng hoặc dịch vụ từ đám mây.
Các mô hình triển khai điện toán đám mây
1.4.1 Mô hình đám mây riêng (Private Cloud)
Mô hình đám mây riêng (Private Cloud) là hạ tầng đám mây do tổ chức hoặc doanh nghiệp sở hữu, phục vụ cho người dùng nội bộ Những đám mây này hoạt động trong môi trường an toàn bên trong tường lửa của công ty và được quản lý trực tiếp bởi doanh nghiệp.
Cơ sở hạ tầng đám mây riêng bao gồm máy chủ, thiết bị lưu trữ và ứng dụng, với mục tiêu bảo vệ an toàn dữ liệu và dịch vụ Hệ thống đám mây riêng được thiết kế tốt sẽ tối ưu hóa độ sẵn sàng và hiệu năng của ứng dụng, giúp đáp ứng nhanh chóng nhu cầu của người dùng và thích ứng với sự thay đổi công nghệ.
Đám mây riêng là giải pháp mà các tổ chức, doanh nghiệp lớn xây dựng để tận dụng công nghệ và khả năng quản trị của điện toán đám mây Việc triển khai đám mây riêng giúp tối ưu hạ tầng, nâng cao hiệu quả sử dụng và quản lý tài nguyên dễ dàng hơn, từ đó rút ngắn thời gian đưa sản phẩm ra thị trường.
1.4.2 Mô hình đám mây công (Public Cloud)
Mô hình đám mây công cung cấp các dịch vụ điện toán đám mây cho người dùng thông qua hạ tầng Internet hoặc mạng công cộng rộng lớn Các dịch vụ và ứng dụng của người dùng đều được lưu trữ trên đám mây, cho phép chia sẻ tài nguyên tính toán, mạng và lưu trữ giữa các ứng dụng khác nhau.
Hình 1.8: Mô hình đám mây công (Public Cloud)
Dịch vụ đám mây công phục vụ cho số lượng khách hàng lớn, với khả năng hạ tầng cao, mang lại chi phí thấp và đáp ứng linh hoạt nhu cầu người dùng Khách hàng hưởng lợi từ chi phí đầu tư thấp và giảm thiểu rủi ro, cùng với khả năng co giãn để mở rộng hoặc thu nhỏ dịch vụ theo yêu cầu Tuy nhiên, một thách thức lớn của điện toán đám mây công là vấn đề bảo mật và an toàn dữ liệu, khi tất cả dữ liệu được lưu trữ trên dịch vụ Cloud do nhà cung cấp quản lý Điều này khiến các công ty lớn, đặc biệt là trong lĩnh vực tài chính, ngân hàng và các tổ chức chính phủ, cảm thấy lo ngại về sự an toàn của dữ liệu của họ khi sử dụng dịch vụ Cloud.
1.4.3 Mô hình đám mây lai (Hybrid Cloud)
Public Cloud có chi phí thấp và dễ áp dụng nhưng thiếu an toàn, trong khi Private Cloud an toàn hơn nhưng lại tốn kém và khó triển khai Kết hợp hai mô hình này sẽ tận dụng được những ưu điểm của từng loại, tạo ra mô hình đám mây lai (Hybrid Cloud) hiệu quả.
Hình 1.9: Mô hình kết hợp Hybrid Cloud
Hybrid Cloud kết hợp giữa Public Cloud và Private Cloud, cho phép doanh nghiệp chuyển giao các chức năng nghiệp vụ và dữ liệu không quan trọng lên đám mây Doanh nghiệp sử dụng dịch vụ Public Cloud để xử lý và quản lý các dữ liệu này một cách hiệu quả.
13 các dữ liệu tương đối quan trọng, doanh nghiệp sẽ giữ chúng trong tầm kiểm soát bằng việc sử dụng Private Cloud
1.4.4 Mô hình đám mây cộng đồng (Community Cloud) Đám mây cộng đồng là một mô hình triển khai điện toán đám mây, trong đó có nhiều doanh nghiệp được liên kết với nhau nhằm mục đích chia sẻ hạ tầng giữa các doanh nghiệp với nhau Các doanh nghiệp này thường có chung lĩnh vực hoạt động kinh doanh, ngoài ra các doanh nghiệp này cũng phải có chung mối quan tâm về bảo mật, đảm bảo an toàn dữ liệu,….[14]
Hình 1.10: Mô hình đám mây cộng đồng
Khi triển khai mô hình điện toán đám mây cộng đồng, các doanh nghiệp có thể thực hiện quản lý đám mây theo nhiều cách khác nhau:
❖ Các doanh nghiệp có thể cùng nhau quản lý tài nguyên đám mây
❖ Các doanh nghiệp có thể thuê bên thứ 3 đứng ra quản lý đám mây giúp cho họ
Đám mây cộng đồng liên quan đến nhiều tổ chức doanh nghiệp với các chi nhánh khác nhau, đòi hỏi sự quản lý hiệu quả Để đạt được điều này, cần có một người hoặc nhóm quản lý đám mây, có trách nhiệm phối hợp và hỗ trợ các nhà quản lý chi nhánh trong việc quản lý tài nguyên đám mây.
Kết luận
Trong chương đầu tiên, luận văn đã trình bày các khái niệm cơ bản về điện toán đám mây, cùng với những đặc điểm nổi bật và các mô hình dịch vụ được triển khai trên nền tảng này Điện toán đám mây được ứng dụng đa dạng trong nhiều lĩnh vực.
Bài viết sẽ khám phá 14 hình thức khác nhau của điện toán đám mây, bao gồm đám mây riêng, đám mây công cộng, đám mây lai và đám mây cộng đồng, hứa hẹn thu hút sự chú ý lớn từ cộng đồng Chương tiếp theo sẽ tập trung vào nền tảng điện toán đám mây Azure của Microsoft và các kiểu kiến trúc phần mềm được triển khai trên nền tảng này.
KIẾN TRÚC PHẦN MỀM DỰA TRÊN CÁC DỊCH VỤ ĐIỆN TOÁN ĐÁM MÂY MICROSOFT AZURE
Nền tảng Microsoft Azure
2.1.1 Tổng quan về Window Azure Platform
Nền tảng Window Azure cung cấp môi trường phát triển và triển khai phần mềm trên điện toán đám mây Mỗi thành phần của Window Azure được thiết kế để thực hiện các chức năng cụ thể liên quan đến đám mây Các thành phần chính trong nền tảng này bao gồm:
Hình 2.1: Tổng quan mô hình Azure Platform
(Nguồn: https://www.thewindowsclub.com/secret-cloud-computing-microsoft)
• Windows Azure: Cung cấp môi trường nền tảng, các hệ điều hành trên đám mây
Cung cấp nền tảng để chạy ứng dụng và lưu trữ dữ liệu trên máy chủ trong trung tâm dữ liệu của Microsoft
• SQL Azure: Cung cấp dịch vụ lưu trữ dữ liệu quan hệ trên đám mây dựa trên SQL
• Windows Azure Platform AppFabric: cung cấp các dịch vụ đám mây để kết nối các ứng dụng chạy trên đám mây hoặc on-premise
Microsoft Azure là nền tảng điện toán đám mây của Microsoft, giúp người dùng vượt qua mọi giới hạn về hạ tầng và địa lý Nền tảng này cho phép xây dựng ứng dụng web và lưu trữ dữ liệu trong các trung tâm dữ liệu của Microsoft Azure.
Azure cung cấp đa dạng dịch vụ, cho phép xây dựng, triển khai và quản lý các giải pháp công nghệ thông tin Microsoft Azure mở ra thế giới khả năng không giới hạn Để quản lý, Microsoft cung cấp giao diện Management Portal (https://portal.azure.com) Các dịch vụ trong Azure được phân loại thành nhóm, giúp người dùng dễ dàng nhận diện và tiếp cận nhanh chóng các dịch vụ hiện có.
Hình 2.2: Các thành phần của Microsoft Azure
Cung cấp các dịch vụ tính toán trên Azure, bao gồm các máy chủ ảo, các ứng dụng, và các dịch vụ trên nền đám mây
Hình 2.3: Mô hình dịch vụ Compute của Microsoft Azure
Máy chủ ảo là một phương thức sử dụng hạ tầng như một dịch vụ, cho phép người dùng tạo ra các máy ảo với nhiều hệ điều hành khác nhau như Windows, Ubuntu, và CentOS Chúng có thể được sử dụng linh hoạt cho nhiều mục đích, bao gồm việc tạo môi trường phát triển và kiểm thử với chi phí thấp, vì bạn có thể tắt máy ảo khi không cần thiết Bạn cũng có thể tạo và chạy các ứng dụng bằng bất kỳ ngôn ngữ lập trình hay thư viện nào mà bạn muốn.
Dịch vụ đám mây cho phép phát triển và triển khai ứng dụng với tính sẵn sàng cao và khả năng mở rộng, hỗ trợ hầu hết các ngôn ngữ lập trình như NET, PHP, Node.JS, Java, và Python, cùng với các cơ sở dữ liệu như SQL Server, MySQL và Oracle.
- Service Fabric: Service Fabric Platform là một thế hệ tiếp theo của
Microsoft đã ra mắt Platform-as-a-Service (PaaS) vào tháng 5 năm 2015 và chính thức hoạt động từ đầu năm 2016 Nền tảng này không chỉ hỗ trợ các dịch vụ không trạng thái (stateless) mà còn cho phép xây dựng các dịch vụ có trạng thái (stateful), giúp phát triển ứng dụng doanh nghiệp hiệu quả, tin cậy và dễ mở rộng Quản lý dữ liệu là một yếu tố quan trọng trong việc tối ưu hóa hiệu suất của ứng dụng.
Các ứng dụng yêu cầu dữ liệu với các loại khác nhau tùy thuộc vào nhu cầu cụ thể Để đáp ứng điều này, Azure cung cấp nhiều phương thức lưu trữ đa dạng.
18 và quản lý dữ liệu như SQL Database, dữ liệu không có cấu trúc (Blobs), dữ liệu dạng bảng (Tables)
Hình 2.4: Dữ liệu được quản lý trong Microsoft Azure
- SQL Database: Được sử dụng cho việc lưu trữ dữ liệu quan hệ SQL
Cơ sở dữ liệu cung cấp đầy đủ các tính năng chính của hệ quản trị cơ sở dữ liệu quan hệ, bao gồm quản lý giao dịch, hỗ trợ truy cập dữ liệu đồng thời cho nhiều người dùng, và đảm bảo tính toàn vẹn của dữ liệu Người dùng có thể truy cập SQL Database thông qua các công nghệ quen thuộc như Entity Framework, ADO.NET, và JDBC Ngoài ra, cơ sở dữ liệu này còn hỗ trợ hầu hết các ngôn ngữ T-SQL và đi kèm với các công cụ như SQL Server Management Studio.
- Tables:Tables không được sử dụng để cung cấp giải pháp lưu trữ quan hệ
Lưu trữ cặp khoá/giá trị trong NoSQL là một phương pháp hiệu quả, cho phép ứng dụng trên Windows Azure lưu trữ các thuộc tính đa dạng như chuỗi ký tự, số và ngày tháng Người dùng có thể truy xuất một nhóm thuộc tính bằng cách cung cấp một khoá duy nhất, mặc dù không hỗ trợ các toán tử phức tạp như phép join Hệ thống Tables cho phép truy cập nhanh chóng vào dữ liệu đã được định kiểu, dễ dàng mở rộng với khả năng chứa hàng terabyte dữ liệu Nhờ vào tính năng này, chi phí lưu trữ dữ liệu sẽ thấp hơn nhiều so với việc sử dụng cơ sở dữ liệu quan hệ SQL.
Windows Azure Blobs là lựa chọn thứ ba cho việc quản lý dữ liệu, được thiết kế để lưu trữ dữ liệu nhị phân không cấu trúc Tương tự như Tables, Blobs cung cấp giải pháp lưu trữ tiết kiệm chi phí và có khả năng chứa hàng terabyte dữ liệu.
Một ứng dụng lưu trữ video, sao lưu dữ liệu hoặc thông tin nhị phân có thể tận dụng Blobs để đơn giản hóa quy trình với chi phí tiết kiệm.
Cung cấp các tùy chọn khác nhau để kết nối người dùng với trung tâm dữ liệu, để tạo nên kiến trúc mạng trên nền Azure
Hình 2.5: Mô hình Networking trên Azure
- Virtual Network: Azure Virtual Network là chức năng mạng ảo trong
Microsoft Azure Máy ảo và dịch vụ là một phần của mạng ảo và chúng có thể truy cập qua lại với nhau
Azure Traffic Manager giúp bạn quản lý việc phân phối truy cập của người dùng đến các endpoint nằm ở nhiều datacenter khác nhau, dựa trên các phương thức điều hướng và tình trạng sức khỏe của các endpoint.
Cung cấp các công cụ hỗ trợ lập trình viên trong việc xây dựng và triển khai ứng dụng trên nền tảng Azure, bao gồm Visual Studio Online, Azure SDK, Azure tools for Visual Studio, Automation và APIs.
Hình 2.6: Mô hình Application Insight trên Azure
Đơn giản hóa quản trị và bảo mật ứng dụng doanh nghiệp cho nhân viên IT với Azure Active Directory thông qua việc bảo mật quyền truy cập bằng Multi-Factor Authentication và chức năng tự phục hồi mật khẩu Microsoft cung cấp nhiều gói dịch vụ khác nhau để đáp ứng nhu cầu đa dạng của khách hàng.
Hình 2.7: Mô hình Active Directory trên Azure f) Web & Mobile
Windows Azure offers a robust and secure platform for enterprise websites, enabling the use of Windows Azure Active Directory for authentication and access control You can safely store your business data in its databases and create your websites using preferred programming languages such as ASP.NET, PHP, Node.js, or Python For quicker development, you can leverage popular templates or samples from the Azure App Gallery, which includes options like WordPress, Umbraco, DotNetNuke, Drupal, Django, CakePHP, and Express.
Các kiểu kiến trúc phần mềm trên Cloud
2.2.1 Kiến trúc phân tầng (N-tier) a) Tổng quan
Hình 2.11: Mô hình Kiến trúc phân tầng [11]
Kiến trúc phân tầng (N-tier) chia ứng dụng thành các tầng logic và vật lý, giúp phân tách trách nhiệm và quản lý phụ thuộc hiệu quả Mỗi tầng đảm nhiệm một nhiệm vụ cụ thể, cho phép lớp ở tầng trên sử dụng dịch vụ từ lớp ở tầng thấp hơn.
Các tầng trong hệ thống được tách biệt về mặt vật lý và chạy trên các máy chủ riêng biệt, cho phép một tầng có thể gọi trực tiếp đến một tầng khác hoặc giao tiếp qua tin nhắn không đồng bộ và hàng đợi tin nhắn Việc phân tách này không chỉ nâng cao khả năng mở rộng và phục hồi của hệ thống mà còn có thể làm tăng độ trễ do việc giao tiếp qua mạng.
Một ứng dụng phân tầng thường bao gồm ba tầng chính: tầng trình diễn, tầng giữa và tầng cơ sở dữ liệu Đối với những ứng dụng phức tạp hơn, có thể có nhiều tầng hơn ba.
Các lớp trong một ứng dụng phân tầng có thể được xây dựng dưới dạng phân lớp đóng hoặc phân lớp mở:
• Kiến trúc phân lớp đóng: Mỗi tầng chỉ có thể gọi tới tầng ngay phía dưới của nó
• Kiến trúc phân lớp mở: Mỗi tầng chỉ có thể gọi tới bất kỳ tầng nào ở phía dưới của nó
24 b) Mô hình kiến trúc phân tầng trên Azure
Hình 2.12: Mô hình Kiến trúc phân tầng trên Azure [11]
Mỗi tầng trong hệ thống bao gồm hai hoặc nhiều máy ảo, giúp cung cấp khả năng phục hồi khi một máy ảo gặp sự cố Cân bằng tải được áp dụng để phân phối các yêu cầu giữa các máy ảo trong từng tầng Hệ thống cũng có khả năng mở rộng theo chiều ngang bằng cách thêm nhiều máy ảo vào nhóm.
Mỗi tầng trong kiến trúc mạng được đặt trong một mạng con riêng, với địa chỉ IP nội bộ nằm trong cùng một dải địa chỉ, giúp dễ dàng áp dụng các quy tắc bảo mật mạng (NSG) và bảng định tuyến cho từng tầng Ứng dụng Web và các tầng nghiệp vụ được thiết kế phi trạng thái, cho phép bất kỳ máy ảo nào tiếp nhận yêu cầu xử lý Tầng dữ liệu cần bao gồm các dữ liệu có thể nhân rộng, và đối với hệ điều hành Windows, nên sử dụng dịch vụ SQL Server để quản lý dữ liệu hiệu quả.
Nhóm bảo mật mạng (NSG) hạn chế quyền truy cập vào từng tầng, ví dụ tầng cơ sở dữ liệu chỉ cho phép truy cập từ tầng nghiệp vụ
• Kiến trúc N-tier không bị giới hạn ở ba tầng, đối với các ứng dụng phức tạp hơn thì có thể có nhiều tầng hơn
• Mỗi tầng có các yêu cầu riêng về tính mở rộng, tính sẵn sàng và tính bảo mật
Trong quá trình thiết kế kiến trúc, cần xem xét khả năng tích hợp các dịch vụ sẵn có mà không làm ảnh hưởng đáng kể đến cấu trúc tổng thể Các dịch vụ nên được cân nhắc bao gồm bộ nhớ đệm, hệ thống tin nhắn, giải pháp lưu trữ và cơ sở dữ liệu.
Để nâng cao tính bảo mật cho ứng dụng, việc thêm một mạng DMZ ở phía trước là rất quan trọng Mạng DMZ sẽ bao gồm các thiết bị mạng ảo (Network Virtual Appliances - NVA) có chức năng bảo mật, bao gồm tường lửa và kiểm tra gói tin.
Để nâng cao tính sẵn sàng, bạn có thể triển khai hai hoặc nhiều NVA cùng với bộ cân bằng tải bên ngoài, giúp phân phối yêu cầu từ Internet đến các instances một cách hiệu quả.
Không cho phép truy cập trực tiếp từ xa RDP hoặc SSH vào máy ảo cài đặt ứng dụng Thay vào đó, sử dụng một máy ảo khác làm jumpbox để kết nối với các máy ảo khác, với NSG cho phép RDP hoặc SSH từ các địa chỉ IP đã được cấu hình Kiến trúc phân tầng được áp dụng trong các tình huống cần tăng cường bảo mật và quản lý truy cập hiệu quả.
Kiến trúc phân tầng thường được triển khai dưới dạng hạ tầng như dịch vụ (IaaS), với mỗi tầng hoạt động trên máy ảo riêng biệt Tuy nhiên, ứng dụng phân tầng không chỉ giới hạn ở IaaS mà còn có thể tích hợp các dịch vụ khác như bộ nhớ đệm, dịch vụ tin nhắn và dịch vụ lưu trữ dữ liệu.
Kiến trúc phân tầng thường được áp dụng cho các trường hợp sau:
• Các ứng dụng web đơn giản
• Thực hiện chuyển đổi một ứng dụng on-premise lên Azure với điều kiện việc chỉnh sửa, tái cấu trúc là tối thiểu
• Phát triển thống nhất các ứng dụng on-premise và trên đám mây
Kiến trúc phân tầng là lựa chọn phổ biến cho các ứng dụng truyền thống on-premise, làm cho việc chuyển đổi hệ thống lên Azure trở nên hợp lý Các ưu điểm của kiến trúc này bao gồm khả năng mở rộng, dễ bảo trì và cải thiện hiệu suất, giúp tối ưu hóa quy trình vận hành trong môi trường đám mây.
• Khả năng chuyển đổi từ server tại chỗ lên server cloud một cách đơn giản do tính tương đồng giữa 2 môi trường
• Thời gian học tập của các lập trình viên giảm do chủ yếu sử dụng các máy ảo
• Là sự tiến hóa tự nhiên từ mô hình ứng dụng truyền thống
• Tăng tính mở cho môi trường không đồng nhất (Windows/ Linux) e) Hạn chế
• Việc thiết kế nguyên khối làm ngăn cản việc triển khai các tính năng độc lập
• Quản lý ứng dụng IaaS hoạt động hiệu quả hơn là việc ứng dụng chỉ sử dụng các dịch vụ được quản lý sẵn
• Khó khăn trong việc quản lý bảo mật mạng đối với các hệ thống lớn
2.2.2 Kiến trúc Web - Queue - Worker a) Tổng quan
Hình 2.13: Mô hình Kiến trúc Web – Queue – Worker [11]
Kiến trúc này bao gồm một giao diện web tiếp nhận yêu cầu từ người dùng và một worker xử lý các tác vụ tiêu tốn tài nguyên, công việc theo luồng hoặc theo lô Giao diện web giao tiếp với worker thông qua việc gửi thông điệp vào hàng đợi.
Các thành phần khác thường được tích hợp vào kiến trúc này bao gồm:
• Một hoặc nhiều cơ sở dữ liệu
• Bộ nhớ đệm lưu trữ các giá trị từ cơ sở dữ liệu nhằm mục đích tăng tốc độ đọc
• CDN để phục vụ nhanh các nội dung tĩnh
• Các dịch vụ từ xa như dịch vụ gửi SMS, dịch vụ Email
• Các dịch vụ xác thực b) Mô hình kiến trúc trên Azure
Hình 2.14: Mô hình Kiến trúc Web – Queue - Worker trên Azure [11]
27 Ứng dụng web được triển khai trên Azure App Service, còn các worker được triển khai trên các WebJob
Hàng đợi dùng lưu trữ các thông điệp thì ta có thể sử dụng Azure Service Bus hoặc Azure Storage Queue
Azure Redis Cache được sử dụng để lưu trữ dữ liệu trong bộ nhớ đệm, giúp giảm thời gian truy cập dư liệu
Azure CDN giúp lưu trữ và phân phối các dữ liệu tĩnh như hình ảnh, CSS và file HTML một cách hiệu quả Để lưu trữ dữ liệu, người dùng có thể lựa chọn công nghệ phù hợp với ứng dụng của mình, bao gồm SQL Database, Cosmos DB, MySQL, và MongoDB Ví dụ, hình vẽ minh họa sử dụng SQL Database và Cosmos DB để thể hiện khả năng lưu trữ này.
Không phải tất cả giao dịch đều cần phải qua hàng đợi và worker để lưu trữ Ứng dụng web có khả năng thực hiện các thao tác đọc và ghi đơn giản trực tiếp Worker được sử dụng cho các tác vụ tiêu tốn nhiều tài nguyên hệ thống hoặc có thời gian xử lý lâu.
Sử dụng các tính năng tự động của App Service để mở rộng số lượng instances một cách hiệu quả Nếu khả năng chịu tải của ứng dụng có thể dự đoán, hãy áp dụng chế độ lập lịch tự động Ngược lại, nếu khả năng chịu tải không thể dự đoán, hãy chọn chế độ tự động dựa trên số liệu tính toán tài nguyên hệ thống.
Các yếu tố ảnh hưởng đến khả năng chịu tải của hệ thống
Ba yếu tố quan trọng nhất trong thiết kế hệ thống chịu tải cao bao gồm hiệu năng, tính sẵn sàng và khả năng mở rộng.
Hiệu suất của hệ thống được đo bằng thời gian phản hồi, thường là giây hoặc mili giây Hệ thống hoạt động nhanh chóng giúp người dùng thực hiện nhiều nhiệm vụ hơn, từ đó gia tăng lợi nhuận Ngược lại, nếu hệ thống quá chậm, người dùng sẽ không có động lực để sử dụng.
Khả năng hoạt động của hệ thống, hay còn gọi là availability, được đo bằng uptime Uptime phản ánh thời gian mà hệ thống có thể hoạt động liên tục trong một khoảng thời gian nhất định Chẳng hạn, nếu trong một ngày hệ thống hoạt động suốt 100 giờ và chỉ gặp sự cố 1 giờ, thì uptime sẽ là 99/100, tương đương 99%.
Khả năng mở rộng của hệ thống là yếu tố quan trọng cần xem xét, đặc biệt khi số lượng người dùng gia tăng Cần đánh giá xem hệ thống có thể dễ dàng và nhanh chóng mở rộng để đáp ứng nhu cầu này hay không.
2.3.1 Đảm bảo hiệu năng (Performance)
Cân bằng tải với Load Balancer là một giải pháp hiệu quả để phân phối lưu lượng truy cập đến nhiều server Load Balancer, có thể là phần cứng hoặc phần mềm, cho phép tối ưu hóa hiệu suất bằng cách điều tiết tải cho nhiều server cùng lúc Ví dụ, nếu một server có khả năng phục vụ 1000 người, ta cần 10 server để phục vụ 10000 người Người dùng sẽ chỉ cần truy cập vào Load Balancer, từ đó nó sẽ tự động phân bổ lưu lượng đến các server, đảm bảo hoạt động mượt mà và hiệu quả.
Hình 2.17: Cân bằng tải với Load Balancer
Azure load balancer cung cấp 2 khái niệm về load balancer là public load balancer và internal load balancer:
▪ Public load balancer: là nơi tiếp nhận và điều phối các request của người dùng tới các web server tương ứng
▪ Internal load balancer: là nơi điều phối lưu lượng tới các tài nguyên bên trong hệ thống
Phân tán dữ liệu với Mạng Phân Phối Nội Dung (CDN) là một giải pháp lưu trữ các nội dung tĩnh của website như HTML, JavaScript, CSS và hình ảnh CDN giúp đặt các nội dung này trên nhiều máy chủ khác nhau, từ đó tối ưu hóa trải nghiệm truy cập của người dùng từ nhiều địa điểm trên toàn cầu.
Hình 2.18: Cách thức hoạt động của CDN
Những lợi ích khi sử dụng CDN để phân phối tài nguyên của website bao gồm:
▪ Tiết kiệm băng thông đáng kể đối với các dữ liệu tĩnh (hình ảnh, css, javascript)
Tăng tốc độ truy cập website và cải thiện thời gian tải nội dung là rất quan trọng để giảm thiểu độ trễ và hiện tượng giật hình khi người dùng xem các trang web phân phối nội dung như phim và video clip.
Người dùng có thể xem các chương trình và sự kiện truyền hình trực tuyến trên Internet thông qua máy tính, laptop và thiết bị cầm tay với tốc độ nhanh nhất Dịch vụ này đảm bảo chất lượng hình ảnh và âm thanh tốt nhất mà không cần phải đầu tư vào các thiết bị truyền hình đắt tiền.
Azure Redis Cache là giải pháp lưu trữ dữ liệu trong bộ nhớ, giúp giảm thiểu số lượng yêu cầu đến cơ sở dữ liệu Tất cả yêu cầu đều được truy xuất dữ liệu từ cache trước, và chỉ khi dữ liệu không có trong cache, hệ thống mới thực hiện việc lấy từ cơ sở dữ liệu.
Hình 2.19: Cách thức hoạt động của Caching
2.3.2 Đảm bảo tính sẵn sàng của hệ thống (Availability)
Trong kiến trúc máy chủ Master/Slave, thay vì chỉ sử dụng một máy chủ duy nhất, ta triển khai hai hoặc nhiều máy chủ, trong đó máy chủ chính được gọi là master và các máy chủ còn lại là slave Khi máy chủ master gặp sự cố như sập nguồn hoặc bị crash, một trong các máy chủ slave sẽ được chỉ định để thay thế và đảm bảo hệ thống hoạt động liên tục.
Replication thường được sử dụng cùng với Load Balancer để đảm bảo tính khả dụng của ứng dụng Mã nguồn của ứng dụng được triển khai trên nhiều máy chủ, và khi một máy chủ gặp sự cố, Load Balancer sẽ tự động chuyển hướng yêu cầu đến máy chủ khác, giúp duy trì hoạt động liên tục của dịch vụ.
Hình 2.20: Kiến trúc Maste/ Slave trong Azure SQL
2.3.3 Đảm bảo tính mở rộng hệ thống (Scalability)
Khả năng mở rộng của ứng dụng đo lường số lượng người dùng mà nó có thể phục vụ đồng thời Giới hạn khả năng mở rộng xảy ra khi ứng dụng không thể xử lý thêm người dùng do tài nguyên phần cứng quan trọng đã cạn kiệt Để tăng khả năng đáp ứng của hệ thống, có hai phương pháp chính: một trong số đó là mở rộng theo chiều dọc (Vertical scaling).
Tăng cường sức mạnh cho server có thể thực hiện bằng cách lắp thêm RAM, CPU, thay ổ cứng bằng SSD và tăng băng thông mạng Phương pháp này nhanh chóng và dễ dàng, nhưng nhược điểm là phần cứng luôn có giới hạn.
Mở rộng cấu hình trên Azure rất đơn giản, chỉ cần thực hiện một vài bước trên portal để nâng cao sức mạnh phần cứng cho ứng dụng Azure cung cấp nhiều dịch vụ với các thông số cấu hình phần cứng đa dạng.
STT Series Instance Cores Ram Storage Pricing
Bảng 2.1: Bảng thông số cấu hình của dịch vụ Azure Web app b) Mở rộng theo chiều ngang (Horizontal scaling):
Thay vì nâng cấp sức mạnh cho một máy chủ duy nhất, ta có thể thêm nhiều máy chủ vào hệ thống để hoạt động song song Phương pháp này mặc dù làm tăng độ phức tạp trong thiết kế, nhưng cho phép sử dụng phần cứng giá rẻ và khả năng mở rộng gần như không giới hạn.
4 Av2 Standard 10 Hỗ trợ Hỗ trợ
Bảng 2.2: Bảng thông số instance tối đa có thể mở rộng của Azure Web app
Chúng ta có thể cấu hình auto scale theo lịch hoặc theo mức độ sử dụng tài nguyên hệ thống như % CPU, % RAM,…
Microsoft Azure cung cấp cơ chế tự động scale cho các ứng dụng web với các thành phần:
Kết luận
Chương này trình bày tổng quan về các dịch vụ dịch thuật trên nền tảng đám mây Microsoft Azure, cho thấy rằng Azure cung cấp một loạt dịch vụ phong phú, từ hạ tầng máy ảo đến các dịch vụ lưu trữ và phân phối đa phương tiện như Media Service Những dịch vụ này tạo ra một nền tảng sáng tạo không giới hạn cho lập trình viên và nhà phát triển phần mềm.
Chương 2 cũng đưa ra 3 kiểu kiến trúc phần mềm ứng dụng các dịch vụ trên Microsoft Azure để tận dụng sức mạnh của nền tảng này, đó là các kiểu kiến trúc: Kiến trúc phân tầng, kiến trúc Web – Queue – Worker, kiến trúc vi dịch vụ Nhờ các tính năng hỗ trợ hệ thống replicate ở các vùng khác nhau và khả năng tự động mở rộng tài nguyên hệ thống của Azure mà chúng ta có thể xây dựng được những hệ thống có khả năng đáp ứng một số lượng lớn người dùng đồng thời cùng một lúc
Nền tảng Azure đang thu hút nhiều nhà phát triển ứng dụng nhờ khả năng mở rộng về xử lý và lưu trữ cho các hệ thống lớn Tuy nhiên, một trong những thách thức lớn nhất mà Microsoft Azure đang đối mặt là mức giá vẫn còn cao.
MỘT MÔ HÌNH ỨNG DỤNG KIẾN TRÚC PHẦN MỀM TRÊN NỀN TẢNG CÔNG NGHỆ AZURE CỦA MICROSOFT
Mô tả bài toán
Hiện nay, nhiều công ty và tập đoàn lớn đang áp dụng các giải pháp chấm công cho nhân viên như chấm công bằng vân tay và khuôn mặt Tuy nhiên, những phương pháp này vẫn tồn tại một số nhược điểm đáng lưu ý.
- Thời gian thực hiện chậm trễ
- Nhân viên phải xếp hàng chờ đợi đến lượt chấm công
- Có thể nhờ chấm hộ khi sử dụng thẻ của nhau
Chương trình chấm công bằng khuôn mặt áp dụng công nghệ tiên tiến từ Azure, mang lại nhiều lợi ích vượt trội Các dịch vụ của Azure hỗ trợ tối ưu hóa quy trình chấm công, nâng cao hiệu quả và độ chính xác trong việc quản lý thời gian làm việc của nhân viên.
Chương trình chấm công bằng khuôn mặt sử dụng Face ID APIs của Microsoft để xác thực danh tính nhân viên thông qua cơ sở dữ liệu đã đăng ký Hệ thống sẽ ghi nhận thời gian ra vào của nhân viên bằng cách lấy thời gian đầu tiên và cuối cùng khi họ được nhận diện.
Phân tích nghiệp vụ
3.2.1 Mô tả chức năng a) Quản lý hồ sơ nhân viên
• Nhân viên khi vào làm việc, phải nộp hồ sơ ban đầu bao gồm: Đơn xin việc, sơ yếu lí lịch, giấy khám sức khỏe, bằng cấp chuyên môn
Để đảm bảo thông tin nhân viên được cập nhật đầy đủ, cần cung cấp các dữ liệu quan trọng như mã nhân viên, mã phòng ban, họ tên, giới tính, ngày sinh, địa chỉ thường trú và hiện tại, số chứng minh nhân dân, số bảo hiểm, quê quán, dân tộc, tôn giáo, bằng cấp cùng với quá trình công tác.
Mỗi nhân viên sẽ được chụp 5 ảnh với các góc độ khác nhau để tạo bộ dữ liệu ban đầu, phục vụ cho quá trình nhận diện hình ảnh sau này Điều này cũng giúp quản lý chấm công hiệu quả hơn.
Việc chấm công tự động diễn ra khi nhân viên xuất hiện trước camera, giúp ghi nhận thời gian làm việc một cách chính xác Thông tin chấm công hàng ngày sẽ được cập nhật liên tục vào cơ sở dữ liệu của chương trình, đảm bảo quản lý hiệu quả.
• Bảng chấm công bao gồm: số thứ tự, họ tên nhân viên, số ngày làm việc, số ngày nghỉ phép, số ngày nghỉ phép, số ngày nghỉ có lương,…
3.2.2 Quy trình chấm công bằng khuôn mặt a) Mô hình quy trình xử lý
Việc chấm công được thực hiện tự động khi nhân viên xuất hiện trước camera Thông tin chấm công hàng ngày được cập nhật vào cơ
Hình 3.1: Quy trình chấm công bằng khuôn mặt
39 b) Mô tả các bước trong quy trình
Hệ thống tự động xử lý thực hiện việc chụp ảnh thông qua camera với tần số lấy mẫu 2 lần mỗi giây, có thể điều chỉnh theo cấu hình Đầu ra của quy trình này là các bức ảnh chụp được.
Khi hệ thống chụp được 1 khung hình, sẽ tiến hành bước xử lý phân tích hình ảnh để tìm kiếm khuôn mặt trên khung hình
Xử lý phát hiện khuôn mặt là bước quan trọng trong hệ thống tự động, bắt đầu với đầu vào là ảnh chụp và tạo ra đầu ra là danh sách các khuôn mặt được phát hiện Quá trình này sử dụng các thuật toán và thư viện xử lý hình ảnh tiên tiến để xác định và nhận diện khuôn mặt trong ảnh.
Sau khi hoàn tất xử lý hình ảnh, nếu phát hiện khuôn mặt, hệ thống sẽ chuyển sang bước nhận diện khuôn mặt Ngược lại, nếu không phát hiện được khuôn mặt, quá trình sẽ quay lại bước chụp ảnh.
Xử lý nhận diện khuôn mặt là bước thứ ba trong quy trình, được thực hiện bởi hệ thống tự động Đầu vào của quá trình này là danh sách các khuôn mặt đã được phát hiện, trong khi đầu ra bao gồm thông tin về khuôn mặt giống nhất cùng với độ tin cậy của kết quả Quá trình này thực hiện kết nối với dịch vụ FaceID của Microsoft để tiến hành nhận dạng khuôn mặt một cách chính xác.
Hệ thống tự động xử lý sẽ thực hiện đánh giá mức độ tin cậy của kết quả nhận dạng khuôn mặt Đầu vào của quá trình này bao gồm thông tin về khuôn mặt giống nhất và mức độ tin cậy Kết quả đầu ra sẽ là dữ liệu chấm công, trong đó hệ thống tự động đánh giá kết quả nhận dạng dựa trên ngưỡng độ tin cậy cho phép.
Khi độ tin cậy của dữ liệu chấm công vượt qua ngưỡng đánh giá, hệ thống sẽ tự động lưu trữ thông tin chấm công của nhân viên Ngược lại, nếu độ tin cậy thấp, cần thực hiện kiểm duyệt lại thông tin hình ảnh chấm công.
• Kiểm duyệt thông tin (bước 5)
Nhân viên quản lý chấm công sẽ xem xét hình ảnh ra vào của nhân viên khi có độ tin cậy thấp Đối với nhân viên trong công ty, thông tin này sẽ được chuyển đổi thành dữ liệu chấm công và có thể được sử dụng để cập nhật lại bộ training.
3.2.3 Biểu đồ các trường hợp sử dụng (Use Case)
Hệ thống chịu tác động từ hai nhóm tác nhân chính: Quản trị hệ thống và Quản lý chấm công Người dùng thuộc nhóm Quản trị hệ thống được cấp quyền thực hiện toàn bộ chức năng trong hệ thống.
Trường hợp sử dụng tổng quan:
Hình 3.2: Các trường hợp sử dụng tổng quan
Người quản trị hệ thống có thể thực hiện nhiều chức năng quan trọng như quản lý thông tin phòng ban, nhân viên, lịch làm việc, thời gian chấm công, người dùng trong hệ thống, thông tin cấu hình, cũng như thống kê và báo cáo.
Một số trường hợp sử dụng cụ thể:
Hình 3.3: Use case Quản lý phòng ban
Hình 3.4: Use case Quản lý nhân viên
Người dùng thuộc nhóm Quản lý chấm công có thể thực hiện các chức năng:
- Thêm mới thông tin của nhân viên: Mã nhân viên, tiên nhân viên, tên phòng ban, chức vụ,…
- Upload 5 ảnh cận mặt của nhân viên với các góc chụp khác nhau, dùng làm dữ liệu nhận diện khuôn mặt của nhân viên
- Tra cứu, xem thông tin của nhân viên
- Chỉnh sửa thông tin của nhân viên
• Quản lý lịch làm việc:
Hình 3.5: Use case Quản lý lịch làm việc
Use case này cho phép hiển thị và cập nhật lịch làm việc chi tiết hàng ngày cho nhân sự theo các ca làm việc, đồng thời cung cấp thông tin về các đơn đăng ký nghỉ có lý do.
Trong trường hợp chấm công, người quản lý có thể theo dõi thông tin chấm công và thời gian ra vào của từng nhân viên theo khoảng thời gian và phòng ban cụ thể.
Hình 3.7: Use case Quản lý người dùng
Người dùng trong nhóm Quản trị hệ thống có khả năng tạo mới và quản lý người dùng, bao gồm việc cấp quyền truy cập vào các chức năng trong hệ thống Ngoài ra, quản trị viên còn có thể chỉnh sửa thông tin người dùng và xóa tài khoản khi không còn cần thiết.
Hình 3.8: Use case Cấu hình hệ thống
Thiết kế hệ thống
3.3.1 Mô hình tổng thể chức năng hệ thống
Hình 3.10: Mô hình tổng thể chức năng hệ thống
3.3.2 Mô hình phân rã chức năng
Hình 3.11: Mô hình phân rã chức năng
Hình 3.12: Kiến trúc hệ thống
Các thành phần dịch vụ Azure được sử dụng trong hệ thống:
- Service bus: Máy tính liên tục chụp ảnh từ camera và tiến hành xử lý hình ảnh
Khi phát hiện khuôn mặt trên ảnh, máy tính sẽ gửi 1 bản tin lên queue
FaceRecognition trên Service bus Đồng thời máy tính cũng thực hiện lưu 1 ảnh có chứa khuôn mặt lên Blob
- Azure functions app: được kích hoạt theo trigger của service bus, mỗi khi có
Bản tin được lưu vào queue và sau đó, ứng dụng Function sẽ gọi dịch vụ nhận diện và xác thực khuôn mặt Face ID để xác định danh tính của người trong ảnh Azure Functions là dịch vụ cho phép chạy các đoạn code đơn giản trên cloud mà không cần lo lắng về các thành phần khác trong ứng dụng hoặc hạ tầng Dịch vụ này hỗ trợ nhiều ngôn ngữ lập trình như C#, F#, Node.js, PHP, và Python, đồng thời có khả năng tích hợp nhanh chóng với các dịch vụ khác của Azure như Azure Storage, Azure Mobile Apps, và Azure Event Hubs.
Với Azure Functions, bạn không cần phải chi trả một khoản tiền cố định cao để thuê server cho việc chạy function Thay vào đó, với gói Consumption, bạn chỉ phải thanh toán dựa trên thời gian thực tế mà function của bạn hoạt động.
Face ID APIs là dịch vụ nhận diện và xác thực khuôn mặt của Microsoft, thuộc Microsoft Cognitive Services, cung cấp bộ API trí tuệ nhân tạo cho phép lập trình viên phát triển ứng dụng phát hiện và nhận diện khuôn mặt nhanh chóng Dịch vụ này không chỉ phát hiện khuôn mặt trong ảnh mà còn trả về các thuộc tính như tuổi, giới tính và trạng thái cảm xúc Ngoài ra, Face API còn cho phép so sánh hai khuôn mặt để xác định xem chúng có phải là của cùng một người hay không Face ID có khả năng phát hiện tối đa 64 khuôn mặt trong một bức hình từ file ảnh được upload hoặc từ file có sẵn trên web, với kích thước file ảnh từ 1Kb đến 4Mb.
Blob storage là giải pháp lưu trữ lý tưởng cho hình ảnh training ban đầu của nhân viên và hình ảnh từ camera Dịch vụ lưu trữ dữ liệu không cấu trúc trên Azure cho phép lưu trữ nhiều loại file như ảnh, video và văn bản Block blob có thể chứa tối đa 50.000 blocks, mỗi block lên đến 100MB, cho tổng dung lượng lên đến 4.75TB Append blob, được tối ưu hóa cho việc thêm dữ liệu liên tục, thường được sử dụng để lưu trữ file logging với dung lượng tối đa 195GB Trong khi đó, page blob cho phép dung lượng lên đến 1TB.
Azure SQL là giải pháp lưu trữ cơ sở dữ liệu mạnh mẽ, được xây dựng trên nền tảng Microsoft SQL Server Dịch vụ này được lưu trữ tại các trung tâm dữ liệu của Microsoft và phân tán trên nhiều nút khác nhau Với khả năng tạo ra nhiều bản sao của cơ sở dữ liệu, Azure SQL đảm bảo việc khôi phục dữ liệu dễ dàng và nhanh chóng trong trường hợp xảy ra sự cố.
48 o Azure SQL giúp bảo vệ dữ liệu bằng cách bắt buộc các kết nối tới đều phải thực hiện mã hóa (SSL/TLS)
- Redis Cache: Lưu trữ dữ liệu trong bộ nhớ đệm nhằm cải thiện hiệu năng của hệ thống
- Notification Hubs: Mỗi khi nhận diện được hình ảnh của nhân viên, một notify sẽ được gửi tới ứng dụng mobile thông qua Notification Hubs
Dịch vụ ứng dụng web trên Microsoft Azure được thiết kế tối ưu cho việc lưu trữ website, hỗ trợ nhiều ngôn ngữ lập trình như Java, PHP, Node.js, Python và Net Azure App Service cho phép tự động mở rộng và cân bằng tải hệ thống, tự động điều chỉnh số lượng instances dựa trên lưu lượng truy cập Ngoài ra, dịch vụ này còn cung cấp tính năng giám sát, giúp người quản trị theo dõi hiệu suất hệ thống theo thời gian thực.
- API app service: Triển khai trang backend của hệ thống Chứa các API làm việc với frontend và ứng dụng Mobile
- Azure CDN: Lưu trữ các file tĩnh như: Javascript, Css, html, ảnh
3.3.4 Quy trình xử lý dữ liệu ảnh khi nhận diện
Quy trình xử lý ảnh nhận diện nhân viên khi xuất hiện trước camera bao gồm các bước sau: đầu tiên, hình ảnh từ camera được thu thập; sau đó, tiến hành tiền xử lý để cải thiện chất lượng ảnh; tiếp theo, áp dụng các thuật toán nhận diện để xác định danh tính nhân viên; cuối cùng, kết quả nhận diện được trả về và lưu trữ để phục vụ cho các mục đích quản lý.
- Camera chụp ảnh: Sử dụng giao thức RTSP để kết nối tới luồng stream từ
Camera, định kỳ thực hiện capture ảnh từ camera theo tần suất 6 frames/ 1 giây
Sử dụng thư viện Windows.Media.FaceAnalysis có sẵn trong nền tảng Windows Universal App, bạn có thể phát hiện khuôn mặt trên các bức ảnh đã chụp một cách hiệu quả.
Loại bỏ ảnh có vị trí không thay đổi giúp tiết kiệm thời gian nhận diện Nếu khuôn mặt trong ảnh không thay đổi so với ảnh trước đó, có thể xác định đó vẫn là cùng một người và không cần thực hiện quá trình nhận diện lại.
- Crop vùng ảnh chứa khuôn mặt: Chỉ lấy các vùng chứa hình ảnh khuôn mặt trên ảnh
- Loại bỏ những khuôn mặt có kích thước nhỏ: Loại bỏ những ảnh có kích thước quá nhỏ, không có khả năng nhận diện được
- Giảm kích thước file ảnh: Giảm kích thước file ảnh chứa khuôn mặt, để tăng tốc độ nhận diện khuôn mặt
Gửi ảnh lên FaceID APIs để xác thực khuôn mặt, sau khi so sánh với dữ liệu nhận diện nhân viên có sẵn, FaceID API sẽ trả về personId và độ tin cậy Dựa vào độ tin cậy này, người dùng có thể xác định danh tính của người được nhận diện.
Xây dựng chương trình thử nghiệm
3.4.1 Môi trường cài đặt, triển khai Ứng dụng chấm công bằng nhận diện khuôn mặt được xây dựng và triển khai trên nền tảng công nghệ Microsoft Azure, cụ thể các công nghệ và môi trường cài đặt như sau:
- Hệ điều hành: Windows Azure
- Hệ quản trị cơ sở dữ liệu: Microsoft Azure SQL
- Công nghệ lập trình ứng dụng web: Net, AngularJS, HTML5, XML, CSS, Entity Framework
- Nền tảng công nghệ: NET
- Công cụ lập trình: Visual Studio 2017, Window Azure SDK for NET
3.4.2 Các bước triển khai ứng dụng a) Cài đặt các dịch vụ trên Azure
Để tạo Service Bus, bạn cần thực hiện các bước sau: Đặt tên cho dịch vụ là "TimeAttendance" (tên phải duy nhất), chọn vị trí máy chủ là "Southeast Asia" (khu vực máy chủ của Microsoft), và chọn gói dịch vụ "Standard" (cho phép tối đa 12.5 triệu thao tác với kích thước tin nhắn tối đa là 256 KB, chi phí là 10$/tháng) Cuối cùng, bạn cần tạo 2 Queue theo yêu cầu.
▪ Face-detection: Chứa thông tin để thực hiện xác thực nhân viên và chấm công
• Kích thước tối đa của Queue: 4GB
• Thời gian tồn tại của message là 14 ngày
• Thời gian khóa message là 30 giây
▪ Notification: Chứa thông tin thông báo chấm công thành công để báo về ứng dụng trên mobile
• Kích thước tối đa của Queue: 1GB
• Thời gian tồn tại của message là 1 ngày
• Thời gian khóa message là 30 giây
To configure an Azure Functions app, name it "time-attendance-func" (ensuring the name is unique), select Southeast Asia as the location, and choose Windows as the operating system Opt for the Consumption Plan, which charges $0.20 per million executions, and set the Runtime Stack to NET for applications running on this platform Keep Application Insights turned off, and proceed to create two functions sequentially.
▪ FaceRecognition: chức năng được kích hoạt khi có sự kiện enqueue vào queue có tên là Face-detection
▪ Notification: chức năng được kích hoạt khi có sự kiện enqueue vào queue có tên là Face-detection
Để cấu hình dịch vụ Face ID, bạn cần thiết lập dịch vụ Cognitive với các thông tin sau: tên dịch vụ là "TimeAttendance" (tên phải duy nhất), chọn vị trí "Southeast Asian" để đặt máy chủ dịch vụ Face ID của Microsoft, và lựa chọn gói giá S0 Dịch vụ Face ID cung cấp hai gói: F0 (miễn phí, cho phép 20 giao dịch mỗi phút và tối đa 30.000 giao dịch mỗi tháng) và S0 (cho phép tối đa 10 giao dịch mỗi giây) Chi phí cho gói S0 là 1$ cho 1.000 giao dịch.
The configuration for the Blob storage service includes a storage account named "timeattendance," which must consist of 3 to 24 characters, including letters and numbers, without duplicates It is located in Southeast Asia and offers standard performance The account type is BlobStorage, specifically designed for storing image files A container named "time-attendance-container" is created, with the resulting URL being https://timeattendance.blob.core.windows.net/.
To configure an Azure SQL service, create a unique database named "TimeAttendance" by selecting the "Blank Database" option Set the server to "TimeAttendance" and choose the Southeast Asia region for optimal performance Opt for the Standard S0 pricing tier, which offers 10 DTUs and 250 GB of storage.
To configure the Redis Cache service, use the unique DNS name "timeattendance" and select the Southeast Asia location Opt for the Standard C1 pricing tier, which includes 1 GB of cache and replication After the setup, the URL will be timeattendance.redis.cache.windows.net:6380.
- Tạo dịch vụ Notification Hubs với thông tin sau: o Notification Hub: TimeAttendance (tên là duy nhất) o Create new Namespace: o Location: lựa chọn Southeast Asian
53 o Pricing Tier: B1 Basic (10 triệu push và 200.000 thiết bị), chi phí 10$/tháng
web app is a unique service designed for Windows operating systems, available in Southeast Asia It offers a Standard S1 pricing tier, which includes 1 CPU core and 1.75 GB of RAM, priced at **$74.40 per month** Users can access the application through the following URL: [time-attendance.azurewebsites.net](https://time-attendance.azurewebsites.net).
The API app service for the unique application named "api-time-attendance" is designed to deploy the backend of the system It operates on the Windows OS and is published as code Located in Southeast Asia, this service falls under the Standard S1 pricing tier, which includes 1 CPU core and 1.75 GB of RAM, costing $74.4 per month The generated URL for accessing the service is https://api-time-attendance.azurewebsites.net.
Azure CDN is utilized for storing static files such as JavaScript, CSS, HTML, and images The unique database name is "time-attendance-cdn" and it is located in Southeast Asia, utilizing the Standard Akamai pricing tier An endpoint is created for storage at `https://timeattendance.blob.core.windows.net/`, with a successful URL being `https://time-attendance-cdn.azureedge.net` Additionally, there is a mention of camera installation arrangements.
- Cấu hình Camera yêu cầu tối thiểu: o Độ phân giải 1Mpx (HD 1280x720) o Frame rate: 16 Frames per second o Chuẩn nén: H.264, H.265, MJPEG o Giao thức: RTSP, HTTP
- Vị trí lắp đặt: từ 1.6 đến 2.2m tính từ mặt đất tới vị trí lắp Camera
- Khoảng cách nhận diện chính xác nhất: từ 1.0 đến 4.5 m tính từ vị trí đứng tới Camera với điều kiện đủ ánh sáng, tránh ánh sáng chói chiếu vào mặt
Hình 3.14: Hình ảnh bố trí Camera c) Khởi tạo dữ liệu ảnh nhân viên
- Máy ảnh dùng để chụp ảnh có độ phân giải từ 2Mpx đến 8Mpx
- Khoảng cách chụp ảnh từ 0.8 đến 1.2m (tính từ vị trí chụp ảnh tới máy ảnh)
- Kích thước ảnh không quá 4MB
- Hình ảnh sau khi chụp yêu cầu rõ nét, không bị nhòe, mờ Trong mỗi ảnh chỉ được phép có ảnh của 1 khuôn mặt
Để nâng cao tính chính xác khi chụp ảnh nhân viên di chuyển, hãy sử dụng các góc chụp khác nhau, bao gồm góc nghiêng trái, nghiêng phải, ngẩng mặt và cúi mặt, nhưng không quá 30 độ.
Hình 3.15: Ảnh mẫu nhận diện nhân viên
3.4.3 Màn hình giao diện a) Giao diện theo dõi người vào ra
Hệ thống camera sẽ thực hiện nhận diện khuôn mặt mỗi khi có người đi qua, và sau khi nhận diện thành công, thông tin sẽ được lưu trữ và chấm công Đồng thời, hệ thống cũng hiển thị thông báo chấm công thành công trên màn hình, giúp nhân viên biết rằng họ đã được chấm công.
Hình 3.16: Giao diện theo dõi người vào ra
Để truy cập vào các giao diện quản lý, người dùng cần đăng nhập vào hệ thống, điều này đảm bảo rằng chỉ những người được cấp quyền mới có thể sử dụng các tính năng của phần mềm.
Hình 3.17: Giao diện đăng nhập phần mềm c) Giao diện thông tin chấm công
Giao diện hiển thị thông tin chấm công của từng nhân viên theo thời gian, cho phép người quản lý dễ dàng tra cứu dựa trên các tiêu chí như phòng ban, mã số nhân viên và thời gian chấm công.
Hình 3.18: Giao diện thông tin chấm công
57 d) Giao diện thống kê lượt vào ra
Hệ thống ghi nhận tất cả lượt vào, ra của nhân viên, cho phép tra cứu thông tin theo nhiều tiêu chí khác nhau như khoảng thời gian, mã số nhân viên, tên nhân viên và vị trí lắp camera.
Hình 3.19: Giao diện thống kê lượt vào ra e) Giao diện tổng hợp, thống kê
Giao diện tổng hợp, thống kê số lần đi làm muộn, về sớm của nhân viên trong cơ quan theo tuần, theo tháng, theo quý
Hình 3.20: Giao diện tổng hợp, thống kê
Đánh giá khả năng chịu tải của hệ thống
Đánh giá hiệu năng là nhiệm vụ quan trọng cho ứng dụng, đặc biệt khi số lượng người dùng truy cập đồng thời tăng cao Để đáp ứng lượng yêu cầu lớn hơn, cần tăng số lượng các instance, giúp mỗi instance chịu tải nhỏ hơn và hệ thống có khả năng phục vụ nhiều người dùng hơn Microsoft cung cấp hai công cụ hỗ trợ đánh giá hiệu năng: Azure Load Test cho phép thực hiện load test và đánh giá hiệu năng, trong khi Azure Application Insight cung cấp thông tin về trạng thái CPU, mức sử dụng tài nguyên và số lượng request theo thời gian thực.
Hình 3.21: Giao diện sử dụng Application Insight
Hình 3.22: Giao diện kết quả khi chạy load test
3.5.1 Đánh giá với số lượng user đồng thời tăng dần
- Cấu hình Web app: o Ram: 1.75 Gb o CPU: 1 Core o Số lượng Instances: 1 instance o API được test: https://api-time-attendance.azurewebsites.net/api/Dashboard/GetDataDashboard
User trong bài viết này là user ảo được tạo ra từ hệ thống Azure Load Test, có nhiệm vụ tự động gửi yêu cầu đến trang thống kê của hệ thống.
- Kết quả sau khi thực hiện chạy test
STT Số user Response time (giây)
Số request / giây % CPU Ram used
Bảng 3.1: Kết quả thực hiện load test 1
- Đánh giá kết quả: o Đánh giá theo thời gian phản hồi (response time)
Hình 3.23: Biểu đồ số thể hiện thời gian thực hiện yêu cầu – test 1
SỐ LƯỢNG USER ĐỒNG THỜI
60 o Đánh giá theo số request thực hiện được trong 1 giây
Hình 3.24: Biểu đồ số request thực hiện được trong 1 giây – test 1
Khi số lượng người dùng đồng thời tăng mà cấu hình server không thay đổi, khả năng xử lý yêu cầu đồng thời không cải thiện nhiều Điều này dẫn đến việc thời gian phản hồi các yêu cầu ngày càng kéo dài khi số lượng yêu cầu gia tăng.
3.5.2 Kiểm thử với số lượng instance tăng dần
- Cấu hình Web app: o Ram: 1.75 Gb o CPU: 1 Core o Số lượng user đồng thời: 10.000 user
User ở đây là những user ảo được tạo ra từ hệ thống Azure Load Test, và các máy này sẽ tự động gửi yêu cầu tới trang thống kê của hệ thống.
- API được test: https://api-time-attendance.azurewebsites.net/api/Dashboard/GetDataDashboard
R EQUE ST PER SE C OND
SỐ LƯỢNG USER ĐỒNG THỜI
- Kết quả sau khi thực hiện chạy test
Số request / giây % CPU Ram used
Bảng 3.2: Kết quả thực hiện load test 2
- Đánh giá kết quả: o Đánh giá theo thời gian phản hồi (response time)
Hình 3.25: Biểu đồ số thể hiện thời gian thực hiện yêu cầu – test 2 o Đánh giá theo số request thực hiện được trong 1 giây
Hình 3.26: Biểu đồ số request thực hiện được trong 1 giây – test 2
R EQUE ST PER SE C O ND
Kết quả cho thấy, khi tăng số lượng instances trong một hệ thống với cùng số lượng người dùng, số lượng yêu cầu được phân bổ cho các instance sẽ đồng thời xử lý, giúp giảm thời gian phản hồi cho mỗi yêu cầu Nhờ đó, số lượng yêu cầu được xử lý trong một giây tăng lên Do vậy, để cải thiện khả năng chịu tải của hệ thống, việc tăng số lượng instance là giải pháp hiệu quả nhất.
Kết luận
Chương này giới thiệu hệ thống chấm công bằng nhận diện khuôn mặt được triển khai trên Microsoft Azure, bao gồm các tính năng như khởi tạo dữ liệu khuôn mặt, nhận diện nhân viên qua camera, và thống kê thời gian chấm công Hệ thống hiện đang hoạt động tại trụ sở ngân hàng Thương mại cổ phần Hàng Hải (Maritime Bank) ở tầng 28, tòa nhà TNR, 54 Nguyễn Chí Thanh, Phường Láng Thượng, Quận Đống Đa, Hà Nội, phục vụ cho 481 nhân viên.
Chương này đã thực hiện thử nghiệm khả năng chịu tải của hệ thống với 10.000 người dùng đồng thời Dù với cấu hình thấp (CPU 1 core, Ram 1.75 Gb) và 5 instance, hệ thống vẫn xử lý được 600 request mỗi giây Khi nâng cấp cấu hình và tăng số lượng instance, hệ thống hoàn toàn có thể đáp ứng lượng người dùng đồng thời lớn hơn.