Saturday, January 31, 2009

Cloud Computing basics

=== Needs ===

Nguyên nhân cho sự ra đời của Cloud Computing :

- Mỗi doanh nghiệp làm business bao giờ cũng cần xây dựng một hệ thống thông tin cho riêng mình, thông thường bao gồm các hệ thống: web pages, payroll, email management, CRM,... Để thiết kế và duy trì hệ thống này, các doanh nghiệp phải chi ra một số tiền không nhỏ, nhất là tiền lương trả cho DBAs. Với các doanh nghiệp nhỏ thì đây là một khoản đầu tư đáng kể. Có một cách tiếp cận khác là thay vì tự xây dựng một hệ thống như thế cho riêng mình thì việc outsource bằng cách thuê lại của đơn vị khác để giảm chi phí build và management.

- Khi mà internet bandwidth không còn là vấn đề nữa thì các ông lớn như MS, IBM, Google, Yahoo,... ngửi thấy mối hàng béo bở này liền bắt tay xây dựng một hệ thống có thể cung cấp cho khách hàng tất cả các loại dịch vụ trên thông qua các web services.




=== Problems ===

Khi xây dựng một thống centralized để phục vụ cho hệ thống trên thì dễ thấy các vấn đề nổi bật sẽ xuất hiện là:

- Cần phải lưu trữ một khối lượng dữ liệu lớn đến rất lớn.

- Dữ liệu đa định dạng, phân tán

- Cần phải có một hệ thống tính toán đủ mạnh để có thể xử lý hàng ngàn ứng dụng (phép toán) 1 lúc cho 1 lượng dữ liệu khổng lồ .




=== Solutions===

Cloud Computing ra đời để giải quyết 2 vấn đề này:

- Dữ liệu được lưu trữ ở các Data Center khổng lồ. Mỗi một công ty lớn như MS, Google có hàng chục data center như vậy nằm rải rác khắp nước Mỹ và các nơi trên thế giới. Vấn đề chính cho các data center này chủ yếu là công suất tiêu thụ và sự tản nhiệt. Vì thế gần đây các data centers thường được xây dựng ở gần các con sông lớn (như dọc sống Colorado) .

- Còn vấn đề về computing power thì có 2 giải pháp: 1 là mua các supercomputer từ Gray, Sun, Teradata,.. và 2 là dùng hệ thống tính toán song song với các commodity hardware. Tất nhiên cách thứ 2 là cách rẻ tiền nên được ưa chuộng hơn. Tuy nhiên, cách này yêu cầu có một cách phân chia công việc, scheduling và failure management một cách hợp lý. Có rất nhiều mô hình tính toán song song được phát triển, nhưng gần đây mô hình MapReduce của Google thu hút được nhiều sự chú ý về tính đơn giản và hiệu quả. Hadoop là một giải pháp open source của Apache Foundation (xuất phát từ Yahoo) lấy ý tưởng từ cái MapReduce này. Hiện tại MapReduce và Hadoop đang là những keyword khá hot.


- Ngoài ra thì để quản lý hệ thống cơ sở dữ liệu khổng lồ này cần có cách lưu trữ, truy nhập hiệu quả mà các DBMS thông thường không đáp ứng được.

+ MS đang chuẩn bị cho ra đời một hệ thống như thế gọi là CloudDB và 1 hệ điều hành tên là Windows Cloud OS. Yahoo thì chưa có CC theo đúng nghĩa, vì nó chỉ có các computing cloud chạy được mỗi app của chúng nó, còn không open và không customize được. Cái này gần với Sever Clustering hơn là Cloud Computing.

+ IBM có Cloud Computing trên nền Linux và AIX, gọi là Blue Cloud, nhưng lại bị giới hạn bởi phạm vi địa lý và computing resrource.

+ Google có App Cloud, nhưng chạy được mỗi Python App, không có database và không cài thêm được app.

+ Sun và HP cũng có Cloud Computing offering nhưng còn trong giai đoạn thử nghiệm bởi tính ứng dụng còn ở dạng "tiềm năng".

+ Hiện tại chỉ có Cloud Computing của Amazon (EC2) là được đánh giá phát triển đáng kể nhất. Amazon có lợi thế lớn là có một sever farm khổng lồ ở hầu hết mọi zone trên thế giới, các team dev hiện cũng đang sử dụng Amazon Web Services để phát triển phần mềm và deploy phần mềm. Amazon S3 cung cấp dịch vụ lưu trữ với unlimited space, có thể lưu trữ tại bất kỳ vùng địa lý nào, ví dụ như Nam Mỹ, Bắc Mỹ, Châu Âu, Châu Phi, Châu Á ..., nên hạn chế được sự chậm trễ do khoảng cách. Nếu như một công ty nào đó có nhiều chi nhánh trên thế giới, có thể dùng nhiều S3 để lưu trữ.


Amazon EC2 cho phép người dùng chọn bất kỳ hệ điều hành nào, ví dụ như Linux (Fedora, Ubuntu ...), BSD. Hình như giờ mới có cả Window server. Mỗi EC2 instance là một virtual server, có RAM nhiều hay ít, một hay nhiều processor tùy theo loại của instance, và người dùng có thể dùng EC2 tools hoặc SSH vào, cài bất kỳ software nào mình thích lên, như là một computer bình thường. Hoặc có thể setup một EC2 instance image, rồi khi cần có thể chạy một loạt server có cấu hình giống hệt như cái instance image đấy, số lượng server là bao nhiêu là tùy ở mình.


Amazon Persistence Service cho phép người dùng sử dụng như một đĩa cứng ảo gắn vào máy tính ảo EC2.


Theo đánh giá của 1 số dev đang phát triển bằng Amazone Web services, Amazon WS rất an toàn, vì nó dựa trên RESTful Web Services, SSL và độc đáo hơn nữa là time-based URL, nghĩa là URL để download hay upload hay truy cập site trong AWS có thể expire sau một thời gian nhất định.




(theo IBM developerWorksblog Alibobo)

No comments: