Xây dựng hệ thống quản trị nội dung sử dụng Windows Azure Platform
Trang 1MỤC LỤC
DANH MỤC CÁC HÌNH 7
DANH MỤC CÁC BẢNG 9
DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ 10
LỜI CẢM ƠN 11
LỜI NÓI ĐẦU 12
CHƯƠNG 1: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY 14
1.1 Khái niệm điện toán đám mây 14
1.1.1 Định nghĩa 14
1.1.2 Sự cần thiết của điện toán đám mây 16
1.1.3 Đặc tính của điện toán đám mây 17
1.2 Kiến trúc tổng quan 18
1.2.1 Bên trong đám mây 18
1.2.2 Mô hình thực thi ứng dụng điện toán đám mây 19
1.2.3 Map Reduce 19
1.3 Các dịch vụ điện toán đám mây 21
1.3.1 Các mô hình dịch vụ điện toán đám mây 21
1.3.2 Các nhà cung cấp dịch vụ điện toán đám mây 23
Kết chương: 25
CHƯƠNG 2: NỀN TẢNG MICROSOFT WINDOWS AZURE 27
2.1 Giới thiệu Windows Azure Platform 27
2.2 Mô hình tổng quan và các thành phần 28
2.2.1 Windows Azure 29
2.2.2 SQL Azure 36
2.2.3 AppFabric (.NET Service) 39
2.3 Các mô hình ứng dụng Windows Azure 40
Trang 22.3.1 Ứng dụng web có khả năng mở rộng 40
2.3.2 Ứng dụng xử lý song song: 41
2.3.3 Ứng dụng web có khả năng mở rộng với xử lý hậu cảnh 43
2.3.4 Sử dụng Cloud Storage từ các ứng dụng on-premises hoặc ứng dụng host truyền thống 44
2.4 Triển khai ứng dụng Microsoft Windows Azure 45
Kết chương 48
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG QUẢN TRỊ NỘI DUNG TRÊN WINDOWS AZURE PLATFORM 50
3.1 Hệ thống quản trị nội dung (CMS) 50
3.1.1 Khái niệm hệ thống quản trị nội dung 50
3.1.2 Một số đặc tính và yêu cầu tiêu biểu của CMS 51
3.1.3 Lợi ích của CMS 51
3.2 Mô hình CMS sử dụng Windows Azure Platform 52
3.2.1 Các yêu cầu cơ bản 52
3.2.2 Biểu đồ các trường hợp sử dụng (Use Case) 52
3.2.3 Mô hình CSDL 57
3.3 Xây dựng các thành phần ứng dụng 62
3.3.1 Mô hình dữ liệu đối tượng sử dụng Table Storage 62
3.3.2 Xây dựng các phân hệ 68
Kết chương 69
CHƯƠNG 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ 70
4.1 Triển khai hệ thống lên Windows Azure 70
4.2 Đánh giá hệ thống 76
Kết chương 77
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 78
Mức độ hoàn thành của đồ án tốt nghiệp 78
Trang 3Hướng phát triển 78
TÀI LIỆU THAM KHẢO 79
Trang 4DANH MỤC CÁC HÌNH
Hình 1.1: Đám mây điện toán [11] 14
Hình 1.2: Di trú tài nguyên vào “đám mây” [8] 15
Hình 1.3: Ảo hóa server [8] 15
Hình 1.4: Sky Computing cho các “đám mây”? [13] 16
Hình 1.5: Các mức dịch vụ trong “đám mây” [8] 18
Hình 1.6: Phân bổ công việc cho các Virtual machine [12] 19
Hình 1.7: Hàm Map một cặp (key, value) thành 1 danh sách [1] 20
Hình 1.8: Hàm Reduce tác động lên nhóm các cặp có cùng key [1] 21
Hình 1.9: Các nhà cung cấp dịch vụ Cloud Computing 23
Hình 2.1: Tương tác khách hàng/doanh nghiệp với Windows Azure [5] 27
Hình 2.2 Ba thành phần chính của Windows Azure Platform [4] 29
Hình 2.3: Các thành phần Windows Azure [4] 30
Hình 2.4: WebRole và WorkerRole instances trong khối Compute [3] 31
Hình 2.5: Các dịch vụ Storage Services [3] 32
Hình 2.6: Fabric Controller [5] 35
Hịnh 2.7: Các dịch vụ bên trong SQL Azure [4] 36
Hình 2.8: Cơ sở dữ liệu quan hệ SQL Azure Database [4] 37
Hình 2.9: Đồng bộ dữ liệu giữa SQL Azure Database và các nguồn CSDL khác [4] .38 Hình 2.10: Access Control quy định quyền truy cập với Users và Applications [9] 39
Hình 2.11: Service Bus kết nối giữa các ứng dụng cloud và on-premise [9] 40
Hình 2.12: Mô hình ứng dụng web có khả năng mở rộng [5] 41
Hình 2.13: Mô hình ứng dụng song song sử dụng WebRole, nhiều Worker Role instances, queues và blobs [5] 42
Hình 2.14: Mô hình ứng dụng song song kết nối từ ứng dụng cục bộ đến Worker Role [5] 43
Hình 2.15: Mô hình ứng dụng có khả năng mở rộng và xử lý ở hậu cảnh [5] 44
Hình 2.16: Mô hình ứng dụng từ máy cục bộ hoặc ứng dụng web truyền thống sử dụng Cloud Storage [5] 45
Hình 2.18: Development Fabric cung cấp môi trường giả lập Windows Azure trên máy local cho các lập trình viên [5] 46
Hình 3.1: Các trường hợp sử dụng tổng quan 53
Hình 3.2: Use case Viết bài 53
Hình 3.3: Use case Biên tập 54
Hình 3.4: Use case Phê duyệt 55
Hình 3.5: Use case Triển khai 56
Hình 3.6: Use case Quản lý tài khoản 56
Hình 3.7: Lược đồ CSDL 61
Trang 5Hình 4.1: Upload gói mã nguồn (*.cspkg) và file cấu hình (*.cscfg) lên môi trường
Staging Deployment của Hosted Service 70
Hình 4.2: Tạo Storage Account, thu được Primary Key Access và Endpoints 71
Hình 4.3: Cấu hình số instances, khai báo Storage Account Key 71
Hình 4.4: Test hệ thống trong môi trường Staging 72
Hình 4.5: Deploy hệ thống sang môi trường Production 72
Hình 4.6: Thế hiện nội dung bài viết 73
Hình 4.7: Phần quản trị: Author xem danh sách bài viết 73
Hình 4.8: Author viết bài 74
Hình 4.9: Editor biên tập bài viết 74
Hình 4.10: Phê duyệt bài viết 75
Hình 4.11: Deployer triển khai bài viết 75
Hình 4.12: Quản lý tài khoản - Danh sách tài khoản 76
Hình 4.13: Quản lý tài khoản – Tạo tài khoản mới 76
Trang 6DANH MỤC CÁC BẢNG
Bảng 2.1: Các mô hình tính toán Windows Azure 47
Bảng 3.1: Thiết kế bảng Account 57
Bảng 3.2: Thiết kế bảng AccountProperty 57
Bảng 3.3: Thiết kế bảng Content 58
Bảng 3.4: Thiết kế bảng AccountRoles 59
Bảng 3.5: Thiết kế bảng ContentRank 59
Bảng 3.6: Thiết kế bảng Domain 60
Bảng 3.7: Thiết kế bảng Zone 60
Bảng 3.8: Thiết kế bảng Distribution 61
Trang 7DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ
STT Từ viết tắt/thuật ngữ Giải thích
2 IaaS Infrastructure as a Service - Hạ tầng như dịch vụ
3 PaaS Platform as a Service - Nền tảng như dịch vụ
4 SaaS Software as a Service – Phần mềm như dịch vụ
6 AWS Amazon Web Services - Các dịch vụ web của
10 RDBMS Hệ quản trị cơ sở dữ liệu quan hệ
Trang 8LỜI NÓI ĐẦU
Ngày nay, đối với các công ty, doanh nghiệp, việc quản lý hiệu quả dữ liệu củariêng công ty cũng như dữ liệu khách hàng và đối tác là một trong những bài toán được
ưu tiên hàng đầu và đang không ngừng gây khó khăn cho họ Để có thể quản lý đượcnguồn dữ liệu đó, ban đầu các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chiphí như chi phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảotrì, sửa chữa, … Ngoài ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị;phải kiểm soát việc bảo mật dữ liệu cũng như tính sẵn sàng cao của dữ liệu
Từ một bài toán điển hình như vậy, chúng ta thấy được rằng nếu có một nơi tin cậygiúp các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không cònquan tâm đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào công việc kinhdoanh của họ thì sẽ mang lại cho họ hiệu quả và lợi nhuận ngày càng cao hơn
Thuật ngữ “điện toán đám mây” ra đời bắt nguồn từ một trong những hoàn cảnh nhưvậy Điện toán đám mây còn được bắt nguồn từ ý tưởng đưa tất cả mọi thứ như dữ liệu,phần mềm, tính toán, … lên trên mạng Internet Chúng ta sẽ không còn trông thấy cácmáy PC, máy chủ của riêng các doanh nghiệp để lưu trữ dữ liệu, phần mềm nữa màchỉ còn một số các “máy chủ ảo” tập trung ở trên mạng Các “máy chủ ảo” sẽ cungcấp các dịch vụ giúp cho doanh nghiệp có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trảchi phí cho lượng sử dụng dịch vụ của họ, mà không cần phải đầu tư nhiều vào cơ sở
hạ tầng cũng như quan tâm nhiều đến công nghệ Xu hướng này sẽ giúp nhiều cho cáccông ty, doanh nghiệp vừa và nhỏ mà không có cơ sở hạ tầng mạng, máy chủ để lưutrữ, quản lý dữ liệu tốt Hơn thế nữa, vượt ngoài phạm vi “quản lý dữ liệu”, nếu nhưtoàn bộ các chương trình ứng dụng của doanh nghiệp được cài đặt trên hệ thống máychủ đó để mọi người có thể dễ dàng truy cập sẽ tạo thuận lợi lớn cho doanh nghiệp để
họ có thể tập trung vào nghiệp vụ của mình
Trang 9Rõ ràng để có thể cung cấp được một hệ thống điện toán đám mây đáp ứng những nhucầu như vậy thì nhà cung cấp cần một cơ sở vật chất và kỹ thuật cực kỳ tối tân, và trênthực tế chỉ có những hãng công nghệ lớn mới có thể đảm nhận nhiệm vụ này Amazon
và Google là một trong những hãng tiên phong phát triển điện toán đám mây và đã thuđược một số thành quả nhất định Gần đây, hãng phần mềm lớn nhất thế giới Microsoftcũng đã chính thức đưa ra sản phẩm điện toán đám mây của mình: Windows AzurePlatform Dù chỉ mới xuất hiện nhưng Windows Azure đã gây chú ý lớn đặc biệt là ởkhả năng xây dựng các ứng dụng với khả năng mở rộng rất mạnh mẽ và linh hoạt.Windows Azure có khả năng hỗ trợ đa ngôn ngữ, tuy nhiên cũng giống như các sảnphẩm khác của Microsoft, Windows Azure nhận được sự quan tâm rất lớn của cộngđồng phát triển NET Microsoft đã và đang tạo nên một cộng đồng phát triển ứng dụngWindows Azure và ngày càng có nhiều ứng dụng lớn được thiết kế lại để có thể đưalên môi trường Windows Azure và tận dụng sức mạn của công nghệ điện toán đámmây này
Đồ án tốt nghiệp này nhằm tìm hiểu những nền tảng và xu hướng cơ bản của điện toánđám mây, từ đó đi vào nghiên cứu công nghệ điện toán đám mây Windows Azure củaMicrosoft và xây dựng một ứng dụng thử nghiệm công nghệ Windows Azure Nắmđược nền tảng công nghệ và đưa ra định hướng phát triển, đó chính là mục tiêu của đề
tài: “Xây dựng hệ thống quản trị nội dung sử dụng Windows Azure Platform”.
Trang 10CHƯƠNG 1: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
1.1 Khái niệm điện toán đám mây
1.1.1 Định nghĩa
Điện toán đám mây là một mô hình điện toán mà trong đó tất cả các dữ liệu và dịch vụđược đặt trong những trung tâm dữ liệu & dịch vụ khổng lồ (cloud - đám mây) và cóthể truy cập được thông qua Internet
Trang 11Hình 1.1: Đám mây điện toán [11]
Theo định nghĩa, các nguồn điện toán khổng lồ như phần mềm, dịch vụ sẽ nằm tạicác máy chủ ảo (đám mây) trên Internet thay vì trong máy tính gia đình và văn phòng(trên mặt đất) để mọi người kết nối và sử dụng mỗi khi họ cần
Một trong những ý tưởng quan trọng nhất của điện toán đám mây là khả năng mở rộng
và công nghệ chủ chốt là công nghệ ảo hóa Ảo hóa cho phép sử dụng tốt hơn mộtserver bằng cách kết hợp các hệ điều hành và các ứng dụng trên một máy tính chia sẻđơn lẻ Ảo hóa cũng cho phép di trú trực tuyến (online migration) để khi một serverquá tải, một instance của hệ điều hành (và các ứng dụng trên đó) có thể di trú đến mộtserver mới, ít tải hơn
Từ góc nhìn bên ngoài, điện toán đám mây đơn giản chỉ là việc di trú tài nguyên tínhtoán và lưu trữ từ doanh nghiệp vào “đám mây” Người dùng chỉ định yêu cầu tàinguyên và cloud provider hầu như tập hợp các thành phần ảo này trong hạ tầng của nó.(hình 1.2)
Trang 12Hình 1.2: Di trú tài nguyên vào “đám mây” [8]
Nhưng tại sao chúng ta lại từ bỏ quyền kiểm soát tài nguyên của mình và cho phépchúng tồn tại ảo trong “đám mây” ? Có nhiều lý do nhưng quan trọng nhất là tính dễ
Trang 13Ở đây 3 nền tảng độc lập tồn tại cho các ứng dụng khác nhau , mỗi ứng dụng chạy trênserver của nó Trong “đám mây”, server có thể được chia sẻ (được ảo hóa) giữa các hệđiều hành và các ứng dụng để sử dụng server tốt hơn Càng ít server thì càng cần ítkhông gian (giảm vùng bao phủ của các data center) và càng ít năng lượng làm mát(giảm tiêu hao nhiên liệu).
Hiện nay, các nhà cung cấp đưa ra nhiều dịch vụ của điện toán đám mây theo nhiềuhướng khác nhau, đưa ra các chuẩn riêng cũng như cách thức hoạt động khác nhau Do
đó, việc tích hợp các cloud để giải quyết một bài toán lớn của khách hàng vẫn còn làmột vấn đề khó khăn Chính vì vậy, các nhà cung cấp dịch vụ đang có xu hướng tíchhợp các cloud lại với nhau thành “sky computing”, đưa ra các chuẩn chung để giảiquyết các bài toán lớn của khách hàng
Hình 1.4: Sky Computing cho các “đám mây”? [13]
1.1.2 Sự cần thiết của điện toán đám mây
Điện toán đám mây ra đời để giải quyết các vấn đề sau:
Vấn đề về lưu trữ dữ liệu:
Dữ liệu được lưu trữ tập trung ở các kho dữ liệu khổng lồ Các công tylớn như Microsoft, Google có hàng chục kho dữ liệu trung tâm nằm rải ráckhắp nơi trên thế giới Các công ty lớn này sẽ cung cấp các dịch vụ cho phép
Trang 14doanh 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ữ trungtâm
Vấn đề về sức mạnh tính toán:
Có 2 giải pháp chính:
o Sử dụng các siêu máy tính (super-computer) để xử lý tính toán
o Sử dụng các hệ thống tính toán song song, phân tán, tính toán lưới (gridcomputing)
Vấn đề về cung cấp tài nguyên, phần mềm:
Cung cấp các dịch vụ như hạ tầng như dịch vụ IaaS (infrastructure as aservice), 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) Phần 1.3 sẽ đi sâu hơn về các dịch vụnày
1.1.3 Đặc tính của điện toán đám mây
Những đặc tính nổi bật của điện toán đám mây:
Ảo hóa & chia sẻ tài nguyên (Shared, virtualized infrastructure): Trái tim củađiện toán đám mây là khả năng Ảo hóa (Virtualization) Ảo hóa cung cấpkhả năng chia sẻ các tài nguyên tính toán như servers, storage, data, …Nhờkhả năng ảo hóa, hệ thống sẽ được tận dụng hiệu quả hơn
Khả năng tự phục vụ (Self-service access): Cloud Computing cung cấp khảnăng tự phục vụ (self-service) cho các user Người sử dụng có khả năng truycập trực tiếp vào các tài nguyên và sử dụng theo nhu cầu
Co giãn tài nguyên (Elastic resource pools): Tài nguyên cung cấp cho người
sử dụng (servers, storage, data, …) có thể dễ dàng co giãn tùy theo nhu cầu
sử dụng Những tài nguyên không còn được sử dụng sẽ được giải phóng cho
hệ thống
Hướng dịch vụ (Service-oriented): Hệ thống Cloud computing là hướng dịch
vụ và được xây dựng dựa trên tập các dịch vụ Các dịch vụ có thể độc lậphoặc được xây dựng dựa trên các dịch vụ đã có nhờ khả năng re-use
Chi trả theo mức sử dụng (Pay per use): Người dùng chỉ chi trả cho nhữngtài nguyên nào họ sử dụng, về phía nhà cung cấp, khả năng này cho phép họtheo dõi các dịch vụ được sử dụng
Trang 15 Tự sửa lỗi (Self-Healing): Các ứng dụng/dịch vụ chạy trong môi trườngCloud Computing đều có đặc tính tự sửa lỗi Mỗi ứng dụng khi thực thi đều
có các bản copy – các phiên bản này tự động cập nhật Khi ứng dụng gặp sự
cố sẽ luôn có một bản copy tiếp tục được thực thi
1.2 Kiến trúc tổng quan
1.2.1 Bên trong đám mây
Bên trong “đám mây” không chỉ có một dịch vụ mà là một tập các dịch vụ Cáctầng định nghĩa mức dịch vụ được cung cấp
Hình 1.5: Các mức dịch vụ trong “đám mây” [8]
Ba tầng dịch vụ được định nghĩa là tầng hạ tầng (Infrastructure) tầng nền tảng(Platform), tầng ứng dụng (Application), phía dưới là tầng phần cứng và tầng ảo hóa.Tầng dịch vụ thấp nhất là Hạ tầng (Hạ tầng như một dịch vụ - IaaS) IaaS là việc chothuê hạ tầng như một dịch vụ bao gồm các máy tính ảo hóa và băng thông dành riêngcho lưu trữ và truy cập Internet Về cơ bản, đó là khả năng cho thuê máy tính hay datacenter với ràng buộc về QoS sao cho người dùng có khả năng chạy phần mềm hay hệđiều hành bào đó tùy ý
Lên mức tiếp theo là Nền tảng (Nền tảng như một dịch vụ - PaaS) PaaS giống nhưIaaS nhưng gồm cả hệ điều hành và các dịch vụ cần thiết cho một ứng dụng chuyênbiệt Ví dụ PaaS ngoài server và lưu trữ ảo hóa cung hệ điều hành đặc biệt và tập các
Trang 16ứng dụng (như một máy ảo) cùng các dịch vụ cần thiết như MySQL… Nói cách khác,PaaS là IaaS với một software stack dành cho một ứng dụng.
Trên cùng là dịch vụ đơn giản nhất được cung cấp: ứng dụng Tầng này được gọi làPhần mềm như một dịch vụ (SaaS) và nó là mô hình triển khai phần mềm từ một hệ tậptrung sang chạy trên máy tính cục bộ Dưới dạng dịch vụ “đo” được, SaaS cho phépbạn thuê một ứng dụng và chỉ trả tiền cho thời gian sử dụng
1.2.2 Mô hình thực thi ứng dụng điện toán đám mây
Hình 1.6: Phân bổ công việc cho các Virtual machine [12]
Ứng dụng Cloud Computing chạy trên các máy chủ ảo được phân phối từ tầngHardware Infrastructure, trước khi được xử lý bởi các Virtual Server, các ứng dụngngười dùng yêu cầu sẽ đi qua tầng Workload distribution system (grid engine) và đượcphân bổ đến các máy chủ ảo Tầng Grid Engine sẽ quản lý các yêu cầu tới các virtualserver, chịu trách nhiệm tạo các bản copy, duy trì toàn vẹn dữ liệu
1.2.3 Map Reduce
Map Reduce là một khung ứng dụng (software framework) được Google phát triển vàonăm 2003 để hỗ trợ tính toán song song trên các tập dữ liệu khổng lồ Framework nàyhoạt động dựa trên 2 thao tác cơ bản trong lập trình: Map và Reduce Các chương trìnhviết theo kiến trúc này sẽ tự động song song hóa khi thực hiện Hệ thống sẽ đảm trách
Trang 17các công việc phân chia dữ liệu, lên lịch thực hiện, quản lý lỗi, quản lý kết nối trongquá trình chương trình thực hiện song song
Chương trình dựa trên kiến trúc MapReduce gồm 2 bước:
“Map” step: Master node nhận đầu vào, phân bổ đầu vào thành các phần nhỏ vàphân phối cho các node con, mỗi node con cũng có thể lặp lại quá trình đó Cácnode con sẽ xử lý bài toán con nhận được và trả lại kết quả cho node cha
“Reduce” step: Master node nhận các kết quả từ các node con và tổng hợp thànhkết quả chung
Điểm chú ý ở mô hình MapReduce là các thao tác “Map” và “Reduce” đều có thể xử lýphân tán và song song Các thao tác “Map” độc lập với nhau và có thể thực hiện songsong Tương tự các “reducer” thực hiện trên mỗi key (tương ứng với 1 danh sáchvalue) vào cùng 1 thời điểm
Các phương thức Map và Reduce định nghĩa dữ liệu theo các cặp (key, value) Mapnhận một cặp input (key, value) và trả về một danh sách các cặp (key, value) trunggian
Map(k1,v1) -> list(k2,v2)
Hình 1.7: Hàm Map một cặp (key, value) thành 1 danh sách [1]
Map function sẽ thực hiện song song với tất cả các cặp đầu vào Mỗi lời gọi Map sẽsinh ra một danh sách (k2,v2) Sau đó MapReduce framework thu thập tất cả các cặpvớ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ênmỗi nhóm sẽ cho output
Reduce(k2, list (v2)) -> list(v3)
Trang 18Hình 1.8: Hàm Reduce tác động lên nhóm các cặp có cùng key [1]
Tập các đầu ra là kết quả thu được
Ví dụ: Đếm số lần xuất hiện của mỗi từ trong 1 văn bản [13]
void map(String name, String document):
// name: document name
// document: document contents
for each word w in document:
1.3 Các dịch vụ điện toán đám mây
1.3.1 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)
SaaS là khả năng tiếp cận phần mềm trên Intenet như một dịch vụ Cách tiếp cậntrước đây của SaaS là ASP (Nhà cung cấp dịch vụ ứng dụng) Các ASP cung cấp các
Trang 19thuê bao đối với phần mềm được lưu trữ và phân phối trên mạng ASP tính phí theotheo thời gian sử dụng Theo cách này ,bạn không phải mua phần mềm mà chỉ thuê nókhi cần Góc độ khác về SaaS là việc sử dụng phần mềm chạy từ xa trên mạng Phầnmềm này có thể ở dạng Web services hay các ứng dụng từ xa mà có thể theo dõi kếtquả thông qua trình duyệt web.
Nền tảng như dịch vụ (Platform-as-a-Service)
PaaS có thể mô tả như là một nền tảng được ảo hóa toàn bộ gồm một hay nhiềuserver (ảo hóa trên một tập các server vật lý), các hệ điều hành và các ứng dụng chuyênbiệt (như là Apache và MySQL cho ứng dụng web) Trong một vài trường hợp, cácnền tảng này có thể được định nghĩa và chọn trước Trong trường hợp còn lại, bạn cóthể cung cấp file hình ảnh máy ảo (VM image) chứa tất cả các ứng dụng theo yêu cầungười dùng
Một ví dụ của PaaS là Google App Engine App Engine là một dịch vụ cho phép bạntriển khai ứng dụng web của mình trên kiến trúc rất khả mở của Google App Enginecung 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
Hạ tầng như dịch vụ (Infrastructure-as-a-Service)
IaaS là việc phân phối hạ tầng máy tính như một dịch vụ Tầng này khác với PaaS ởchỗ: phần cứng ảo được cung cấp không kèm theo software stack Thay vào đó, ngườidùng tự đưa ra VM image của mình IaaS là dạng “thô” nhất của “computing as aservice” Nhà cung cấp IaaS thương mại nối tiếng nhất là Amazon Elastic ComputeCloud (EC2) Trong EC2, bạn có thể chỉ định máy ảo (VM) đặc biệt của mình và triểnkhai các ứng dụng trên đó hay là cung cấp VM image của bạn và chạy nó trên server.Bạn chỉ phải trả tiền cho thời gian tính toán, dung lượng lưu trữ và băng thông mạng
Dự án Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs
To Useful Systems) là một bản thực thi mã nguồn mở của EC2, trong đó tương thích
về giao diện với dịch vụ thương mại Giống như EC2, Eucalyptus dựa trên Linux vớiXen dùng cho ảo hóa hệ điều hành Eucalyptus được phát triển tại đại học Californiacho mục đích nghiên cứu cloud computing Bạn có thể download về hay thử nghiệm nóthông qua Eucalyptus Public Cloud (với một số hạn chế)
Một thực thi khác theo kiểu của EC2 là nền tảng tính toán đám mây Enomalism (cũng
là nguồn mở) Enomalism dựa trên Linux với hỗ trợ cho cả Xen và Kernel Virtual
Trang 20Machine (KVM) Nhưng không giống các giải pháp IaaS thuần túy khác, Enomalismcung cấp một software stack dựa trên TurboGears Web application framework vàPython.
Các phát triển “đám mây” khác: Nói thêm một vài gói nguồn mở dựa trên Linux
khác Hadoop là một Java™ software framework nguồn mở tương tự như PaaS nhưngtậ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) Nhưthế thì nó sẽ tìm được các ứng dụng trong tìm kiếm và quảng cáo Hadoop cũng cungcấp các dự án con phỏng theo các ứng dụng của Google Ví dụ Hbase đưa ra chức nănggiống như CSDL Google BigTable và Hadoop Distributed File System (HDFS) đưa rachức năng giống như Google File System (GFS)
1.3.2 Các nhà cung cấp dịch vụ điện toán đám mây
Hình 1.9: Các nhà cung cấp dịch vụ Cloud Computing
Amazone Web Services (AWS): Amazon là hãng tiên phong cung cấp Cloud
Computing Dịch vụ Cloud Computing của Amazon đi theo hướng “Hạ tầngnhư dịch vụ” - IaaS (Infrastructure as a service) bao gồm một tập các dịch vụ
Trang 21mức thấp, cho phép người sử dụng linh hoạt và mềm dẻo trong cách sử dụng tàinguyên Các dịch vụ web của Amazon gồm 4 dịch vụ chính:
o Elastic Compute Cloud (EC2): Amazon Elastic Compute Cloud (EC2)
là nền tảng cơ sở cho môi trường điện toán đám mây do Amazone cungcấp EC2 giúp cho việc tạo ra, khởi động và dự phòng các ứng dụng ảocho cá nhân hay doanh nghiệp một cách đơn giản và bất cứ khi nào Bạntrả phí sử dụng cho những ứng dụng này theo loại ứng dụng và thờilượng sử dụng Các máy chủ ảo hoạt động bên trong môi trường bảo mậtcủa các trung tâm dữ liệu của Amazon
EC2 có thể cung cấp cho ứng dụng ảo của bạn khả năng để:
Cấu hình các yêu cầu tính toán của chúng ngay trong khi hoạtđộng
Điều chỉnh dung lượng dựa trên yêu cầu
o Simple Storage Service (S3): dịch vụ lưu trữ, kết hợp với EC2 để lưu
các dữ liệu tập tin, nhị phân, hình ảnh, …
o Simple Queue Service (SQS): cung cấp khả năng truyền thông điệp
(message)
o Simple Database Service (SDB): dịch vụ lưu trữ và xử lý các tập hợp
dữ liệu quan hệ
Google App Engine (GAE): là giải pháp cho vấn đề điện toán đám mây của
Google 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ấpmột môi trường hạn chế hơn, dựa trên ngôn ngữ Python, khung phát triểnDjango, lưu trữ và CSDL dùng GFS và Google BigTable Hiện tại các lập trìnhviên có thể sử dụng miễn phí 500MB để lưu trữ và hỗ trợ 5 triệu truy cập mỗitháng
AppEngine hỗ trợ 2 loại ngôn ngữ là: Python và Java Một số ngôn ngữ khácnhư PHP cũng có thể chạy được nếu cài cùng với bộ chuyển từ PHP sang Java
Microsoft Azure Platform: nền tảng Cloud Computing của Microsoft mới
được ra mắt bản thương mại từ tháng 1/2010 Azure Platform gồm nhiều thànhphần hỗ trợ tính toán, lưu trữ và xử lý các dạng dữ liệu trên hệ thống datacentercủa Microsoft Việc quản lý vòng đời, quy mô ứng dụng sẽ được AzurePlatform đảm nhiệm Azure Platform cho phép các lập trình viên NET tiếp tục
sử dụng được các kỹ năng (.NET, SQL Server) của mình để xây dựng ứng dụngWindows Azure
Trang 22Mặc dù tham gia vào lĩnh vực Cloud Computing muộn hơn so với Amazon vàGoogle nhưng nền tảng Azure của Microsoft đang thu hút được sự chú ý lớn,Azure Platform giống như Google App Engine đều đi theo hướng “Nền tảngnhư 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 nhaucho dịch vụ của mình
So sánh Microsoft Azure Platform với Google App Engine:
- Azure hỗ trợ nhiều ngôn ngữ hơn GAE, GAE chỉ hỗ trợ Java, Python trongkhi nhà phát triển ứng dụng Windows Azure có thể sử dụng NET, Java,Ruby, C++ và PHP
- Azure cho phép 2 lựa chọn lưu trữ dữ liệu, có thể sử dụng SQL AzuzeDatabase (một hệ quản trị cơ sở dữ liệu quan hệ) hoặc Azure Storage (gồmtable service, blob service và queu service) Sử dụng SQL Azuze có thể cólợi thế khi muốn chuyển ứng dụng sẵn có chạy trên một RDBMS lên môitrường Windows Azure, tuy nhiên sử dụng Azure Storage có lợi thế về chiphí và khả năng mở rộng
- Azure cho phép các nhà phát triển tận dụng được các kỹ năng sẵn có củamình, như kỹ năng lập trình NET, phát triển với Visual Studio Bạn có thểphát triển úng dung trong môi trường giả lập trên máy local với hỗ trợdebug, breakpoint
- Azure cho phép ứng dụng sau khi upload chạy trong môi trường ‘staging’, ởmôi trường này ứng dụng chưa có domain chuẩn (theo tên ứng dụng), bạn cóthể test ứng dụng hoạt động ổn định trước khi đưa vào chạy chính thức
- Với các ứng dụng nhỏ hoặc không phải phục vụ truy quá nhiều, GAE có lợithế hơn, GAE cung cấp một hạn ngạch miễn phí đủ cho các ứng dụng này
- GAE tính phí dựa trên số giờ CPU được sử dụng trong khi Azure dựa trên sốgiờ instance chạy trên hệ thống Điều này có nghĩa là Azure sẽ tiếp tục tínhphí dịch vụ của bạn ngay cả khi ứng dụng không hoạt động hay không sửdụng đến CPU GAE chỉ thu phí các nguồn tài nguyên thực tế tiêu thụ
Kết chương:
Như vậy ở chương đầu tiên, đồ án đã mô tả những nét cơ bản về công nghệ điện toánđám mây, những đặc thù của điện toán đám mây và vì sao điện toán đám mây lại đang
Trang 23phát triển như là một công nghệ chủ đạo trong tương lai Mặc dù đang phát triển mạnh
mẽ và thu hút sự chú ý lớn của cộng đồng người dùng nhưng điện toán đám mây vẫnđang phải đối mặt với nhiều thách thức để có thể thay thế mô hình điện toán truyềnthống, đặc biệt là về vấn đề an toàn thông tin
Chương đầu tiên cũng khảo sát tổng quan mô hình và các mức dịch vụ mà điện toánđám mây cung cấp, đặc điểm ở từng mức dịch vụ và những nhà cung cấp dịch vụ điệntoán đám mây tiêu biểu
Ở chương tiếp theo chúng ta sẽ đi vào tìm hiểu cụ thể nền tảng điện toán đám mâyWindows Azure của Microsoft
Trang 24CHƯƠNG 2:
NỀN TẢNG MICROSOFT WINDOWS AZURE
2.1 Giới thiệu Windows Azure Platform
Nền tảng Windows Azure của Microsoft được chính thức đưa ra thị trường vàongày 1/1/2010, có thể nói đây là sản phẩm mang tính chiến lược của hãng phần mềmlớn nhất thế giới nhằm cạnh tranh với các nhà cung cấp dịch vụ Cloud Computing hàngđầu là Amazon và Google, IBM,
“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
Microsoft Windows Azure Platform là nền tảng ứng dụng trong các “đám mây” cho
phép các ứng dụng/dịch vụ có thể host và thực thi trên các datacenter của Microsoft
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]
Windows Azure Platform là một nền tảng có tính mềm dẻo, hỗ trợ đa ngôn ngữ và tíchhợp với môi trường on-premise sẵn có Để xây dựng các ứng dụng và dịch vụ choWindows Azure, developer có thể sử dụng bộ công cụ Visual Studio, ngoài ra
Trang 25Windows Azure còn hỗ trợ hầu hết các giao thức và chuẩn thông dụng như SOAP,REST, XML, PHP.
Sử dụng Windows Azure để:
Thực thi các ứng dụng điện toán đám mây
Xây dựng và phân phối các ứng dụng điện toán đám mây với tài nguyên nhỏnhất
Lưu trữ các khối dữ liệu lớn, xử lý theo lô (batch processing), xử lý các tínhtoán lớn
Xây dựng và phân phối các Web Services nhanh và chi phí rẻ
Lợi ích của Windows Azure
Đưa các ý tưởng của bạn ra thị trường nhanh hơn với chi phí thấp
Giảm thiểu chi phí xây dựng và mở rộng các tài nguyên on-premise (tải về)
Giảm chi phí và công sức của đội ngũ quản lý IT
Nhanh chóng đáp ứng được sự thay đổi trong công việc
Lựa chọn giữa phiên bản triển khai on-premise (tải về) hay off-premise tùy theonhu cầu
Tự điều chỉnh, co giãn tài nguyên theo nhu cầu
Chỉ sử dụng tài nguyên tính toán khi có yêu cầu
Giảm sức lực để quản lý tài nguyên và các ràng buộc
Không cần quan tâm đến quản lý phần cứng
Sử dụng những kỹ năng phát triển sẵn có để xây dựng ứng dụng đám mây
Hiện tại các dịch vụ và hỗ trợ của Windows Azure có thể truy cập qua địa chỉ
http://www.microsoft.com/windowsazure
2.2 Mô hình tổng quan và các thành phần
Windows Azure Platform bao gồm một nhóm các công nghệ đám mây, cung cấp tập
các dịch vụ cho nhà phát triển ứng dụng Các dịch vụ này có thể được sử dụng bởi cảứng dụng chạy trên đám mây (Internet) hoặc ứng dụng chạy trên các máy local (ứngdụng on-premise)
Trang 26Hình 2.2 Ba thành phần chính của Windows Azure Platform [4]
Các thành phần chính của Windows Azure Platform bao gồm:
Windows Azure: cung cấp môi trường Windows-base để thực thi các ứng dụng
và lưu trữ dữ liệu trên các server tại Microsoft Data Center Đây chính là tráitim của Windows Azure Platform
SQL Azure: Hệ quản trị CSDL quan hệ chạy trên datacenter của Microsoft,
cung cấp khả năng lưu trữ dữ liệu cho các cả các ứng dụng điện toán đám mây
và các ứng dụng khác
AppFabric (tên cũ là NET Services): Cung cấp các dịch vụ cơ sở hạ tầng phân
tán, hỗ trợ kết nối linh hoạt giữa các ứng dụng điện toán đám mây và các ứngdụng tải về (on-premise)
2.2.1 Windows Azure
Windows Azure, hiểu một cách đơn giản, là môi trường để thực thi các ứng dụng điệntoán đám mây và lưu trữ dữ liệu Windows Azure chạy trên một số lượng lớn các máytính tại Microsoft Data Center và có thể truy cập thông qua Internet
Hình 2.3 mô tả các thành phần chính của Windows Azure: Compute, Storage vàFabric
Trang 27Hình 2.3: Các thành phần Windows Azure [4]
Windows Azure Fabric đảm nhiệm kết nối hệ thống máy này thành một sức mạnh tínhtoán thống nhất, các dịch vụ Compute và Storage sẽ được xây dựng dựa trên Fabric.Compute service đảm nhiệm thực thi các ứng dụng, trong khi Storage service lưu trữ
dữ liệu Windows Azure Fabric cung cấp phương thức để quản lý, giám sát các ứngdụng chạy trên platform
2.2.1.1 Dịch vụ Compute
Dịch vụ Windows Azure Compute cung cấp khả năng thực thi các ứng dụng/dịch vụđám mây Compute service cho phép bạn chạy các ứng dụng trên các máy ảo WindowsServer đặt tại Microsoft Datacenter
Do mục đích chính của Windows Azure là hỗ trợ các ứng dụng có thể phục vụ rấtnhiều người cùng lúc, Windows Azure giải quyết vấn đề này bằng cách chạy nhiềuphiê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ác ứng dụng Windows Azure có thể có nhiều instances, mỗi một instance thực thitrong máy ảo riêng (Virtual Machine –VM) Các VM này chạy hệ điều hành WindowsServer 2008 64-bit với cơ chế hypervisor được thiết kế phù hợp với môi trường Cloud,
có cài đặt Internet Information Services (IIS) 7 Để chạy ứng dụng, developer truy cậpWindows Azure portal từ Web browser, đăng nhập bằng tài khoản Windows Live ID,sau đó lựa chọn tạo hosting account để thực thi ứng dụng hay storage account để lưutrữ dữ liệu hay cả hai
Trang 28Một khi đã có hosting account, developer có thể upload ứng dụng, xác định số lượnginstances, xác định số lượng instances mà ứng dụng cần.
Windows Azure sẽ tạo ra các máy ảo cần thiết và chạy ứng dụng
Ở phiên bản khởi đầu của Windows Azure, Community Technology Preview (CTP), 2loại instance có thể được sử dụng: Web Role instance và Worker Role instance
Hình 2.4: WebRole và WorkerRole instances trong khối Compute [3]
Web Role instance có thể chấp nhận các yêu cầu HTTP hay HTTPS Nó chạy trong các
VM có cài đặt Internet Information Service (IIS) 7 Developers có thể tạo Web Roleinstance sử dụng ASP.NET, WCF hoặc các công nghệ NET khác tương thích với IIS.Khi thực thi, các yêu cầu HTTP, HTTPS sẽ đi qua bộ chia tải (Load Balancer) để đếnđược với các WebRole instances của ứng dụng Bằng việc sử dụng nhiều instance vàload balancer , Windows Azure giúp cho ứng dụng có thể co giãn tăng giảm quy mô.Khác với Web Role, Worker Role không thể nhận các yêu cầu trực tiếp từ bên ngoài,Worker Role lấy các input thông qua hàng đợi (Queue) trong Windows Azure Storage.Các thông điệp trong queue này có thể đến từ Web Role, từ ứng dụng on-premises.Virtual Machine chạy Worker Role không chạy IIS Worker Role sau đó có thể gửioutput ra một queue khác hoặc ra bên ngoài (có thể mở kết nối ra bên ngoài) Khônggiống như Web Role instance dùng để xử lý các HTTP Request, Worker Role instance
xử lý theo lô (batch job)
Cho dù Virtual Machine chạy Web Role instance hay Worker Role instance, mỗi VMđều có chứa một Windows Azure Agent cho phép ứng dụng tương tác Windows Azure
Trang 29Fabric Chẳng hạn một instance có thể sử dụng agent để ghi vào Windows Azure log,gửi thông báo thông qua Fabric.
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ềnvững, nghĩa là nếu như instance đó bị loại bỏ (shutdown) thì VM và toàn bộ dữ liệutrên VM đó cũng bị xóa bỏ Do vậy để lưu trữ dữ liệu đảm bảo tính bền vững (dữ liệutồn tại ngay cả khi ứng dụng bị xóa bỏ hay không hoạt động) ta cần một không gianlưu trữ khác, đó chính là mục đích của dịch vụ Windows Azure Storage
2.2.1.2 Dịch vụ Storage
Ứng dụng có thể làm việc, thao tác dữ liệu theo nhiều cách khác nhau, dịch vụWindows Azure Storage cung cấp các phương thức lưu trữ và xử lý dữ liệu Để làmviệ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ậpvà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
Hình 2.5 mô tả các dịch vụ lưu trữ trong Storage service: Blobs, Tables và Queues
Hình 2.5: Các dịch vụ Storage Services [3]
Blobs
Cách thông thường nhất để lưu trữ dữ liệu là sử dụng Blobs (Binary-large-objects).Blobs có thể chứa hình ảnh, âm thanh, video, emails, Để làm việc với Blobs, lập trìnhviên phải tạo ít nhất một vùng chứa (containers) trong storage account, mỗi một vùng
Trang 30chứa này sẽ chứa một hoặc nhiều blobs Blobs có thể rất lớn, kích thước tối đa là 50gigabytes.
Để xác định một blobs cụ thể, ứng dụng sử dụng chuỗi URI có dạng:
http://<StorageAccount>.blob.core.windows.net/<Container>/<BlobName>
Trong đó <StorageAccount> là định danh khi tạo tài khoản Storage, <Container> và
<BlobName> là tên Container và tên Blob cần truy xuất Lưu ý là các Container chỉ cóthể chứa Blobs, không thể lồng ghép Container khác nên việc tạo cấu trúc phân cấp vớiContainer là không thể Thay vào đó, có thể dùng ký hiệu “/” trong tên Blob(BlobName) để phân cấp nếu cần
Như đã nói kích thước Blobs có thể lên tới 50GB, nên để việc truyền dữ liệu Blobshiệu quả, mỗi blobs có thể được chia ra thành nhiều khối (block), nếu việc truyền bịngắt quãng, có thể truyền lại bắt đầu từ khối được truyền gần nhất thay vì phải truyềnlại cả blobs, sau khi tất cả các block được truyền, chúng sẽ được ghép lại thành blobsban đầu
Có thể quy định thuộc tính private (riêng tư) hoặc public (công cộng) cho Container,với các blobs trong private container, các yêu cầu đọc và ghi cần được xác thực vớikhóa bí mật tương ứng của Storage Account chứa blobs, trong khi với public container,chỉ thao tác ghi cần cung cấp khóa bí mật, mọi ứng dụng có thể đọc dữ liệu từ publiccontainer
Có rất nhiều kiểu thuộc tính được hỗ trợ, gồm Binary, Bool, DateTime, Double, GUID,Int, Int64, String Mỗi một thuộc tính còn có thể có kiểu khác nhau vào những thờiđiểm khác nhau tùy thuộc vào giá trị lưu trong nó, hơn nữa cũng không cần thiết tất cảcác thuộc tính trong 1 thực thể phải có cùng kiểu Kích thước tối đa của một thực thể là1MB và mỗi thực thực được coi là đơn vị dữ liệu, thao tác đọc một thực thể sẽ trả lại
Trang 31giá trị của tất cả các thuộc tính Ngược lại thao tác ghi sẽ thực hiện ghi lên tất cả cácthuộc tính.
Windows Azure Tables Storage có nhiều điểm khác biệt với các bảng dữ liệu quan hệ,đầu tiên là chúng thực sự không phải là các bảng thông thường, không thể truy cập sửdụng thuần túy ADO.NET hay truy vấn SQL Tables Storage không quy định cấu trúc(schema) chặt chẽ như bảng quan hệ, một thuộc tính trong mỗi thực thể có thể có kiểu
dữ liệu khác nhau và có thể thay đổi Một câu hỏi được đặt ra: Tại sao Windows Azurekhông hỗ trợ mô hình các bảng dữ liệu quan hệ trong Tables và khả năng truy vấn SQLnhư các hệ RDBMS thông thường?
Câu trả lời cũng nằm ở mục tiêu hỗ trợ khả năng mở rộng mạnh mẽ cho ứng dụng Cácbảng quan hệ truyền thống có thể scale-up, phục vụ số lượng lớn người dùng bằng việcchạy DBMS trên các máy chủ cực mạnh Tuy nhiên để thực sự hỗ trợ số lượng khổng
lồ yêu cầu cùng một lúc, không gian lưu trữ cần scale-out chứ không chỉ scale-up, đó là
lý do Windows Azure Storage thiết kế mô hình thực thể trong Tables thay vì các bảng
dữ liệu quan hệ với chuẩn SQL thông thường
Ứng dụng NET có thể truy cập vào các tables bằng cách sử dụng ADO.NET DataServices hoặc Language Integrated Query (LINQ), chẳng hạn một yêu cầu HTTP GET
Queues
Blob và Table Storage đều sử dụng để lưu trữ và truy xuất dữ liệu Dạng lưu trữ thứ bađược Windows Azure cung cấp có mục đích hơi khác Tính năng chính của queue làcung cấp phương thức để Web Role instance kết nối với Worker Role instance Ví dụ,user submit một yêu cầu tính toán thông qua giao diện web, Web Role instance nhận
Trang 32request này và ghi một message vào queue mô tả công việc cần thực hiện Worker Roleinstance có thể đọc message và xác định công việc cần thực thi
Các ứng dụng Windows Azure và các ứng dụng khác đều có thể tham chiếu đến mộtqueue sử dụng URI có dạng:
http://<StorageAccount>.queue.core.windows.net/<QueueName>
2.2.1.3 Fabric
Toàn bộ ứng dụng và dữ liệu trong Windows Azure Storage đều chứa trong các datacenter của Microsoft Trong data center, hệ thống máy móc này được tổ chức thành cácfabric
Hình 2.6: Fabric Controller [5]
Windows Azure Fabric gồm một nhóm các máy tính, các máy trong nhóm đều được
quản lý bởi một phần mềm gọi là fabric controller Fabric Controller quản lý một
nhóm từ 5 – 7 máy tính và sở hữu tất cả tài nguyên trong fabric: máy tính, switches,load balancers, …
Fabric controller có khả năng giao tiếp với fabric agent trên các máy, nó cũng giám sátcác ứng dụng Windows Azure trong fabric đó
Fabric controller giám sát các ứng dụng thực thi, quản lý operating system, đảm nhiệmcác công việc như vá lỗi, cập nhật VM Nó cũng quyết định ứng dụng sẽ chạy ở nơinào, lựa chọn server vật lý để tối ưu hóa hệ thống phần cứng
Trang 33Để làm điều đó fabric controller phụ thuộc vào file cấu hình được upload cùng với mỗiứng dụng Windows Azure , file này có cấu trúc dạng XML mô tả những thông tin cấuhình mà ứng dụng cần: bao nhiêu Web Role instance, bao nhiêu Worker Role instance,
…Khi fabric controller nhận được một ứng dụng mới, nó sẽ sử dụng file cấu hình này
để xác định bao nhiêu Web Role và bao nhiêu Worker Role VM cần thiết lập
Một khi VM đã được tạo ra, fabric controller sẽ giám sát VM đó, nếu một ứng dụngyêu cầu 5 Web Role instances và một trong số đó gặp vấn đề trục trặc, FabricController sẽ tự động khởi động lại một instance mới, hoặc nếu máy chủ mà VM chạygặp vấn đề, fabric controller sẽ khởi động instance mới trên một VM mới (tất nhiêntrên máy chủ khác) và thiết lập lại load balancer để trỏ đến máy chủ mới
2.2.2 SQL Azure
SQL Azure cung cấp tập các dịch vụ đám mây hỗ trợ lưu trữ và làm việc với nhiều loạithông tin Hiện tại, Microsoft đưa ra 2 thành phần chính của SQL Azure: SQL AzureDatabase và “Huron” Data Sync
Hịnh 2.7: Các dịch vụ bên trong SQL Azure [4]
2.2.2.1 SQL Azure Database
SQL Azure Database cung cấp một RDBMS trong “đám mây” Nó cho phép ứng dụngđám mây và ứng dụng on-premises có thể lưu trữ cơ sở dữ liệu quan hệ hoặc dạng kháctrên các server tại Microsoft Data Center Chi phí sẽ được tính dựa trên những gì sửdụng, thay đổi tùy theo nhu cầu sử dụng Sử dụng Cloud Database cũng cho phépngười dùng không phải bận tâm đến các phần mềm DBMS, đĩa cứng lưu trữ, …
Trang 34Không giống như Windows Azure Storage service, SQL Azure Database xây dựngdựa trên Microsoft SQL Server SQL Azure Database hỗ trợ cơ sở dữ liệu quan hệ, môitrường SQL Server trong Cloud với Indexes, Views, Store Procedures, Triggers, … Dữliệu có thể truy cập thông qua ADO.NET và các giao diện truy cập dữ liệu khác củaWindows
Trong khi các ứng dụng sử dụng SQL Azure Database hầu như tương tự như sử dụnglocal DBMS thì công sức quản lý CSDL giảm đi rất nhiều khi sử dụng SQL AzureDatabase Người sử dụng SQL Azure Database có thể tập trung vào đối tượng quantâm chính của họ: Dữ liệu
Hình 2.8: Cơ sở dữ liệu quan hệ SQL Azure Database [4]
Ứng dụng sử dụng SQL Azure Database có thể chạy trên Windows Azure, trong DataCenter của doanh nghiệp, trên thiết bị di động, … Ứng dụng truy cập dữ liệu thông quagiao thức Tabular Data Stream (TDS) Đó cũng là giao thức được sử dụng đê truy cập
dữ liệu trong local SQL Server database Nhờ đó ứng dụng chạy SQL Azure Database
có thể sử dụng client library của SQL Server Quan trọng nhất có lẽ là ADO.NET,ODBC và các thư viện khác cũng có thể sử dụng
Trong SQL Azure Database, tất cả dữ liệu được nhân bản (replicate) 3 lần, khi ghi dữliệu (write), toàn bộ các bản sao được cập nhật Mục đích là cung cấp tính tin cậy dữliệu ngay cả trong trường hợp hệ thống bị lỗi Kích thước tối đa của một CSDL trongSQL Azure Database là 10 gigabytes Ứng dụng cần không gian dữ liệu lớn hơn có thể
sử dụng nhiều database
Trang 352.2.2.2 Huron Data Sync
Thành phần thứ 2 trong SQL Azure được giới thiệu là “Huron” Data Sync, xây dựngdựa trên Microsoft Sync Framework và SQL Azure Database, công nghệ này cho phépđồng bộ dữ liệu thông qua các on-premises DBMS Người sử dụng và sở hữu dữ liệu
sẽ xác định những gì cần đồng bộ, giải quyết các xung đột như thế nào, …
Hình 2.9: Đồng bộ dữ liệu giữa SQL Azure Database và các nguồn CSDL khác [4] 2.2.2.3 Ứng dụng SQL Azure
Các ứng dụng có thể sử dụng SQL Azure theo nhiều cách đa dạng:
Ứng dụng Windows Azure lưu trữ dữ liệu trong SQL Azure Database, mặc dùWindows Azure có hỗ trợ Storage service, tuy nhiên nó không hỗ trợ mô hìnhbảng quan hệ Trong khi đó mô hình bảng quan hệ rất phổ biến, các ứng dụng cóthể dễ dàng làm việc với CSDL
Các ứng dụng trong một doanh nghiệp nhỏ hoặc một phần trong doanh nghiệplớn có thể lưu trữ dữ liệu trên SQL Azure Database thay vì local SQL Serverhoặc Access Ứng dụng có thể tận dụng được những ưu điểm về độ tin cậy vàtính sãn sàng của Cloud Storage
Một nhà sản xuất có thể đưa dữ liệu lên SQL Azure Database để có thể truy cập
từ các ứng dụng của nhà phân phối hoặc từ ứng dụng web để khách hàng truycập
Tạo bản sao database nhờ ứng dụng “Huron” Data Sync
Trang 362.2.3 AppFabric (.NET Service)
AppFabric (tên cũ là .NET Services) cung cấp các dịch vụ cơ sở hạ tầng(Infrastructure) trên “đám mây” AppFabric hỗ trợ các nhà phát triển kết nối các ứngdụng và dịch vụ trong các đám mây hoặc on-premise (tải về) Nó bao gồm các ứngdụng chạy trong môi trường Windows Azure, Windows Server và các nền tảng khácnhư Java, Ruby, PHP, … AppFabric bao gồm 2 dịch vụ: Service Bus và AccessControl
Access Control: Access Control cho phép bạn xây dựng hệ thống xác thực và kiểm
tra thẩm quyền cho ứng dụng / dịch vụ web của bạn, giảm thiểu sự phức tạp trongviệc tích hợp với rât nhiều các công nghệ xác thực mà khách hàng đang sử dụng Sửdụng mô hình đơn giản và quen thuộc, Access Control cho phép bạn định nghĩa cácquy tắc và yêu cầu, các quy tắc này có thể cấu hình để phù hợp với ứng dụng
Hình 2.10: Access Control quy định quyền truy cập với Users và Applications [9]
Service Bus: Service Bus cung cấp kết nối an toàn giữa các dịch vụ và ứng dụng,
cho phép chúng có thể vượt qua các rào cản như tường lửa hay giới hạn mạng, nhờ
đó giải quyết các khó khăn liên quan đến các ràng buộc trong hệ thống mạng củaứng dụng Một khi Service Bus thiết lập kết nối giữa các ứng dụng, nó cho phép cácứng dụng có thể liên lạc với nhau một cách mềm dẻo Nhà phát triển có thể xâydựng giải pháp theo nhiều mô hình truyền thông khác nhau như relay, buffer,bidirectional (2 chiều), publish-subcribe, multicast, streaming hay direct-connect(kết nối trực tiếp) ServiceBus cung cấp cho mỗi dịch vụ 1 địa chỉ URI ổn định cóthể truy cập được từ bất kỳ ứng dụng nào được xác thực
Trang 37Hình 2.11: Service Bus kết nối giữa các ứng dụng cloud và on-premise [9]
2.3 Các mô hình ứng dụng Windows Azure
Phần 2.2 đã trình bày các thành phần và dịch vụ mà Windows Azure Platform hỗ trợ,tuy nhiên để có thể tận dụng sức mạnh của nền tảng này, các thành phần đó cần đượcphối hợp với nhau một cách hiệu quả và hợp lý Phần này sẽ đưa ra 4 mô hình xâydựng ứng dụng dựa trên nền tảng Windows Azure Bốn mô hình ứng dụng trên lànhững mục tiêu cơ bản của Windows Azure CTP, trong tương lai, Windows Azure còntiếp tục phát triển và cung cấp những giải pháp ngày càng mạnh mẽ hơn
2.3.1 Ứng dụng web có khả năng mở rộng
Giả sử một tổ chức muốn tạo một ứng dụng web, cách thông thường là sẽ là chạy ứngdụng đó trên một máy chủ của tổ chức đó hoặc của một nhà cung cấp host Tuy nhiên,trong nhiều trường hợp, sử dụng một nền tảng đám mây như Windows Azure sẽ là lựachọn tốt hơn
Chằng hạn, nếu như ứng dụng web cần phục vụ một số lượng lớn người dùng đồngthời, việc xây dựng ứng dụng trên nền Windows Azure sẽ hỗ trợ thực sự cho ứng dụng
có thể tùy chỉnh quy mô, co giãn (scale) ứng dụng và dữ liệu để chịu tải lớn tốt hơnnhiều so với các công nghệ web truyền thống Hoặc trong trường hợp tải của ứng dụng
có sự thay đổi đáng kể, có những khoảng thời gian ứng dụng chỉ chịu tải rất ít, nhưng
có những thời điểm tăng cao bất ngờ Các ứng dụng dạng này có thể tìm thấy chẳnghạn như các trang tin tức hoặc chia sẻ video, khi có những tin nóng hoặc những đoạnvideo có thể thu hút số lượng người truy cập tăng nhanh chóng mặt, hoặc trong khoảngthời gian 1 ngày, số lượng truy cập của ứng dụng chỉ tập trung vào 1 khoảng thời gian