Tìm hiểu một vài nhà cung cấp dịch vụ đám mây
Trang 1Tìm hiểu một vài nhà cung cấp dịch vụ đám mây
Nền tảng dịch vụ đám mây vẫn còn trong giai đoạn xây dựng , nhưng các nhà kinh doanhlớn như Microsoft, IBM, Amazon, và Google đã có những đầu tư đáng kể cho tương laitrong việc cung ứng dịch vụ đám mây
Dịch vụ Web Amazon
Amazon là hãng bán lẻ lớn nhất trên thế giới, và để hỗ trợ các hoạt động hằng ngày,Amazon là một trong những trung tâm dữ liệu tiên tiến nhất trên thế giới Việc xử lí hàngtriệu giao dịch mỗi giờ yêu cầu một cơ sở hạ tầng giao dịch cấp cao và nó không chỉ cungcấp tính ổn định, tốc độ mà còn giảm chi phí chuyển đổi Amazon đã đạt được điều nàybằng cách xây dựng một cơ sở hạ tầng trung tâm dữ liệu tự động triển khai hệ điều hành
ảo và máy chủ lưu trữ Amazon quyết định kiếm tiền từ sở hữa trí tuệ này bằng cách chothuê nền tảng của họ và các dịch vụ lưu trữ để các lập trình viên và nhà cung cấp dịch vụđộc lập (ISVs) phát triển và lưu trữ ứng dụng Năm dịch vụ mà nền tảng đám mây củaAmazon cung cấp :
- Elastic Compute Cloud (EC2)
Trang 3Hình 1-8 Trang chủ dịch vụ web Amazon (http://aws.amazon.com/)
Từ góc nhìn của lập trình viên có 3 phần quan trọng trong trang này : Sản phẩm& Dịch
vụ (Products & Services ) , Đăng kí (Signup) – đăng kí tài khoản miễn phí, và Lập trìnhviên (Developers) – chứa các tài nguyên để xây dựng phần mềm với các công nghệ được
hỗ trợ như : Java, PHP, Ruby,Windows & Net
Trang 4Amazon EC2
Amazon EC2 là môi trường tính toán ảo cung cấp khả năng tính toán trong đám mây Cáclập trình viên có thể tạo , khởi động và tắt máy ảo theo nhu cầu Máy ảo hỗ trợ nhiều hệđiều hành khác nhau như Red Hat Enterprise, Linux, Windows Server 2003, OracleEnterprise Linux, OpenSolaris, openSUSE Linux, Ubuntu Linux, Fedora, Gentoo Linux,
và Debian Máy ảo cũng hỗ trợ nhiều phần mềm như Oracle 11g, Microsoft SQL Server
2005 Standard Edition, Apache Web Server, IIS / ASP.Net, Java Application Server,Jboss Enterprise Application Platform,…
Hình 1-10 : Trang chủ Amazon EC2
Trang 5Amazon SimpleDB
Amazon SimpleDB là một dịch vụ cơ sở dữ liệu đám mây cung cấp các chức năng cơ sở
dữ liệu để lưu trữ dữ liệu chỉ mục và hàng đợi Simple DB không phải là một cơ sở dữliệu quan hệ trong đám mây nhưng là một phương tiện lưu trữ để lưu trữ và lấy dữ liệu
Hình 1-12 Trang chủ Amazon SimpleDB
Trang 6Amazon Simple Storage Service (S3)
Amazon S3 là một cơ sở dữ liệu đám mây, được sử dụng để lưu trữ và lấy dữ liệu quainternet Đây là cơ sở hạ tầng lưu trữ dữ liệu mà Amazon chạy các trang riêng của nó trêntoán cầu Các lập trình viên có thể tận dụng cơ sở hạ tầng lưu trữ chất lượng tương tự
Amazon S3 chứa 3 khái niệm lưu trữ : object, bucket, và key Object là đối tượng nền
tảng trong S3, chứa các dữ liệu và siêu dữ liệu (metadata) ,và kích thước tối đa có thể là
5GB Các object có thể được lưu trữ trong bucket Bucket cung cấp một namespace duy nhất để chứa các object Key dùng để nhận biết các object trong bucket
Hình 1-14 Trang chủ Amazon S3
Trang 7Amazon CloudFront
Amazon CloudFront là một mạng phân phối dữ liệu để chuyển đổi nội dung AmazonCloudFont hoạt động cùng với Amazon S3 để cung cấp các bản sao của đối tượng từ vịtrí gần nhất đến ứng dụng đang gọi Ví dụ, nếu bạn có một ứng dụng đang chạy trong mộttrung tâm dữ liệu ở châu Á, Amazon CloudFront có thể cung cấp các đối tượng từ vị trí Á
Hình 1-16 : Trang chủ Amazon CloudFont
Trang 8Amazon Simple Queue Service
Amazon SQS là dịch vụ truy vấn đám mây để lưu trữ tin nhắn Các lập trình viên có thểtận dụng SQS để chia sẻ dữ liệu truy vấn thông qua ứng dụng phân tán SQS hỗ trợ tất cảcác chức năng truy vấn cơ bản như tạo, lập danh sách, và xóa truy vấn cũng như gửi,nhận và xóa tin nhắn Bạn có thể sử dụng Amazon SQS cùng với EC2 và S3 để xây dựngcác luồng làm việc phức tạp
Hình 1-18 Trang chủ Amazon SQS
Trang 9Google là người dẫn đầu trong các dịch vụ tìm kiếm trên Internet và có những tài sảnđáng kể trong lĩnh vực quảng cáo, hợp tác, e-mail, và các trang mạng xã hội Google cócác trung tâm dữ liệu khổng lồ, với các thuật toán tuy chỉnh để làm chủ công cụ tìm kiếmnhanh nhất thế giới Công ty đã mở rộng cơ sở hạ tầng một cách ồ ạt để làm chủ các nềntảng giao tiếp và cộng tác gọi là Google Apps và nền tảng ứng dụng gọi là GoogleAppEngine để phát triển và triển khai ứng dụng web
Trang 10Hình 1-22b Trang chủ Google Apps cho giáo dục.
Trang 11Các dịch vụ chính được cung cấp bởi Google Apps là thư điện tử (Gmail), tin nhanh(Google Talk), lịch (Google Calendar), quản lí tài liệu (Google Docs), và quản lí trangweb (Google Sites)
Google cung cấp các API gọi là Google Data API để lập trình không chỉ cho GoogleApps mà còn cho các ứng dụng khác như Google Maps, Google Health, and YouTube
Hình 1-23 Google Data API
Trang 12Google App Engine
Google App Engine là môi trường để phát triển và triển khai các ứng dụng web trên
cơ sở hạ tầng Google App Engine hỗ trợ Python và Java như là ngôn ngữ lập trình chính
để phát triển ứng dụng web Các nhà phát triển có thể phát triển các ứng dụng web bằngPython hoặc Java và triển khai những ứng dụng trong App Engine App Engine cũngcung cấp một kho dữ liệu với các chức năng hỗ trợ đơn giản như tạo, lấy, và xóa Các nhàphát triển có thể truy cập kho dữ liệu từ bên trong với các ứng dụng web App Engine đểlưu trữ và truy vấn dữ liệu Google App Engine cũng cung cấp Google Data APIs để truycập vào thành phần Google Apps như email, lịch, tìm kiếm, và docs
Hình 1-24 Hướng dẫn phát triển Google App Engine
Trang 13Các dịch vụ đám mây GoGrid cung cấp máy ảo Windows và Linux cấu hình sẵn với cácthành phần phần mềm được sử dụng thường xuyên nhất Dịch vụ này rất giống dịch vụAmazon EC2 với một số tính năng khác biệt
Hình 1-26 Trang chủ GoGrid.com
Trang 15Azure, hệ điều hành "đám mây" mà Microsoft giới thiệu vào cuối tháng 10 tại hội nghịPDC 2008 Windows Azure được phát triển trong 2 năm bởi kiến trúc sư trưởng phầnmềm Ray Ozzie của Microsoft
Azure Services Platform là một giải pháp hoàn thiện cho các doanh nghiệp Microsoft
sẽ lưu trữ các ứng dụng được xây dựng từ các hãng thứ ba cũng như những dịch vụ Webcủa chính Microsoft như là Office Live, Windows Live, Exchange Online, CRM Online Kết hợp chặt chẽ .NET Services (cho lập trình viên), SQL Services (cho cơ sở dữ liệu vàbáo biểu), Live Services (cho việc tương tác với các thiết bị người dùng) vào trong cácdịch vụ SharePoint và CRM (cho nội dung doanh nghiệp)
Trang 16Môi trường phát triển ứng dụng Windows Azure
Môi trường lập trình của WA bao gồm 2 thành phần chính: Windows Azure Toolscho Visual Studio và Windows Azure SDK
Kiểu project Visual Studio
Windows Azure Tools cho Visul Studio tạo ra một kiểu project chứa các template
dự án cho Web role và Worker role Sau khi cài đặt Windows Azure Tools cho VisualStudio, mở Visual Studio và tạo một project mới bằng cách: File New Project
Chọn Cloud Service, tiếp theo thêm vào các role cho dự án
Trang 17Có 4 role hợp lệ cho cloud service.
ASP.NET Web role : Role này gồm một project ASP.NET Bạn có thể xây
dựng hay chuyển bất cứ project ASP.NET để triển khai trên đám mây
WCF Service Web role : Role này chứa một WCF project Cũng như
ASP.NET Web role Bạn có thể xây dựng hay chuyển bất cứ dịch vụ WCF đểtriển khai trên đám mây
Worker role: Dự án Worker role là một ứng dụng xử lý background
CGI Web role: CGI Web role là một Web role cho phép dùng FasstCGI.
Trang 18Sau khi tạo xong,
Hình 1 Ví dụ một Cloud Service
Trong hình trên, project cloud service HelloCloud giữ tham chiếu đến tất cả cácproject trong solution trong thư mục con Roles Đồng thời, project cũng chứa 2 tập tin:
“ServiceDefinition.csdef “ và “ServiceConfiguration.cscfg” định nghĩa các thiết lập cấu
hình cho các role trong cloud service Dự án WCF service bao gồm một service mẫu và
cấu hình liên kết với nó trong tập tin “web.config” Tập tin “Webrole.cs” cài đặt sự kiện
bắt đầu và thay đổi cấu hình tạo ra bởi Windows Azure Platform Tập tin này được tạo
Trang 19cho tất cả các role với hàm điều khiển sự kiện bắt đầu và thay đổi cấu hình mặc định Bạn
có thể điều khiển các sự kiện khác như StatusCheck hay Stopping tùy thuộc vào yêu cầu của ứng dụng Lớp WebRole kế thừa từ lớp RoleEntryPoint từ không gian tên
Microsoft.WindowsAzure.ServiceRuntime Tập tin “WebRole.cs” tương tự như tập
tin “Global.asax” trong ứng dựng ASP.NET
Project ASP.NET Web role gồm một tập tin “Default.aspx” và tập tin behind và tập tin “web.config” Cuối cùng, project Worker role gồm tập tin
code-“WorkerRole.cs” và “app.config” Khi kế thừa lớp RoleEntryPoint, có thể override
phương thức Run() Bởi vì Worker role không được thiết kế để có bất kì một external
interface nào, nên nó không chứa bất kì tập tin ASP.NET hay WCF nào
Thiết lập và cấu hình Roles
Trong một project cloud service, bạn có thể cấu hình cho từng role bằng cách nhấp đúpchuột vào các role reference trong thư mục con Role của dự án
Trong Visual Studio có thể thấy như hình sau:
Hình 2 Role settings
Trang 20Trang thiết lập role có 5 tab: Configuration, Settings, Endpoints, Local Storage, vàCertificates
Thẻ Configuration được chọn mặc định và hiển thị lựa chọn cấu hình sau:
NET Trust Level: NET Trust Level chỉ ra mức độ tin cậy khi role này chạytrên thực tế Có 2 lựa chọn là Full Trust và Windows Azure Partial Trust Lựachọn Full Trust cho role đặc quyền để truy cập đến các tài nguyên,và thực thiđược native-code Trong Full trust, role có thể chạy trong ngữ cảnh người sửdụng Windows Azure chuẩn, hoặc là admin Trong lựa chọn Partial Trust, rolechạy trong môi trường tin cậy một phần và ko có quyền truy cập tài nguyêncũng như thực thi các native code trên máy
Instances: Số đếm thể hiện định nghĩa số lượng thể hiện của mỗi role mà bạnmuốn chạy trên cloud Ví dụ, bạn muốn chạy 2 thể hiện của Web roleASP.NET và một thể hiện của Worker role cho xử lý background Mặc định,tất cả các role đều chạy ở một thể hiện duy nhất Lựa chọn này cho bạn khảnăng để tăng giảm số thể hiện theo yêu cầu
Lựa chọn VM size cho bạn khả năng chọn kích thước của máy ảo phụ thuộc vào sự triểnkhai ứng dụng của bạn
Small: 1 core processor, 1.7GB RAM, 250GB hard disk
Medium: 2 core processors, 3.5GB RAM, 500GB hard disk
Large: 4 core processors, 7GB RAM, 1000GB hard disk
Extra large: 8 core processors, 15GB RAM, 2000GB hard disk
Trang 21Trong thẻ Setting, bạn có thể thêm hoặc xóa các thiết lập của mình.
Những cặp tên- giá trị này tương tự như cặp tên-giá trị trong “app.config”, hay
“web.config” Bạn có thể lấy giá trị của các thiết lập này trong code bằng cách gọi
RoleEnvironment.GetConfigurationSettingValue Mặc định, có một thiết lập
DiagnosticsConnectionString được sử dụng cho logging từ code của bạn, không xóa bỏ
thiết lập này
Thẻ Endpoint chứa các endpoint của role sẽ được tạo ra khi triển khai.
Hình 3 Thẻ Endpoint cho Web role
Trang 22Hình 4 Thẻ Enpoint cho Work role
Một Web role có thể có InputEndpoints và một internal endpoint InputEndpoints
có thể là HTTP hay HTTPS endpoints xuất ra bên ngoài Số Port định nghĩa cổng được
sử dụng khi truy cập trang web mặc định hay dịch vụ trong Web role này Trong trườnghợp là HTTPS endpoint, bạn có thể upload một chứng chỉ X.509 cho việc truy cập trangweb hay dịch vụ sử dụng kết nối được mã hóa HTTPS Internal endpoint là một endpoint
có thể truy cập dến các role khác của cùng một cloud service Ví dụ, một Worker role cóthể tham chiếu đến một internal endpoint của một Web role trong cùng một cloud servicecho việc tạo ra các phương thức dịch vụ web gọi đến nó
Một Worker role không định nghĩa endpoint như Web role bởi vì nó được dùngnhư là một xử lý background Để dịnh nghĩa một endpoint, bạn phải thêm một danh sách
và chọn kiểu của nó (input hay internal), protocol (tcp, http, https), cổng, và một tùychọn- tên chứng chỉ SSL
Chú ý rằng Web role chỉ có thể có HTTP hoặc HTTPS endpoints, nhưng mộtWorker role có thể có một HTTP, HTTPS, hay TCP endpoint
Thẻ LocalStorage định nghĩa thư mục cục bộ được tạo ra trên máy chủ của role để choviệc lưu trữ tập tin cục bộ
Trang 23Hình 5 Thẻ Local Storage
Tên của local storage sẽ là tên của thư mục được tạo trên máy chủ Cột size địnhnghĩa kích thước tối đa của thư mục đó, và Clean on Role Recycle chỉ ra rằng nội dungcủa thư mục đó có bị dọn dẹp đi khi một role dọn rát không Bạn có thể sử dụng tùy chọnnày để tạo ra nơi lưu trữ nhanh để duy trì trạng thái của các role sau khi khởi động lại hay
bị hư hỏng Local storage còn rất hữu ích khi sử dụng cho việc catching tạm thời, hayquản lý session của ứng dụng
Thẻ Certificate được sử dụng cho việc tham chiếu đến các chứng chỉ trong role của bạn.Bạn có thể sử dụng Windows Azure developer portal hay các API các service quản lý choviệc upload các chứng chỉ lên server và sau đó tham chiếu đến các chứng chỉ này trongcác thiết lập như hình sau:
Chú ý: Tất cả các thiết lập trên có thể thay đổi trực tiếp trong tập tin
ServiceDefinition.csdef và ServiceConfiguration.cscfg
Trang 24Làm việc với dự án Windows Azure trong Visual Studio
Khi đã tạo một dự án cloud service, bạn có thể làm việc với các role, làm việc vớicác dịch vụ lưu trữ, và làm việc trong debug và triển khai của service
Làm việc với Cloud Service Roles
Bạn có thể liên kết các một Web role hay Worker role đã tồn tại trong solution vàomột cloud service hoặc tạo mới một Web role hay Worker role Để thêm mới,nhấn chuộtphải vào thư mục con Role chọn Add
Hình 6 Thêm một Web role hay một Worker role
Làm việc với Storage Services
Windows Azure development fabric bao gồm một môi trường lưu trữ cục bộtương tự như dịch vụ lưu trữ đám mây Nó có các service blob, queue, table tương tự nhưtrên đám mây Những service này phụ thuộc vào cơ sở dữ liệu SQL Server 2005 hay
2008 Vì thế, bạn cần phải cài đặt SQL Server 2005 hay 2008 trên máy của bạn khi làmviệc với các dịch vụ lưu trữ trên môi trường phát triển
Để chạy development storage:
Chọn Start All Programs Windows Azure SDK DevelopmentStorage
Trang 25Hình 7 Development Storage
Khi debug một dự án cloud service bằng Visual Studio, nó sẽ khởi độngDevelopment Storage Nhấp phải chuột vào icon Windows Azure và chọnShow Development Storage UI
Và đây là màn hình development storage
Trang 26Triển khai dịch vụ
Để triển khai dịch vụ đám mây Windows Azure trên đám mây, bạn phải đóng gói
nó thành tập tin * cspkg Nó chứa tất cả các thành phần, thư viện, và upload gói này lên
Windows Azure developer portal Để đóng gói một service, nhấp phải chuột vào dự áncloud service, chọn Publish
Khi chọn Publish, Visual Studio NET tạo ra 2 tập tin [Tên service].cspkg vàServiceConfiguration.cscfg Nó cũng sẽ mở trình duyệt của bạn and và đưa bạn đến mànhình đăng nhập LiveID để đăng nhập vào Windows Azure developer portal Tập tin [TênService].cspkg là gói dịch vụ chứa tất cả các thành phần được yêu cầu bởi WindowsAzure để chạy service trên đám mây Tập tin cspkg là một tập tin nén, bạn có thể đổi tên
nó thành zip để có thể giải nén nội dung bên trong Tập tin ServiceConfiguration.cscfg làtập tin cấu hình cho thể hiện của dịch vụ Nó là bản copy của tập tinServiceConfiguration.cscfg từ dự án cloud service