Cloud computing - hạ tầng và ứng dụng Tính toán và lưu trữ dạng “đám mây” chuyển các tài nguyên vật lý (như bộ vi xử lý và thiết bị lưu trữ) thành các tài nguyên mở rộng được và chia sẻ được trên Internet (tính toán và lưu trữ dưới dạng các “dịch vụ”). Mặc dù không phải là một khái niệm mới nhưng ảo hóa (virtualization) khiến cloud computing trở nên dễ mở rộng và hiệu quả hơn nhiều thông qua việc chia sẻ các hệ vật lý với sự ảo hóa server. Cloud computing cho phép người dùng tiếp cận đến các tài nguyên tính toán và lưu trữ khổng lồ mà không cần biết chúng ở đâu và được cấu hình như thế nào. Trong cloud computing Linux đóng một vai trò to lớn. Ngày nay bạn khó có thể đọc một Website kỹ thuật nào mà lại không nhắc đến cloud computing. Cloud computing không gì khác chính là việc cung cấp các tài nguyên tính toán (máy tính và phương tiện lưu trữ) như là một dịch vụ. Cùng với đó là khả năng mở rộng các máy tính và phương tiện lưu trữ theo một cách đơn giản và “trong suốt”. Tất cả các điều này tương tự như ý tưởng của utility computing , trong đó các tài nguyên tính toán được xem như các dịch vụ “đo” được, chẳng hạn như trong các tiện ích truyền thống (điện, nước). Điều khác biệt chính là các công nghệ đã có sẽ kết hợp cùng nhau để biến cloud computing thành hiện thực. Một trong nhưng xý tưởng quan trọng nhất của cloud computing 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ột server 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 server quá 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ột server mới,ít tải hơn. Từ góc nhìn bên ngoài, cloud computing đơn giản chỉ là việc di trú tài nguyên tính toá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ài nguyê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ó. (xem hình 1) H1 : Tính toán “đám mây” di trú tài nguyên trên Internet Nhưng tại sao bạn lại sẵn sàng từ bỏ quyền kiểm soát tài nguyên của mình và cho phép chúng tồn tại ảo trong “đám mây” ? Có nhiều lý do nhưng theo tôi quan trọng nhất là tính dễ mở rộng và chi phí. Ưu điểm mới của cloud computing là khả năng ảo hóa và chia sẻ tài nguyên giữa các ứng dụng. Hình 2 cho thấy một ví dụ. H2 : Ảo hóa và sử dụng tài nguyên [/b] Ở đâ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ên server 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 ít khô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). Nhưng vẫn có các trả giá và cloud computing có nhược điểm của nó (sẽ nói đến sau) Bên trong cloud computing 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ác tầng định nghĩa mức dịch vụ được cung cấp H3 : Các tầng của tính toán “đám mây” Tầng thấp nhất là Hạ tầng (Hạ tầng như một dịch vụ - IaaS). IaaS là việc cho thuê 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êng cho lưu trữ và truy cập Internet. Về cơ bản, đó là khả năng cho thuê máy tính hay data center 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 nưh 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ên biệ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 ứ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 của hình 3 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ập trung sang chạy trên máy tính cục bộ. Dưới dạng dịch vụ “đo” được, SaaS cho phép bạn thuê một ứng dụng và chỉ trả tiền cho thời gian sử dụng. Trên đây là cái nhìn sơ lược về cloud computing , bỏ qua một số khía cạnh như là Dữ liệu như một dịch vụ (DaaS ) cho phép người dùng trả tiền cho dung lượng lưu trữ và băng thông truy cập. Các dịch vụ “đám mây” cũng đang nối lên, chúng vừa có cơ chế nội để tương kết (interoperability) vừa cung cấp các API cho bên ngoài. Toàn cảnh về cloud computing Trong mấy tháng gần đây, có sự bùng nổ về đầu tư cho cloud computing và các hạ tầng liên quan. Các đầu tư lớn cho thấy nhu cầu ảo hóa các tài nguyên trong “đám mây”. Năm vừa qua chứng kiến nhiều dịch vụ mới (như hình 4) Vai trò Linux và mã nguồn mở trong “đám mây” 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ận trướ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 thuê 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í theo theo 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ần mềm này có thể ở dạng Web services (các dịch vụ dùng bởi ứng dụng cục bộ) hay các ứng dụng từ xa mà có thể theo dõi kết quả thông qua trình duyệt web. Một ví dụ đó là Google Apps. Còn việc chạy ứng dụng từ xa thường dựa trên các application server (là một software framework cung cấp các API – như quản lý giao dịch hay truy cập CSDL). Lấy ví dụ như Red Hat JBoss Application Server, Apache Geronimo, và IBM® WebSphere® Application Server. 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ều Server (ả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ên biệt (như là Apache và MySQL cho ứng dụng web). Trong một vài trường hợp, các nề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ầu người dùng. Một ví dụ thú vị của PaaS là Google App Engine. App Engine là một dịch vụ cho phép bạn triển khai ứng dụng web của mình trên kiến trúc rất khả mở của Google. App Engine cung 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. Một ví dụ khác về PaaS là 10gen, nó vừa là một nền tảng “đám mây” vừa là một gói phần mềm nguồn mở cho phép bạn download để tạo ra “đám mây” của riêng mình. Software stack của nó cũng giống như App Engine nhưng cũng có vài điểm khác : hỗ trợ các ngôn ngữ Java,Python, Ruby. Nền tảng của nó cũng dùng khái niệm sandbox để cô lập các ứng dụng và cung cấp một môi trường đáng tin cậy trên nhiều máy tính (sử dụng Linux). 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ười dùng tự đưa ra VM image của mình. IaaS là dạng “thô” nhất của “computing as a service”. Nhà cung cấp IaaS thương mại nối tiếng nhất là Amazon Elastic Compute Cloud (EC2). Trong EC2 , bạn có thể chỉ định máy ảo (VM) đặc biệt của mình và triển khai các ứng dụng trên đó hay là cung cấp VM iamge 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ới Xen dùng cho ảo hóa hệ điều hành. Eucalyptus được phát triển tại đại học California cho 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 Machine (KVM). Nhưng không giống các giải pháp IaaS thuần túy khác, Enomalism cung 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ưng tậ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 cung cấ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ăng giống như CSDL Google BigTable và Hadoop Distributed File System (HDFS) đưa ra chức năng giống như Google File System (GFS) Các vấn đề và thử thách Các vấn đề của tính toán “đám mây” trở nên rõ ràng khi mà tính riêng tư và bảo mật là 2 trong số những vấn đề quan trọng nhất. Tính riêng tư có thể dựa và mã hóa nhưng vẫn cần được chú ý khi chọn dịch vụ tính toán đám mây. Ngay cả e-Commerce cũng bị hoài nghi khi Web bắt đầu phát triển. Trên quy mô toàn cầu, hàng nghìn tỉ đôla của các giao dịch thương mại điện tử diễn ra hằng năm vì thế tính toán “đám mây” hưởng lợi từ mọi công nghệ đã có (như SSL) để khiến cho Web ngày nay trở nên an toàn. . Cloud computing - hạ tầng và ứng dụng Tính toán và lưu trữ dạng “đám mây” chuyển các tài nguyên vật lý (như bộ vi xử lý và thiết bị lưu trữ) thành các tài nguyên mở rộng được và chia. cấp H3 : Các tầng của tính toán “đám mây” Tầng thấp nhất là Hạ tầng (Hạ tầng như một dịch vụ - IaaS). IaaS là việc cho thuê 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. tài nguyên giữa các ứng dụng. Hình 2 cho thấy một ví dụ. H2 : Ảo hóa và sử dụng tài nguyên [/b] Ở đâ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ên server của