Khả năng truy xuất diện rộng (Broad network access)
Điện toán đám mây cung cấp dịch vụ người dùng thông qua môi trường Internet. Do đó, người dùng chỉ cần kết nối với Internet là có thể sử dụng dịch vụ. Mặt khác, Điện toán đám mây ở dạng dịch vụ nên không đòi hỏi khả năng xử lý cao ở phía client, do đó người dùng có thể truy xuất tới hệ thống dịch vụ bằng các thiết bị di động. Bên cạnh đó, điện toán đám mây giúp cho người dùng không bị phụ thuộc vị trí và thời điểm sử dụng dịch vì điện toán đám mây cho phép người dùng sử dụng dịch vụ từ bất kỳ nơi nào, vào bất kỳ lúc nào thông qua Internet.
Khả năng co giãn (Rapid elasticity)
Đây là tính chất đặc biệt nhất, nổi bật nhất và quan trọng nhất của Điện toán đám mây. Khả năng này tự động mở rộng hoặc thu nhỏ hệ thống tùy theo nhu cầu của người dùng. Khi nhu cầu sử dụng tăng cao, hệ thống sẽ tự mở rộng bằng cách thêm tài nguyên hệ thống và khi nhu cầu giảm xuống hệ thống sẽ tự động giảm bớt tài nguyên. Khả năng co giãn giúp cho nhà cung cấp sử dụng tài nguyên hiệu quả, tận dụng triệt để tài nguyên dư thừa, phục vụ được nhiều khách hàng. Đối với người sử dụng dịch vụ, khả năng co giãn giúp họ giảm chi phí do họ chỉ trả phí cho những tài nguyên thực sự dùng.
Ví dụ: Một khách hàng thuê một Server gồm 15 CPU. Thông thường do có ít truy cập nên chỉ cần 10 CPU là đủ, khi đó hệ thống quản lý của nhà cung cấp dịch vụ sẽ tự ngắt bớt 5 CPU dư thừa, khách hàng không phải trả phí cho những CPU dư thừa này (những CPU này sẽ được cấp phát cho các khách hàng khác có nhu cầu). Khi lượng truy cập tăng cao, nhu cầu tăng lên thì hệ thống quản lý của nhà cung cấp dịch vụ sẽ tự “gắn” thêm CPU vào, nếu nhu cầu tăng vượt quá 15 CPU thì khách hàng phải trả phí cho phần vượt mức theo thỏa thuận với nhà cung cấp.
Khả năng điều tiết dịch vụ (Measured service)
Hệ thống Điện toán đám mây tự động kiểm soát và tối ưu hóa việc sử dụng tài nguyên (dung lượng lưu trữ, đơn vị xử lý, băng thông…). Lượng tài nguyên sử dụng có thể được theo dõi, kiểm soát và báo cáo một cách minh bạch cho cả hai phía nhà cung cấp dịch vụ và người sử dụng.
Khả năng tự phục vụ theo nhu cầu (On-demand self-service)
Người dùng có thể tự đáp ứng các nhu cầu sử dụng của mình như tăng thời gian sử dụng server, tăng dung lượng lưu trữ, tăng lưu lượng băng thông, tăng giới hạn truy vấn… mà không cần phải tương tác trực tiếp với nhà cung cấp dịch vụ, mọi nhu cầu về dịch vụ đều sẽ được xử lý trên môi trường Internet. Mỗi khi nảy sinh nhu cầu sử dụng tài nguyên hệ thống, người dùng chỉ cần gửi yêu cầu thông qua trang web cung cấp dịch vụ, hệ thống của nhà cung cấp sẽ đáp ứng yêu cầu của người dùng.
Dùng chung tài nguyên (Resource pooling)
Tài nguyên của nhà cung cấp dịch vụ được dùng chung, phục vụ cho nhiều người dùng dựa trên mô hình “multi-tenant”. Trong mô hình “multi-tenant”, tài nguyên sẽ được phân phát động tùy theo nhu cầu của người dùng theo thời gian thực. Khi nhu cầu của một khách hàng giảm xuống, thì phần tài nguyên dư thừa của hệ thống sẽ được tận dụng để phục vụ cho một khách hàng khác. Ví dụ như khách hàng A thuê 15 CPU mỗi ngày từ 7 giờ đến 11 giờ, một khách hàng B thuê 15 CPU tương tự mỗi ngày từ 13 giờ đến 17 giờ thì hai khách hàng này có thể dùng chung 15 CPU đó.
2.3.3. Ưu và nhược điểm của điện toán đám mây
Ưu điểm
Đáp ứng nhu cầu khả năng lưu trữ của người dùng: Một đặc điểm nổi bật của điện toán đám mây là phục vụ theo nhu cầu của người dùng. Khi cần thiết mở rộng khả năng lưu trữ, hệ thống có nhiệm vụ cung cấp đủ nhu cầu sử dụng cần thiết, và khi muốn giảm bớt dung lượng lưu trữ, hệ thống có nhiệm vụ thu hồi lượng dung lượng không cần thiết, tất cả các hoạt động của hệ thống đều được thực hiện một cách tự động theo yêu cầu của người dùng.
Khả năng tự co giãn của hệ thống: tùy vào yêu cầu thực tế khi sử dụng, người dùng có thể yêu cầu nhà cung cấp mở rộng hoặc giảm bớt tài nguyên hệ thống. Khi sử dụng hết lượng tài nguyên cho trước, người dùng hoàn toàn có khả năng yêu cầu nhà cung cấp cung cấp thêm tài nguyên (dung lượng lưu trữ, số clock CPU chạy cho ứng dụng) một cách tự động thông qua Internet.
Tính sẵn sàng: Hiện nay, việc sử dụng các dịch vụ của Điện toán đám mây làm cho người sử dụng lo lắng đến tính sẵn sàng của dịch vụ mà họ sử dụng. Nên đây là một lý do có thể làm cho người sử dụng ngại sử dụng các dịch vụ của Điện toán đám mây. Nhưng hiện tại, những người sử dụng dịch vụ của Điện toán đám mây có thể an tâm về chất lượng dịch vụ.
Bản quyền phần mềm: Chi phí cho bản quyền phần mềm và chi phí vận hành, bảo trì dịch vụ là tiêu chí khi quan trọng trong quyết định lựa chọn dịch vụ của người dùng.
Nhược điểm
Data lock-in: Hiện nay các phần mềm đã được cải thiện khả năng tương tác giữa các nền tảng khác nhau, nhưng các thư viện lập trình của Điện toán đám mây vẫn còn mang tính độc quyền, chưa được chuẩn hóa theo một qui tắc nhất định. Do đó khi một khách hàng viết một ứng dụng trên một nền tảng do một nhà cung cấp dịch vụ thì ứng dụng đó sẽ chỉ được sử dụng trên các dịch đó, nếu đem ứng dụng đó qua một nền tảng khác do một nhà cung cấp dịch vụ khác cung cấp thì có thể không chạy được. Điều này dẫn đến người sử dụng phụ thuộc vào nhà cung cấp dịch vụ.
Bảo mật và kiểm tra dữ liệu: Hiện nay vấn đề bảo mật dữ liệu trên đám mây vẫn chưa có câu trả lời thuyết phục cho người dùng. Do đó, các dữ liệu mang tính sống còn của các công ty thường sẽ không được cho lên đám mây để lưu trữ, các dữ liệu được đưa lên đám mây thường là các loại dữ liệu thông thường, có khả năng truy xuất cao. Hiện nay có một giải pháp khả thi là người dùng dịch vụ đám mây sẽ phải mã hóa dữ liệu trước khi đưa chúng lên đám mây, và khi muốn sử dụng dữ liệu này thì bắt buộc phải thực hiện công đoạn giải mã dữ liệu trên máy cục bộ. Việc mã hóa dữ liệu trước khi đưa lên đám mây sẽ bảo mật hơn so với đem dữ liệu lên đám mây mà không có mã hóa, mô hình này đã có những hiệu quả nhất định và đang là giải pháp được các công ty lựa chọn khi sử dụng điện toán đám mây. Một giải pháp khác là lưu các thông tin hoạt động của hệ thống (log file) nhằm theo dõi và quản lý nguồn dữ liệu tốt hơn, việc này cho phép người dùng nắm được các can thiệp không mong muốn vào nguồn dữ liệu gây ra bởi các tác nhân trong và ngoài hệ thống để có các biện pháp xử lý kịp thời, nhằm bảo vệ nguồn dữ liệu một cách tốt hơn. Việc bảo mật dữ liệu ngoài các vấn đề về kỹ thuật thì nó còn liên quan đến các vấn đề khác như con người, các đạo luật… Bằng
việc đưa các điều khoản bảo mật và sử dụng các điều luật bảo vệ người sử dụng dịch vụ đám mây khi họ đưa dữ liệu của mình lưu trữ trên đám mây, sẽ khiến cho các nhà cung cấp dịch vụ phải bảo đảm dữ liệu của khách hàng không bị rò rỉ ra bên ngoài.
Hiện tượng thắt cổ chai trong việc truyền dữ liệu: Một đặc điểm của ứng dụng điện toán đám mây là dữ liệu hệ thống sẽ tăng dần theo thời gian sử dụng. Bên cạnh đó, các dữ liệu được lưu trữ phân tán trên nhiều máy chủ khác nhau. Việc vận chuyển dữ liệu cung cấp cho hệ thống sẽ là một vấn đề cần được tính đến khi sử dụng các dịch vụ đám mây.
Hình 2.5: Hiện tượng thắt cổ chai trong ứng dụng Google App Engine khi có nhiều truy cập đến tại cùng thời điểm
Khó tiên đoán trong hiệu suất thực thi của máy tính: Công nghệ điện toán đám mây phát triển dựa trên công nghệ ảo hóa, vì vậy, sẽ rất khó cho nhà phát triển đánh giá chính xác hiệu suất thực thi của máy tính. Ngoài ra, các máy chủ trong hệ thống cung cấp dịch vụ trên đám mây thường phân tán về mặt địa lý, việc này tạo lợi thế cho nhà cung cấp dịch vụ có thể tăng khả năng cung cấp hệ thống dịch vụ, tuy nhiên, việc giao tiếp vào ra (IO) của các máy chủ phân tán sẽ đưa ra nhiều vấn đề về hiệu suất thực thi.
2.3.4. Dịch vụ điện toán đám mây Google App Engine
Google App Engine (thường được gọi tắt là GAE hoặc App Engine) là nền tảng PaaS (Platform as a Service ) được Google cung cấp nhằm phát triển các ứng dụng web và được lưu trữ tại Trung tâm quản lý dữ liệu Google (Google-managed data center). Các ứng dụng được đóng gói và chạy trên các máy chủ.
Google App Engine cho phép người dùng chạy các ứng dụng web trên nền tảng kiến trúc Google. Các ứng dụng App Engine được xây dựng và quản lý một cách dễ dàng. Với App Engine, không cần phải bào trì máy chủ, người dùng upload các ứng dụng và nó luôn sẵn sàng phục vụ.
App Engine tự động tổng hợp yêu cầu cho các ứng dụng như: tự động tổng hợp các yêu cầu của ứng dụng, tự động xác định vị trí các tài nguyên cần thiết để ứng dụng có thể đáp ứng các yêu cầu người dùng.
Người dùng có thể sử dụng domain được cung cấp bởi Google Apps hoặc sử dụng domain riêng cho các ứng dụng của mình. Các ứng dụng có thể được chia sẻ rộng rãi hoặc giới hạn cho một nhóm người dùng nhất định.
Khi sử dụng, Google App Engine miễn phí sử dụng tài nguyên, chỉ tính phí băng thông, mở rộng lưu trữ. Hay nói cách khác, người dùng chỉ phải trả phí cho những tài nguyên sử dụng. Không có phí thuê bao hay các khoản phụ phí khác. Các tài nguyên được sử dụng như dung lượng lưu trữ, băng thông… đều được quản lý sử dụng với hiệu quả tối đa cho người dùng.
Môi trường ứng dụng:
App Engine cung cấp môi trường cho phép xây dựng ứng dụng đơn giản nhưng hoạt động có độ tin cậy cao. Các đặc điểm của môi trường ứng dụng App Engine:
Lưu trữ tin cậy hỗ trợ các truy vấn, sắp xếp.
Dịch vụ dynamic web, được hỗ trợ đầy đủ các công nghệ web hiện đại.
Tự động điều chỉnh cân bằng tải nhằm tạo hiệu suất phục vụ cao nhất.
API hỗ trợ xác thực người dùng và gửi thư điện tử bằng tài khoản Google.
Bộ giả lập hoàn chỉnh hỗ trợ cho người dùng có thể phát triển ứng dụng và thử nghiệm trong môi trường ảo trên máy tính trước khi đưa lên mạng.
Hỗ trợ các yêu cầu nằm ngoài giới hạn các web request.
Hỗ trợ lịch trình hoạt động các tác vụ theo thời gian tự động.
RunTimes và Frameworks:
Hiện nay, Google App Engine hỗ trợ lập trình bằng ngôn ngữ Python, Java.
Python web framework đã hoạt động trên Google App Engine bằng cách tích hợp GAE vào Django, CherryPy, Pylons…
Google App Engines hỗ trợ lập trình ứng dụng bằng ngôn ngữ Java. Với công nghệ lõi là servlet 2.5 technology được dùng trên web server mã nguồn mở
Jetty Web Server, đi kèm với một số công nghệ như JSP (Java Scripting Preprocessor).
Hỗ trợ và độ tin cậy
Thời gian hoạt động của các ứng dụng là 99.95%
Giới hạn sử dụng
Google App Engine cần phải có tài khoản Google để kích hoạt. Mỗi tài khoản cho phép đăng ký tối đa 10 ứng dụng. Giới hạn này có thể thay đổi theo chính sách của Google và đội ngũ kỹ thuật của Google.
Google App Engine cũng đặt ra giới hạn cho các ứng dụng miễn phí.
Quota Limit
Time per request 60 sec per normal request, 10 minutes for tasks, unlimited for backends
HTTP response size 32 MB Datastore item size 1 MB Application code size 150 MB
Bảng 2.1: Bảng mô tả giới hạn sử dụng của một ứng dụng GAE miễn phí
Free Quota
Google App Engine có các chính sách hỗ trợ những người dùng mới. Khi mới bắt đầu sử dụng dịch vụ, người sử dụng sẽ không phải trả bất cứ chi phí nào trong một giới hạn cho phép gọi là free quota.
Quota Limit (per day)
Instance-hours 28 hours
Emails 100 (5000 admin emails)
Bandwidth in Unlimited
Bandwidth out 1 GB
Datastore 1 GB
Datastore Operations 50k
XMPP API 10k stanzas
Channel API 100 channels opened Conversion API 100 conversions URLFetch API calls per day 657,000
Bảng 2.2: Bảng mô tả free quota của một ứng dụng GAE miễn phí
2.3.4. Mô hình công nghệ cho việc lưu trữ dữ liệu đa phương tiện trên đám mây mây
Trên phương diện lập trình, Google App Engine (GAE) cung cấp nhiều lựa chọn cho phép người dùng sử dụng để lưu trữ dữ liệu:
Google Cloud DataStore Google Cloud SQL Google Cloud Storage
Google Cloud DataStore
Google Cloud DataStore cung cấp một bộ công cụ và các thư viện phía client cho phép truy cập và quản lý Google Cloud DataStore từ các client chạy trên Google Cloud Compute Engine hay ở một nơi nào đó. Nó cung cấp API dựa trên RPC (Remote Procedure Call) được cung cấp bởi các dịch vụ giống như Google cung cấp cho Google Maps, YouTube, và Google Apps API.
Cloud DataStore là một kiểu datastore không lược đồ và hoàn toàn được quản lý để lưu trữ dữ liệu không có quan hệ. Cloud DataStore tự động mở rộng cho người dùng và hỗ trợ các giao dịch cũng như các truy vấn một cách mạnh mẽ.
Cloud DataStore đưa ra một giao diện HTTP truy cập tới cơ sở dữ liệu cung cấp: - Các giao dịch ACID (Atomic, Consistency, Isolution, Durability)
- Tính sẵn sàng cao cho việc đọc và ghi - Thống nhật cho việc đọc và truy vấn
- Thống nhất cuối cùng cho tất cả các truy vấn khác
- Mỗi thể hiện của DataStore hoàn toàn được quản lý bởi kiến trúc của Google:
- Không có thời gian chết
- Tự động mở rộng để xử lý việc tăng dung lượng - Được giám sát bởi các kỹ sử của Google
Các khái niệm cơ bản trong DataStore
Không giống như các cơ sở dữ liệu quan hệ truyền thống, DataStore sử dụng kiến trúc phân tán để tự động quản lý và mở rộng đối với các tập dữ liệu rất lớn. Mặc dù DataStore có rất nhiều đặc tính tương tự như các cơ sở dữ liệu truyền thống nhưng nó có điểm khác đó là cách mô tả các quan hệ giữa các đối tượng dữ liệu.
Các đối tượng dữ liệu trong DataStore được gọi là các thực thể (các entities). Một thực thể có một hay nhiều thuộc tính (properties), mỗi thuộc tính có thể có nhiều giá trị (values). Giá trị của các thuộc tính có thể là một trong nhiều kiểu dữ liệu như: integer, floating-point, string, date, binary.
Mỗi thực thể DataStore thuộc về một kiểu (kind) riêng dùng để phân loại các thực thể cho mục đích truy vấn, ví dụ, một ứng dụng quản lý tài nguyên con người có thể biểu diễn mỗi nhân viên tại một công ty bằng một thực thể có kiểu là Employee. Hơn nữa, mỗi thực thể có một khóa của riêng nó để định danh duy nhất cho thực thể đó. Khóa bao gồm các thành phần sau:
- Kiểu của thực thể
- Định danh (identifier), có thể là chuỗi tên khóa hoặc một ID ở dạng integer - Một ancestor-path tùy chọn chỉ ra vị trí của thực thể trong sự phân cấp
DataStore
Identifier được gán cho thực thể khi nó được tạo ra. Nó sẽ gắn liền với thực thể và không thể thay đổi.
Các thực thể trong DataStore tạo thành một không gian cấu trúc phân cấp tương tự như cấu trúc thư mục của hệ thống tập tin. Có thể tùy chọn chỉ định một thực thể là