Nền tảng Windows Azure là một nhóm các công nghệ đám mây, mỗi công nghệ cung cấp một tập các dịch vụ đặc trƣng hỗ trợ phát triển ứng dụng. Hình 1, nền tảng Windows Azure có thể đƣợc sử dụng bởi ứng dụng chạy trên đám mây, và cả ứng dụng chạy On-Premise.
Hình 4.6: Nền tảng Windows Azure hỗ trợ ứng dụng, dữ liệu và hạ tầng trên đám mây.
4.4.2. Các thành phần của nền tảng Windows Azure :
Windows Azure: Cung cấp môi trƣờng nền tảng Windows để 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ụ dữ liệu trên đám mây dựa trên SQL Server;
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.
4.4.3. Windows Azure
Ở cấp độ cao nhất, Windows Azure đƣợc hiểu đơn giản là một nền tảng để chạy ứng dụng Windows và lƣu trữ dữ liệu trên đám mây;
Hình 4.7: Windows Azure cung cấp dịch vụ tính toán và lưu trữ cho ứng dụng đám mây.
Windows Azure chạy trên nhiều máy tính đặt trong trung tâm dữ liệu của Microsoft và truy xuất qua Internet. Một Windows Azure Fabric liên kết chặc chẽ nhiều sức mạnh xử lí này thành một thể thống nhất;
Dịch vụ tính toán dựa trên Windows. Lập trình viên có thể xây dựng ứng dụng sử dụng .NET Framework, Native-Code,… Các ứng dụng này đƣợc viết bằng các ngôn ngữ thông thƣờng nhƣ : C#, Visual Basic, C++, và Java, sử dụng Visual Studio hoặc công cụ phát triển khác. Lập trình viên có thể tạo ứng dụng Web, sử dụng công nghệ nhƣ ASP.Net, WCF và PHP; ứng dụng cũng có thể chạy nhƣ một xử lí nền độc lập, hoặc kết hợp cả Web và xử lí nền.
Cả ứng dụng Windows Azure và ứng dụng On-Premise có thể truy xuất dịch vụ lƣu trữ Windows Azure, và cả hai cùng truy xuất bằng REST API. Dịch vụ lƣu trữ cho lƣu trữ các đối tƣợng dữ liệu lớn (blob), cung cấp các hàng đợi để liên lạc giữa các thành phần trong ứng dụng Windows Azure, và cung cấp dạng Table với ngôn ngữ truy vấn đơn giản. Đối với các ứng dụng có nhu cầu lƣu trữ dữ liệu quan hệ truyền thống, nền tảng Windows Azure cung cấp cơ sở dữ liệu SQL Azure.
Tuy nhiên để đạt đƣợc những thuận lợi trên đòi hỏi phải quản lí hiệu quả. Trong Windows Azure, mỗi ứng dụng có một tập tin cấu hình. Bằng cách cấu hình tập tin này bằng tay hoặc lập trình, ngƣời chủ ứng dụng có thể cấu hình nhiều thành phần nhƣ thiết lập số thể hiện mà Windows Azure nên chạy. Sau đó Windows Azure Fabric giám sát ứng dụng để duy trì trạng thái mong muốn.
Để cho phép khách hàng tạo, cấu hình và giám sát ứng dụng. Windows Azure cung cấp Windows Azure Portal. Khách hàng cung cấp một Windows Live ID, sau đó tạo một tài khoản Hosting để chạy ứng dụng, và một tài khoản lƣu trữ để lƣu trữ ứng dụng.
4.4.4. SQL Azure
Một trong những cách hấp dẫn nhất của việc sử dụng máy chủ truy xuất Internet là xử lí dữ liệu. Mục tiêu của SQL Azure là đánh địa chỉ vùng này, cung cấp các dịch vụ dựa trên đám mây để lƣu trữ và làm việc với thông tin. Trong khi Microsoft nói rằng SQL Azure sẽ bao gồm một loạt các tính năng định hƣớng dữ liệu, đồng bộ hóa dữ liệu, báo cáo, phân tích dữ liệu và những chức năng khác.
Hình 4.8: SQL Azure cung cấp các dịch vụ định hướng dữ liệu trong đám mây.
Cơ sở dữ liệu SQL Azure cung cấp một hệ thống quản lí cơ sở dữ liệu dựa trên đám mây (DBMS). Công nghệ này cho phép ứng dụng On-Premise và đám mây lƣu trữ dữ liệu quan hệ và những kiểu dữ liệu khác trên các máy chủ trong trung tâm dữ liệu Microsoft. Cũng nhƣ các công nghệ đám mây khác, tổ chức chỉ trả cho những gì họ sử dụng. Sử dụng dữ liệu đám mây cho phép chuyển đổi những chi phí vốn nhƣ: phần cứng, phần mềm hệ thống quản lí lƣu trữ, vào chi phí điều hành.
Cơ sở dữ liệu SQL Azure đƣợc xây dựng trên Microsoft SQL Server. Cho qui mô lớn, công nghệ này cung cấp môi trƣờng SQL Server trong đám mây, bổ sung với Index, View, Store Procedure, Trigger,…và còn nữa. Dữ liệu này có thể đƣợc truy xuất bằng ADO.Net và các giao tiếp truy xuất dữ liệu Windows khác. Khách hàng cũng có thể sử dụng phần mềm On-Premise nhƣ SQL Server Reporting Service để làm việc với dữ liệu dựa trên đám mây.
Khi ứng dụng sử dụng Cơ sở dữ liệu SQL Azure thì yêu cầu về quản lí sẽ đƣợc giảm đáng kể. Thay vì lo lắng về cơ chế, nhƣ giám sát việc sử dụng đĩa và theo dõi tập
tin nhật ký (log file), khách hàng sử dụng Cơ sở dữ liệu SQL Azure có thể tập trung vào dữ liệu. Microsoft sẽ xử lí các chi tiết hoạt động. Và giống nhƣ các thành phần khác của nền tảng Windows Azure, để sử dụng Cơ sở dữ liệu SQL Azure chỉ cần đến Windows Azure Web Portal và cung cấp các thông tin cần thiết. Ứng dụng có thể dựa vào SQL Azure với nhiều cách khác nhau.
Một ứng dụng Windows Azure có thể lƣu trữ dữ liệu trong Cơ sở dữ liệu SQL Azure. Trong khi bộ lƣu trữ Windows Azure không hỗ trợ các bảng dữ liệu quan hệ, mà nhiều ứng dụng đang tồn tại sử dụng cơ sở dữ liệu quan hệ. Vì vậy lập trình viên có thể chuyển ứng dụng đang chạy sang ứng dụng Windows Azure với lƣu trữ dữ liệu trong Cơ sở dữ liệu SQL Azure.
Xây dựng một ứng dụng Windows Azure lƣu trữ dữ liệu trong Cơ sở dữ liệu SQL Azure. Giả sử một nhà sản xuất muốn thông tin sản phẩm có sẵn trên cả mạng lƣới đại lý và khách hàng. Đƣa dữ liệu này vào Cơ sở dữ liệu SQL Azure để cho nó đƣợc truy cập bởi các ứng dụng đang chạy tại các đại lý và ứng dụng Web của khách hàng.
4.4.5. Windows Azure Platform AppFabric
Windows Azure Platform AppFabric cung cấp dịch vụ cơ sở hạ tầng dựa trên đám mây
Hình 4.9: Windows Azure Platform AppFabric cung cấp cơ sở hạ tầng dựa trên đám mâyđược sử dụng bởi ứng dụng đám mây và ứng dụng On-Premise.
4.4.6. Các thành phần của Windows Azure Platform AppFabric :
Service Bus: Mục tiêu của Service Bus là cho phép ứng dụng Expose các Endpoint có thể đƣợc truy xuất bởi các ứng dụng khác. Mỗi Exposed Endpoint đƣợc
gán một URI. Client sử dụng URI này để xác định vị trí và truy xuất dịch vụ. Service Bus cũng xử lí việc chuyển đổi địa chỉ mạng và vƣợt qua tƣờng lửa mà không cần mở Port mới để Expose ứng dụng.
Access Control : Dịch vụ này cho phép ứng dụng Client chứng thực chính nó và cung cấp một ứng dụng Server với thông tin xác thực. Máy chủ sau đó có thể sử dụng thông tin này để quyết định những gì ứng dụng này đƣợc phép làm.
Các dịch vụ này có thể được sử dụng trong nhiều cách khác nhau như sau
Giả sử một doanh nghiệp muốn cho phần mềm đƣợc truy cập bởi các đối tác thƣơng mại đến một trong các ứng dụng của nó. Nó có thể Expose các chức năng của ứng dụng qua dịch vụ Web : SOAP hoặc REST, sau đó đăng ký các Endpoint của họ với Service Bus. Các đối tác thƣơng mại có thể sử dụng Service Bus để tìm các Endpoint này và truy xuất các dịch vụ.
Một ứng dụng chạy Windows Azure có thể truy xuất dữ liệu lƣu trữ trong cơ sở dữ liệu On-Premise. Để làm đƣợc điều này có thể giải quyết bằng cách tạo một Service truy xuất dữ liệu, sau đó Expose Service này qua Service Bus.
Hãy tƣởng tƣợng một doanh nghiệp Expose nhiều dịch vụ ứng dụng cho các đối tác kinh doanh của mình. Nếu những dịch vụ đó đƣợc Expose bằng cách sử dụng REST, ứng dụng có thể dựa vào các Access Control để xác thực và cung cấp thông tin nhận dạng cho mỗi ứng dụng khách hàng. Thay vì duy trì thông tin nội bộ về từng ứng dụng đối tác thƣơng mại, thông tin này có thể đƣợc lƣu trữ trong dịch vụ Access Control.
Microsoft có Window Azure Platform Windows Azure Platform là một nhóm các công nghệ đám mây, mỗi công nghệ cung cấp một tập các dịch vụ đặc trƣng để phát triển ứng dụng.
4.4.7. Mô hình của một ứng dụng trên Windows Azure
Trƣớc khi bắt tay vào việc xây dựng một ứng dụng thì ngƣời dùng cần phải làm quen với các thành phần cần thiết để ứng dụng của mình có thể chạy đƣợc trên Windows Azure. Sơ đồ dƣới đây mô tả các thành phần của một ứng dụng Windows Azure:
Hình 4.11: Các thành phần của một ứng dụng Windows Azure
Trong đó:
Web role: Vai trò tùy chỉnh cho lập trình ứng dụng web nó hỗ trợ ứng dụng của bạn chạy trên nền web giống nhƣ sự hỗ trợ của IIS 7 và ASP.NET. Lợi ích của việc sử dụng loại vai trò này là nó bao gồm các công cụ bổ sung để cho phép ứng dụng vừa tạo dựng chạy trên môi trƣờng Windows Azure. Nhƣng nó không thích hợp cho việc thực hiện một ứng dụng mà sự tƣơng tác của ngƣời truy cập đến ứng dụng với thời gian quá dài.
Worker role: Đây là một vai trò hữu ích cho sự phát triển tổng quát, có thể thực hiện và xử lý thông tin của ứng dụng trên nền web, đồng thời ƣu điểm của nó là có thể thực hiện các ứng dụng đòi hỏi hoạt động tƣơng tác trong khoảng thời gian dài và liên tục.
WM role: đây là vai trò cho phép ngƣời sử dụng xác định các cấu hình và cập nhật của hệ điều hành cho máy ảo. Trong khi web role và worker role chạy trong máy ảo. Vai trò này cho phép chúng ta kiểm soát đƣợc các hoạt động diễn ra trong việc thực thi ứng dụng đồng thời nó đặc biệt thích hợp cho việc di chuyển các ứng dụng hiện có để chạy nhƣ là tổ chức dịch vụ trong windows Azure.
Kết luận Chương 4
Các công nghệ ĐTĐM hàng đầu hiện nay bao gồm có Microsoft, Google, Amazon, IBM và một số nhà phát triển ĐTĐM khác. Chƣơng này tôi đã trình bầy về các công nghệ, dịch vụ của mỗi hãng phát điển ĐTĐM và nêu cách thức tiếp cận của từng hãng phát triển công nghệ này.
CHƢƠNG 5
ỨNG DỤNG CLOUD COMPUTING TRÊN NỀN TẢNG GOOGLE APP ENGINE
5.1. Công nghệ Google App Engine 5.1.1. Tổng quan về Google App Engine 5.1.1. Tổng quan về Google App Engine
“Google App Engine” (GAE) là một nền tảng hosting bao gồm web server, cơ sở dữ liệu BigTable and kho lƣu trữ file GFS. GAE cho phép bạn viết ứng dụng web dựa trên cơ sở hạ tầng của Google. Nghĩa là bạn không cần quan tâm là trang web bạn đƣợc lƣu trữ nhƣ thế nào (kể cả database đi kèm), mà chỉ cần quan tâm đến việc phát triển ứng dụng theo các API do Google cung cấp. Với App Engine, bạn chỉ cần tải lên các ứng dụng của bạn, và nó sẵn sàng để phục vụ ngƣời dùng của bạn.
Bạn có thể sử dụng tên miền riêng của mình (chẳng hạn nhƣ http://www.example.com/ ) thông qua google apps. Hoặc bạn có thể dùng sub- domain miễn phí của appspot.com. GAE cho phép đƣợc host miễn phí với dung lƣợng 1GB lƣu trữ và cho phép 5 triệu pageview hàng tháng, vƣợt qua mức này bạn sẽ phải trả phí. Dùng GAE, chúng ta khỏi phải thiết kế database, viết SQL để truy vấn data, map data với object. Chúng ta chỉ cần design các class và GAE tự động lo phần làm việc với database. Tóm lại, giờ đây bạn chỉ cần phải nghĩ ra và viết những ứng dụng tuyệt vời nhất rồi kêu gọi cả thế giới vào dùng. Tuy nhiên, mặt trái của việc xây dựng ứng dụng trên GAE là bạn sẽ phụ thuộc hoàn toàn vào các công nghệ của Google và rất khó có thể tách ra thành một ứng dụng độc lập. Yahoo hay Microsoft sẽ chẳng bao giờ mua một ứng dụng xây dựng trên nền tảng của đối thủ. Còn các nhà đầu tƣ cũng rất e ngại khi tài sản của công ty bạn đặt hết vào tay ngƣời khác, dù cho đó là Google.
GAE đƣợc Google cho ra mắt vào tháng 4 năm 2008 hỗ trợ ngôn ngữ Python. Đến tháng 4 năm 2009, GAE đã công bố hỗ trợ ngôn ngữ chính thức thứ hai là Java, đánh dấu một sự thay đổi lớn trong cách xây dựng ứng dụng. Một số ngôn ngữ khác nhƣ PHP cũng có thể chạy đƣợc nếu cài cùng với bộ chuyển từ PHP sang Java.
GAE là nền tảng ĐTĐM theo mô hình PaaS. GAE cho phép khách hàng triển khai các ứng dụng web để chạy trên cơ sở hạ tầng của Google. Với các đặc trƣng dễ dàng xây dựng, bảo trì và khả mở, GAE đã đƣợc các nhà phát triển và các doanh nghiệp triển khai sử dụng. Với chi phí xây dựng và triển khai ứng dụng ban đầu gần nhƣ bằng 0, khách hàng dễ dàng xây dựng các ứng dụng theo yêu cầu. Khi ứng dụng đã thu đƣợc lợi nhuận và vƣợt qua mức sử dụng thì khách hàng chỉ phải trả khoản phí tài nguyên mà mình đã sử dụng.
5.1.2 Môi trƣờng phát triển
Một ứng dụng App Engine đáp ứng các yêu cầu web. Một yêu cầu web sẽ bắt đầu khi có một ngƣời dùng hay điển hình là các trình duyệt web của ngƣời dùng gửi một yêu cầu truy cập vào ứng dụng thông qua giao thức HTTP. Khi App Engine nhận
đƣợc yêu cầu, nó sẽ xác định ứng dụng dựa vào tên miền, hoặc tên miền con của .appspot.com (cung cấp miễn phí mỗi ứng dụng) hoặc là một tên miền riêng của chúng ta đã đƣợc đăng kí và thiết lập với Google Apps. App Engine lựa chọn một máy chủ từ nhiều máy chủ để xử lý các yêu cầu đó. Sau đó, App Engine sẽ gửi các yêu cầu đã nhận đƣợc từ ngƣời dùng đến ứng dụng phù hợp để xử lý, sau khi đã xử lý xong các ứng dụng này sẽ gửi dữ liệu trả về cho App Engine, App Engine sẽ nhận dữ liệu phản hồi từ các ứng dụng và trả về cho ngƣời dùng thông qua trình duyệt web.
Theo góc nhìn của ứng dụng, môi trƣờng thực thi chỉ xuất hiện và tồn tại khi bắt đầu một yêu cầu và sẽ biến mất khi yêu cầu đó đƣợc đáp ứng xong. App Engine cung cấp tối thiểu 2 cách thức lƣu trữ dữ liệu tồn tại giữa các yêu cầu , nhƣng các cơ chế này tồn tại bên ngoài môi trƣờng thực thi. Môi trƣờng thực thi sẽ không duy trì trạng thái giữa các yêu cầu, hoặc ít nhất không mong muốn các trạng thái sẽ đƣợc duy trì giữa các yêu cầu. App Engine có thể phân phát lƣu lƣợng truy cập trong nhiều server, vì nó cần phải đáp ứng cho nhiều yêu cầu xử lý nhƣ nhau, bất kể có bao nhiêu lƣu lƣợng truy cập nó sẽ xử lý cùng một lúc.
Bản thân GAE có cơ chế để quản lý các trạng thái của từng yêu cầu trong mỗi ứng dụng dƣới dạng Sandbox (ngƣời phát triển không biết rõ cơ chế bên trong nhƣng hỗ trợ ngƣời phát triển những dịch vụ cần thiết). Điều này cho phép App Engine xử lý một yêu cầu với một máy chủ mà nó mong muốn trong ƣớc tính của nó để trả về phản hồi nhanh nhất. Không có cách nào để đảm bảo rằng phần cứng trên cùng một máy chủ sẽ xử lý hai lần yêu cầu, ngay cả khi các yêu cầu đến cùng từ một client, và đến khá nhanh chóng.
Sandbox cho phép App Engine chạy nhiều ứng dụng trên cùng một máy chủ, trong đó hành vi của một ứng dụng không làm ảnh hƣởng đến các ứng dụng khác. Ngoài ra để giới hạn quyền truy cập đến hệ điều hành, môi trƣờng thực thi cũng giới hạn việc sử dụng CPU và bộ nhớ . App Engine giữ các giới hạn này linh hoạt và chặt chẽ hơn các giới hạn này để các ứng dụng sử dụng nhiều tài nguyên hơn để bảo vệ tài nguyên đƣợc chia sẻ từ những ứng dụng “không mong muốn”.
Mỗi yêu cầu có tối đa 30s để trả về phản hồi cho client. Mặc dù thời gian này có vẻ đáp ứng tốt cho một ứng dụng web, nhƣng App Engine đƣợc tối ƣu hóa cho các