Xây dựng hệ thống quản trị nội dung trên nền tảng điện toán đám mây Windows Azure Platform

MỤC LỤC

Sự cần thiết của điện toán đám mây

Các công ty lớn này sẽ cung cấp các dịch vụ cho phép doanh nghiệp có thể lưu trữ và quản lý dữ liệu của họ trên các kho lưu trữ trung tâm. Cung cấp các dịch vụ như hạ tầng như dịch vụ IaaS (infrastructure as a service), nền tảng như dịch vụ - PaaS (platform as a service), phần mềm như dịch vụ - SaaS (software as a service).

Kiến trúc tổng quan

Bên trong đám mây

Dưới dạng dịch vụ “đo” được, SaaS cho phép bạn thuê một ứng dụng và chỉ trả tiền cho thời gian sử dụng.

Map Reduce

Sau đó MapReduce framework thu thập tất cả các cặp với cùng key từ tất cả các danh sách và đưa vào các nhóm, hàm Reduce tác động lên mỗi nhóm sẽ cho output. Sau đó framework sẽ ghép tất cả các cặp có cùng khóa (tức là cùng 1 từ) thành 2 danh sách và truyền cho hàm Reduce, hàm Reduce sẽ cộng tất cả các giá trị (value, bằng 1) trong danh sách lại và thu được kết quả là số lần xuất hiện của từ đó.

Các dịch vụ điện toán đám mây

Các mô hình cung cấp dịch vụ điện toán đám mây Phần mềm như dịch vụ (Software-as-a-Service)

App Engine cung cấp một sandbox cho ứng dụng Python của bạn (các ngôn ngữ khác sẽ hỗ trợ sau) như là các API Python để lưu trữ và quản lý dữ liệu (dùng Google Query Language) bên cạnh các hỗ trợ về xác thực người dùng, thao tác hình ảnh và gửi email. Hadoop là một Java™ software framework nguồn mở tương tự như PaaS nhưng tập trung vào thao tác các tập dữ liệu lớn trên các server nối mạng với nhau (lấy ý tưởng từ Google MapReduce cho phép xử lý song song trên các tập dữ liệu lớn).

Các nhà cung cấp dịch vụ điện toán đám mây

Trong khi Amazon cung cấp cho bạn môi trường máy ảo (VM) để bạn có thể cài đặt, phát triển các phần mềm dịch vụ của bạn thì Google cung cấp một môi trường hạn chế hơn, dựa trên ngôn ngữ Python, khung phát triển Django, lưu trữ và CSDL dùng GFS và Google BigTable. Azure Platform giống như Google App Engine đều đi theo hướng “Nền tảng như một dịch vụ” – PaaS để cho phép các nhà phát triển host ứng dụng của họ lên datacenter, tuy nhiên về cơ bản, mỗi hãng đưa ra cách hoạt động khác nhau cho dịch vụ của mình.

NỀN TẢNG MICROSOFT WINDOWS AZURE

Giới thiệu Windows Azure Platform

“Azure đánh dấu bước chuyển đổi trong phát triển phần mềm, trong chiến lược và trong cách thức phân phối sản phẩm của chúng tôi” - Ray Ozzie, người thay thế vai trò của Bill Gates tại Microsoft tại Microsoft khẳng định. Nó cung cấp Windows Azure như là một hệ điều hành đám mây (cloud services operating system), Windows Azure là môi trường runtime cho các ứng dụng cloud và cung cấp một tập các dịch vụ hỗ trợ cho phát triển, quản trị và hosting ứng dụng.

Hình 2.1: Tương tác khách hàng/doanh nghiệp với Windows Azure [5]
Hình 2.1: Tương tác khách hàng/doanh nghiệp với Windows Azure [5]

Mô hình tổng quan và các thành phần

  • Windows Azure

    Do mục đích chính của Windows Azure là hỗ trợ các ứng dụng có thể phục vụ rất nhiều người cùng lúc, Windows Azure giải quyết vấn đề này bằng cách chạy nhiều phiên bản của cùng một code ứng dụng trên nhiều server khác nhau, mỗi phiên bản gọi là một thể hiện (instance). Cả Web Role instance và Worker Role intance đều có thể truy xuất hệ thống file trên VM mà nó thực thi, tuy nhiên lưu ý rằng hệ thống lưu trữ file này không có tính bền vững, nghĩa là nếu như instance đó bị loại bỏ (shutdown) thì VM và toàn bộ dữ liệu trên VM đó cũng bị xóa bỏ. Để làm việc với Storage, việc đầu tiên là phải tạo một tài khoản Storage (Storage Account), Windows Azure sẽ cung cấp một khóa bí mật cho tài khoản để kiểm soát các truy nhập vào thông tin trong tài khoản Storage đó, mỗi ứng dụng muốn truy xuất dữ liệu (blobs, table hoặc queue) từ Storage phải cung cấp khóa bí mật để xác thực.

    Việc cập nhật dữ liệu vào tables có thể gặp vấn đề: Điều gì xảy ra nếu hai ứng dụng cùng muốn cập nhật dữ liệu vào 1 thực thể trong table, việc cập nhật một thực thể sẽ bao gồm đọc thực thể, thay đổi nội dung thuộc tính, thêm/xóa thuộc tính và ghi lại thực thể vào bảng. Một khi VM đã được tạo ra, fabric controller sẽ giám sát VM đó, nếu một ứng dụng yêu cầu 5 Web Role instances và một trong số đó gặp vấn đề trục trặc, Fabric Controller sẽ tự động khởi động lại một instance mới, hoặc nếu máy chủ mà VM chạy gặp vấn đề, fabric controller sẽ khởi động instance mới trên một VM mới (tất nhiên trên máy chủ khác) và thiết lập lại load balancer để trỏ đến máy chủ mới.

    Hình 2.3 mô tả các thành phần chính của Windows Azure: Compute, Storage và Fabric.
    Hình 2.3 mô tả các thành phần chính của Windows Azure: Compute, Storage và Fabric.

    Các dịch vụ bên trong SQL Azure [4]

    • Các mô hình ứng dụng Windows Azure

      Nếu như ứng dụng được xây dựng trong môi trường Windows Azure, người hay tổ chức sở hữu ứng dụng có thể mở rộng hay thu hẹp quy mô ứng dụng bằng cách thay đổi số lượng instance cấp cho ứng dụng tùy theo tình huống, Windows Azure sẽ tính chi phí trên số lượng instance mà ứng dụng dùng đến, nhờ đó tiết kiệm được tài nguyên so với cách host truyền thống. Nhà phát triển cũng có thể tạo ứng dụng web có khả năng mở rộng bằng cách sử dụng WCF với dịch vụ mạng (Web Services) RESTful hoặc dịch vụ mạng dựa trên SOAP (SOAP-base). Trong mọi trường hợp, nhà phát triển có thể chỉ định số lương instances ứng dụng sử dụng, Windows Azure Fabric Controller sẽ tạo ra các VM tương ứng. Như đã đề cập ở phần 2.2.1.3 Fabric), fabric controller sẽ giám sát các instances, đảm bảo ứng dụng luôn có đủ số instance phục vụ cho ứng dụng. Nhiều tổ chức/cơ quan đôi khi cần một số lương lớn các máy tính để xử lý 1 chương trình song song, chẳng hạn như để render các hiệu ứng đặc biệt cho một bộ phim, xử lý nghiệp vụ trong một ngân hàng, …Một giải phát là có thể đầu tư một hệ thống tính toán song song (cluster) gồm nhiều máy với cấu hình mạnh, tuy nhiên chi phí sẽ rất cao.

      Để tương tác với ứng dụng, người dùng thống qua 1 WebRole instance, từ giao diện tương tác này, người dùng có thể xác định số lượng Worker Role instance cần thiết, khởi động, tạm dừng 1 số instance, lấy kết quả, … Việc liên lạc giữa WebRole instance và Worker Role instance được thực hiện nhờ “cầu nối” Queues Storage. Nền tảng Windows Azure đang thu hút được nhiều nhà phát triển ứng dụng thiết kế lại các ứng dụng của họ để chạy trên môi trường Windows Azure, trở ngại lớn nhất của Windows Azure lúc này có lẽ nằm ở mức giá, chi phí để duy trì ứng dụng Windows Azure là khá cao và hiện tại phù hợp với những ứng dụng có quy mô lớn, cần tới khả năng mở rộng về cả năng lực xử lý và khả năng lưu trữ.

      Hình 2.8: Cơ sở dữ liệu quan hệ SQL Azure Database [4]
      Hình 2.8: Cơ sở dữ liệu quan hệ SQL Azure Database [4]

      XÂY DỰNG HỆ THỐNG QUẢN TRỊ NỘI DUNG TRÊN WINDOWS AZURE PLATFORM

      • Hệ thống quản trị nội dung (CMS)
        • Mô hình CMS sử dụng Windows Azure Platform

          • Cho phép cập nhật thông tin nhanh chóng, dễ dàng từ bất cứ đâu: Các thông tin mới có thể được đưa lên hệ thống từ bất kỳ đâu thông qua Internet, với giao diện thân thiện, người quản trị hoặc nhân viên có thể truy cập hệ thống, đăng nhập, đưa thông tin, chỉnh sửa thông tin bằng trình duyệt. • Phục vụ nhiều người sử dụng cùng lúc: với kiến trúc client-server, hệ thống CMS cho phép nhiều người cùng truy cập hệ thống, với các quản trị viên, mỗi người có thể độc lập thực hiện công việc của mình tùy theo quyền hạn. • Khả năng sử dụng lại các thông tin: Các thông tin đã cũ hoặc không còn phù hợp có thể đưa vào trạng thái “lưu trữ” (archive) - tuy nhiên các thành phần nội dung của nó vẫn có thể dùng lại, việc lưu trữ lại các thông tin cũ (thay vì xóa đi) cũng giỳp cỏc quản trị theo dừi hệ thống tốt hơn.

          Tác động vào hệ thống có 5 nhóm tác nhân, tương ứng với 5 Roles: Author (viết bài), Editor (sửa bài), Approver (phê duyệt), Deployer (đăng bài) và Administrator (quản trị). • Bảng ContentRank: Bảng lưu các cấp độ bài viết – thể hiện tầm quan trọng của bài viết, có 4 cấp độ cho bài viết: Low (Thấp), Average (Trung bình), High (Cao) và Lead (Hàng đầu). Ở ứng dụng này, ta sẽ sử dụng mô hình dữ liệu Table Storage của Windows Azure để tạo ra cấu trúc bảng dữ liệu (xem chương 2, phần 2.2.1.2 Dịch vụ Storage ), các bảng sẽ được thể hiện thông qua các lớp đối tượng (class) với các trường tương ứng là các thuộc tính của lớp.

          Phân hệ này cho phép Administrator thực hiện các thao tác - Xem danh sách tài khoản người dùng - Xem thông tin tài khoản người dùng - Sửa thông tin tài khoản người dùng - Tạo tài khoản mới.

          Hình 3.1: Các trường hợp sử dụng tổng quan
          Hình 3.1: Các trường hợp sử dụng tổng quan

          THỬ NGHIỆM VÀ ĐÁNH GIÁ

            • Giao diện trực quan để thực hiện các công việc: Viết bài, Biên tập, Duyệt bài, Triển khai. • Sử dụng Windows Azure Storage Service để lưu trữ dữ liệu bài viết, qua đó giảm được chi phí sử dụng SQL Azure và tăng tính linh hoạt cho hệ thống. Như vậy chương này đã giới thiệu quá trình từ triển khai ứng dụng lên môi trường Windows Azure Platform, thử nghiệm quy trình hệ thống với các tính năng Viết bài, Biên tập, Duyệt bài và Triển khai.

            Hệ thống về cơ bản đã hoạt động ổn định trên môi trường Windows Azure (với tên miền http://cloudcms.cloudapp.net). Chương này cũng đưa ra nhận xét, đánh giá về những ưu điểm và nhược điểm của hệ thống.

            Hình 4.1: Upload gói mã nguồn (*.cspkg) và file cấu hình (*.cscfg) lên môi trường
            Hình 4.1: Upload gói mã nguồn (*.cspkg) và file cấu hình (*.cscfg) lên môi trường