86
B GIO DC V ĐO TO ĐI HỌC Đ NẴNG ĐỀ TI: TÌM HIỂU ĐIỆN TON ĐM MÂY, XÂY DỰNG B CÔNG C VĂN PHÒNG Giáo viên hướng dẫn: PGS.TS. Lê Tiến Thường Học viên thực hiện : Đinh Thị Hồng Nguyên Lê Anh Vũ

Thuat toan dam may

Embed Size (px)

DESCRIPTION

thuat toan dam may

Citation preview

Page 1: Thuat toan dam may

BÔ GIAO DUC VA ĐAO TAO

ĐAI HỌC ĐA NẴNG

ĐỀ TAI: TÌM HIỂU ĐIỆN TOAN ĐAM MÂY, XÂY DỰNG BÔ CÔNG CU VĂN PHÒNG

Giáo viên hướng dẫn: PGS.TS. Lê Tiến Thường Học viên thực hiện : Đinh Thị Hồng Nguyên Lê Anh Vũ Lớp : Kỹ thuật điện tử - K23

Đà Nẵng, tháng 01 năm 2012

Page 2: Thuat toan dam may

Tìm hiểu điện toán đám mây, xây dựng bộ công cụ văn phòng PGS.TS.Lê Tiến Thường

MUC LUC1

CHƯƠNG 1................................................................................................. 31

MỞ ĐẦU – TỔNG QUAN VỀ ĐỀ TAI.....................................................31I. Đặt vấn đề............................................................................................................. 31

II. Mục đích và ý nghĩa.......................................................................................... 32

III. Các nhiệm vụ nghiên cứu và thực hiện..............................................................32

CHƯƠNG 2................................................................................................ 31

CƠ SỞ LÝ THUYẾT..................................................................................31I. Khái niệm về điện toán đám mây..........................................................................31

II. Các tính chất của điện toán đám mây................................................................32II.1. Tính tự phục vụ theo nhu cầu....................................................................32II.2. Tính truy suất diện rộng.............................................................................32II.3. Khả năng dùng chung tài nguyên...............................................................32II.4. Khả năng co dãn.......................................................................................... 3II.5. Khả năng điều tiết dịch vụ.........................................................................34

III. Các đặc điểm của điện toán đám mây................................................................34

IV. Các vấn đề có thể được giải quyết bởi điện toán đám mây và ưu nhược điểm của điện toán đám mây....................................................................................................... 35

IV.1. Các vấn đề có thể được giải quyết bởi điện toán đám mây.........................35IV.2. Các ưu, nhược điểm của điện toán đám mây..............................................36

V. Cấu trúc và các dịch vụ điện toán đám mây.......................................................38V.1. Cấu trúc của một đám mây điện toán.........................................................38V.2. Các dịch vụ triển khai trên một đám mây điện toán...................................39

VI. Các mô hình triển khai cloud Computing........................................................314VI.1. Các đám mây công cộng (Public cloud)...................................................314VI.2. Các đám mây riêng (Private cloud)..........................................................315VI.3. Các đám mây lai (Hybrid cloud ).............................................................317VI.4. Các đám mây cộng đồng (Community cloud)..........................................318

VII. So sánh mô hình Cloud Computing với mô hình Client – Server.....................319

VIII. So sánh Cloud Computing với Grids Computing.........................................320VIII.1. Mô hình thương mại (Business Model)................................................320VIII.2. Kiến trúc (Architecture).......................................................................321VIII.3. Quản lý tài nguyên (Resource Management)........................................323VIII.4. Mô hình lập trình (Programming Model).............................................326VIII.5. Mô hình ứng dụng (Application Model)..............................................326VIII.6. Mô hình bảo mật (Security Model)......................................................326

CHƯƠNG 3:................................................................................................ 31

MÔT SỐ GIẢI PHAP VA NỀN TẢNG ĐAM MÂY HIỆN TAI..............31

1

Page 2 Đ.T.Hồng Nguyên + L.AnhVũ

Page 3: Thuat toan dam may

Tìm hiểu điện toán đám mây, xây dựng bộ công cụ văn phòng PGS.TS.Lê Tiến Thường

I. Amazon Web Services..........................................................................................31I.1. Amazon Elastic Compute Cloud (EC2).....................................................32I.2. Amazon Simple DB.....................................................................................3I.3. Amazon Simple Storage Service (S3):.........................................................3I.4. Amazon Cloud Font:.................................................................................34I.5. Amazon Simple Queue Service:................................................................34

II. Google App Engine........................................................................................... 35II.1. Giới thiệu:................................................................................................. 35II.2. Các thành phần chính của Google App Engine:.........................................36II.3. Một số Data API của Google App.............................................................37

III. So sánh một số nền tảng cung cấp dịch vụ điện toán đám mây..........................39

IV. Một số kết luận dựa trên các kết quả so sánh...................................................310

V. Triển khai một demo trên Google App Engine................................................310V.1. Một số điểm lưu ý khi xây dựng một ứng dụng trên nền Google App Engine

310V.2. Quy trình phát triển một ứng dụng trên Google App Engine....................311V.3. Demo ứng dụng trên Google App Engine................................................313

CHƯƠNG 4:..............................................................................................319

PHAT TRIỂN ỨNG DUNG VĂN PHÒNG TRÊN WEB.......................319I. Giới thiệu các chức năng.....................................................................................320

II. Cấu trúc mã nguồn..........................................................................................325

III. Chức năng một số file mã nguồn.....................................................................326III.1. Padevents.js : Ghi lại các sự kiện xảy ra trên “Pad” :...............................326III.2. Model.js: Các phương thức cho phép truy cập đến 1 đối tượng “pad”, kiểm tra sự tồn tại của pad và tạo ra 1 pad nếu nó chưa có sẵn..........................................326III.3. Chatarchive.js : Xử lý các thao tác khi các client chat với nhau...............327III.4. Collab_server.js: Bao gồm các phương thức xác thực User (thông qua userId), lấy thông tin phiên bản (pad revision), áp dụng các thay đổi do user tạo ra trên pad, cập nhật các thay đổi do user tạo ra tới tất cả các client đang sử dụng cùng 1 pad.327III.5. Pad_control.js:Kiểm soát các thông tin về các tác động trên pad , trả về default pad text : đoạn văn bản xuất hiện khi tạo mới pad, cho phép gán các thông tin như tên user , màu chữ ứng với từng user, render một pad, render saverevision….329

CHƯƠNG 5:..............................................................................................331

KẾT LUẬN VA HƯỚNG PHAT TRIỂN CỦA ĐỀ TAI........................331I. Kết luận............................................................................................................... 331

II. Hướng phát triển của đề tài..............................................................................331

Page 3 Đ.T.Hồng Nguyên + L.AnhVũ

Page 4: Thuat toan dam may

CHƯƠNG 1: MỞ ĐẦU – TỔNG QUAN VỀ ĐỀ TAI

1. Đặt vấn đềNgày nay, đối với các công ty, doanh nghiệp, việc quản lý tốt, hiệu quả dữ liệu của riêng công ty cũng như dữ liệu khách hàng, đối tác là một trong những bài toán được ưu tiên hàng đầu và đang không ngừng gây khó khăn cho họ. Để có thể quản lý được nguồn dữ liệu đó, ban đầu các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chi phí như chi phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa, … Ngoài ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị; phải kiểm soát việc bảo mật dữ liệu cũng như tính sẵn sàng cao của dữ liệu.

Từ một bài toán điển hình như vậy, chúng ta thấy được rằng nếu có một nơi tin cậy giúp các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không còn quan tâm đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào công việc kinh doanh của họ thì sẽ mang lại cho họ hiệu quả và lợi nhuận ngày càng cao hơn.

Thuật ngữ “cloud computing” ra đời bắt nguồn từ một trong những hoàn cảnh như vậy.

Thuật ngữ “cloud computing” còn được bắt nguồn từ ý tưởng đưa tất cả mọi thứ như dữ liệu, phần mềm, tính toán, … lên trên mạng Internet. Chúng ta sẽ không còn trông thấy các máy PC, máy chủ của riêng các doanh nghiệp để lưu trữ dữ liệu, phần mềm nữa mà chỉ còn một số các “máy chủ ảo” tập trung ở trên mạng. Các “máy chủ ảo” sẽ cung cấp các dịch vụ giúp cho doanh nghiệp có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trả chi phí cho lượng sử dụng dịch vụ của họ, mà không cần phải đầu tư nhiều vào cơ sở hạ tầng cũng như quan tâm nhiều đến công nghệ. Xu hướng này sẽ giúp nhiều cho các công ty, doanh nghiệp vừa và nhỏ mà không có cơ sở hạ tầng mạng, máy chủ để lưu trữ, quản lý dữ liệu tốt.

Xét trên tình hình hiện tại, thời gian vừa qua, các hãng công nghệ lớn trên thế giới như Microsoft, Google, IBM, Amazon, Sun,.. liên tục giới thiệu và tung ra các giải pháp, công nghệ và nền tảng liên quan tới lĩnh vực ảo hóa và điện toán đám mây. Tiêu biểu như Google ngoài các ứng dụng đám mây vốn từ trước đến nay vốn quen thuộc của hãng như Gmail, Google Docs,.. thời gian gần đây, hãng cũng liên tục đưa ra thị trường các sản phẩm phần cứng cũng như phần mềm chạy trên một hệ điều hành mới được xem là tương lai của công nghiệp điện toán đó là hệ điều hành đám mây Chrome OS. Microsoft cũng không kém cạnh khi hãng cũng vừa giới thiệu sản phẩm hệ điều hành đám mây Windows Azure. Bên cạnh đó còn rất nhiều các hãng khác cũng tham gia vào lĩnh vực mới mẻ này.

Tất cả những điều đó cho thấy, điện toán đám mây là một xu hướng tất yếu của sự phát triển công nghệ thông tin và sẽ là một trong những công cụ hiệu quả giúp cho các

Tên tác giả, LỚP XXX 1

Page 5: Thuat toan dam may

Tên đề tài ở đây

cá nhân, doanh nghiệp khai thác hiểu hiệu quả hơn nữa ứng dụng CNTT trong môi trường cạnh tranh hiện tại và tương lai.

Trở lại với thực tiễn tại Việt Nam,. Nnhững năm trở lại đây, người dùng đã và đang quen thuộc khai thác các công cụ dựa trên nền tảng đám mây, ví dụ như các dịch vụ thư điện tử nền tảng web (Google Mail, Yahoo Mail, Windows Live Mail,..) hay các công cụ chia sẻ video (Youtube), các ứng dụng thao tác với hình ảnh trên web (Google Picasa, Flickr, Photoshop Express,…), các công cụ xử lý và lưu trữ văn bản online (Google Docs, Yoho,..), hay các dịch vụ đồng bộ hóa file trên mạng (ASUS Webstore, Dropbox,..) thậm chí nhiều hệ điều hành web cũng đã ra đời và được một số ít người dùng quan tâm đến công nghệ sử dụng. Điều này chứng tỏ rằng công nghệ điện toán đám mây đã và đang chiếm một vai trò quan trọng trong cuộc sống hàng ngày của mỗi người dân Việt Nam. Và đặc biệt, chính phủ và nhà nước cũng đã có những kế hoạch, chính sách phát triển và sử dụng điện toán đám mây như là một phần của chính phủ điện tử trong tương lai.

Thấy được những thực tiễn đó, kết hợp với những kiến thức đã thu nhận được trong thời gian vừa qua, nhóm chúng em mạnh dạnđã chọn và thực hiện nghiên cứu đề tài: “Tìm hiểu về điện toán đám mây và xây dựng bộ công cụ văn phòng trực tuyến”

2. Mục đích và ý nghĩaMục tiêu của đề tài nhằm giải quyết các nhiệm vụ sau:

- Tìm hiểu được mô hình hoạt động của điện toán đám mây.

- Nghiên cứu, so sánh một số nền tảng, giải pháp ảo hóa và đám mây phổ biến hiện tại. Từ đó rút ra một số kết luận và thử xây dựng một ứng dụng demo đơn giản chạy trên một nền tảng được chọn.

- Xây dựng được một bộ công cụ văn phòng chạy trên nền web, cho phép nhiều người cùng tham gia tương tác soạn thảo. Sẵn sàng đưa lên đám mây.

3. Các nhiệm vụ nghiên cứu và thực hiệnĐể thực hiện được các mục đích trên, nhóm thực hiện đề tài giải quyết những

nhiệm vụ sau:

- Nghiên cứu và đưa ra được mô hình và nguyên tắc hoạt động của các đám mây hiện tại.

- Nghiên cứu, phân tích và tổng hợp về một số nền tảng cũng như giải pháp đóng và mở hiện nay của các hãng công nghệ lớn và phổ biến về điện toán đám mây và rút ra được kết luận.

- Xây dựng được một ứng dụng demo đơn giản, chạy trên nền tảng mở và miễn phí để làm rõ được hoạt động của một ứng dụng đám mây.

2

Page 6: Thuat toan dam may

Tên đề tài ở đây

- Nghiên cứu, xây dựng được một ứng dụng văn phòng thỏa mãn các yêu cầu cho phép nhiều người cùng tương tác một lúc trên 1 văn bản và sẵn sàng đưa lên đám mây để chạy.

Các chương tiếp theo của đề tài sẽ lần lượt giải quyết các nhiệm vụ cụ thể ở trên.

Chương 2: Giới thiệu một cách tổng quát nhất về công nghệ điện toán đám mây, các công nghệ ảo hóa, mô hình và nguyên tắc hoạt động của một đám mây điện toán. Đồng thời phân biệt mô hình Cloud với mô hình Client – Server thường gặp cũng như chỉ ra điểm khác biệt giữa điện toán đám mây và điện toán lưới (tính toán song song).

Chương 3: Nghiên cứu và đưa ra so sánh một số giải pháp và nền tảng đám mây phổ biến hiện nay của Google, Amazone, Microsoft. Từ các so sánh đó đưa ra một số kết luận và xây dựng thử một ứng dụng demo chạy trên đám mây của Google để thấy rõ nguyên tắc hoạt động của đám mây đó.

Chương 4: Trình bày về xây dựng một ứng dụng văn phòng trên nền web cho phép nhiều người cùng tương tác một lúc trên cùng một văn bản.

Chương 5: Đánh giá và kết luận những kết quả đạt được cũng như đề ra những phương hướng mở rộng và phát triển đề tài, những nhiệm vụ cần giải quyết tiếp theo.

3

Page 7: Thuat toan dam may

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

1. Khái niệm về điện toán đám mâyNói về khái niệm ảo hóa (hay điện toán đám mây, tiếng Anh là Cloud Computing)

hiện nay tồn tại rất nhiều định nghĩa.

Theo Wikipedia: “Điện toán đám mây (cloud computing) là một mô hình điện toán có khả năng co giãn (scalable) linh động và các tài nguyên thường được ảo hóa được cung cấp như một dịch vụ trên mạng Internet”.

Theo Gartner (http://www.buildingthecloud.co.uk/) : “Một mô hình điện toán nơi mà khả năng mở rộng và linh hoạt về công nghệ thông tin được cung cấp như một dịch vụ cho nhiều khách hàng đang sử dụng các công nghệ trên Internet”.

Theo Ian Foster: “Một mô hình điện toán phân tán có tính co giãn lớn mà hướng theo co giãn về mặt kinh tế, là nơi chứa các sức mạnh tính toán, kho lưu trữ, các nền tảng (platform) và các dịch vụ được trực quan, ảo hóa và co giãn linh động, sẽ được phân phối theo nhu cầu cho các khách hàng bên ngoài thông qua Internet”.

Tuy có nhiều định nghĩa như vậy, nhưng tựu chung thì điện toán đám mây Cloud Computing là một hệ phân bố, cung cấp các dạng tài nguyên ảo dưới dạng dịch vụ một cách linh động theo nhu cầu của người dùng trên môi trường internet.

Hình 1: Mọi thứ đều tập trung vào đám mây

2. Các tính chất của điện toán đám mâyĐiện toán đám mây nói chung và các dịch vụ và giải pháp cũng như nền tảng chạy

trên nền điện toán đám mây có các tính chất sau:

Tên tác giả, LỚP XXX 1

Page 8: Thuat toan dam may

Tên đề tài ở đây

2.1 Tính tự phục vụ theo nhu cầu

Điện toán đám mây có thể được định nghĩa một cách đơn giản như là sự sử dụng tài nguyên tính toán có khả năng thay đổi theo nhu cầu được cung cấp giống như một dịch vụ từ bên ngoài với chi phí phải trả cho mỗi lần sử dụng. Bạn có thể truy cập đến bất kỳ tài nguyên nào tồn tại trong "đám mây (cloud)" tại bất kỳ thời điểm nào và từ bất kỳ đâu thông qua hệ thống Internet. Bạn không phải quan tâm xem làm cách nào các thứ đang được duy trì phía trong của đám mây.

Đám mây được đánh giá cao và sẵn sàng đáp ứng cho các nhu cầu cần thiết của ứng dụng của bạn. Điện toán đám mây cũng có thể được gọi là tính toán tiện ích hay là tính toán lưới (grid computing).

Điện toán đám mây là mô hình dịch chuyển trong cách thức làm thế nào chúng ta cung cấp kiến trúc và khả năng mở rộng của các ứng dụng. Trong quá khứ, các công ty thành công thường dành thời gian quý báu và nguồn lực xây dựng để xây dựng cơ sở hạ tầng.

2.2 Tính truy suất diện rộng

Như đã trình bày ở trên, người sử dụng các môi trường điện toán đám mây không cần thiết phải quan tâm đến nền tảng phía bên dưới. Mọi thứ được xem như trong suốt với người sử dụng và họ có thể truy cập vào mọi tài nguyên trên đám mây nếu được phép vào bất cứ lúc nào, bất cứ nơi đâu và trên bất cứ phương tiện nào cho phép.

2.3 Khả năng dùng chung tài nguyên

Để hiểu rõ hơn về khả năng dùng chung tài nguyên trên đám mây ta quan sát hình 2, mô tảcấu trúc đơn giản của một đám mây.

Trong hình ta thấy, để xây dựng một cơ sở hạ tầng phục vụ cho một đám mây, nhà cung cấp dịch vụ sử dụng rất nhiều những thiết bị phần cứng khác nhau, nhưng tất cả được sử dụng chung và thống nhất trên cơ sở của công nghệ ảo hóa (Virtual technology) để tạo ra một kiến trúc ảo hóa (Virtual Infrastructure) trên cơ sở đó xây dựng nên một đám mây cung cấp dịch vụ.

Các kiến trúc phần cứng này là trong suốt đối với người sủ dụng và mọi dịch vụ, mọi nền tảng triển khai trên 1 đám mây đều sủ dụng chung nguồn tài nguyên này.

2

Page 9: Thuat toan dam may

Tên đề tài ở đây

Hình 2: Mô hình một kiến trúc ảo hóa sử dụng để xây dựng một đám mây

2.4 Khả năng co dãn- Trong hầu hết các trường hợp thì cách tiếp cận tài nguyên mạng theo kiểu cũ

(cấp “cứng” một băng thông và dung lượng sử dụng nhất định trên server) thì

sẽ phát sinh những vấn đề sau:

Để lại một lượng lớn các tài nguyên tính toán không được sử dụng làm

tiêu tốn không gian trong các trung tâm dữ liệu lớn.

Bắt buộc một ai đó phải trông giữ các máy chủ.

Gắn liền với chi phí năng lượng.

- Với điện toán đám mây, các máy tính dư thừa có thể được đưa vào sử dụng và

được sinh lời bằng cách bán cho khách hàng. Sự chuyển đổi của việc tính toán

và cơ sở hạ tầng công nghệ thông tin vào một tiện ích, nó có tác dụng trong các

trường hợp hoặc một số mức độ cho phép. Điều đó mang ý nghĩa nỗ lực cạnh

tranh dựa trên ý tưởng hơn là dựa trên các tài nguyên tính toán.

- Các tài nguyên ứng dụng của bạn và các hệ thống công nghệ thông tin thì rất

cần thiết (để đáp ứng nhu cầu ngày càng lớn cho lưu trữ, cho tài nguyên tính

toán, cho các hệ thống nhắn tin và cho các cơ sở dữ liệu). Bạn có thể trả chi

phí hạ tầng cơ sở này cho nhà cung cấp nào mà cung cấp giá và dịch vụ tốt

3

Page 10: Thuat toan dam may

Tên đề tài ở đây

nhất. Đó là một ý tưởng đơn giản nhưng cuộc cách mạng về tư duy không phải

là hoàn toàn mới. Điều này bây giờ là đứng đầu trong các xu hướng công nghệ

hiện đại bởi vì môi trường điện toán đám mây được Amazon đưa ra đầu tiên.

2.5 Khả năng điều tiết dịch vụ

Chính nhờ khả năng co giãn để cấp phát một cách hợp lý nguồn tài nguyên dùng chung ở trên mà cách dịch vụ cũng nhờ đó được điều tiết sử dụng tài nguyên một cách chính xác và phù hợp.

Lấy ví dụ một đám mây cung cấp 2 dịch vụ là A và B. Tại một thời điểm, dịch vụ A được nhiều người sử dụng hơn dịch vụ B. Thì tại thời điểm đó đám mây sẽ tự động điều tiết để dịch vụ A được ưu tiên sử dụng nguồn tài nguyên dùng chung hơn so với dịch vụ B nhằm cung cấp dịch vụ một cách ổn định, tránh tình trạng nghẽn xảy ra trên dịch vụ A và dư thừa tài nguyên trên dịch vụ B. Điều này là hoàn toàn hợp lý và thông minh.

3. Các đặc điểm của điện toán đám mâyĐiện toán đám mây có các đặc điểm sau:

Nhanh chóng cải thiện với người dùng có khả năng cung cấp sẵn các tài nguyên cơ sở hạ tầng công nghệ một cách nhanh chóng và ít tốn kém.

Chi phí được giảm đáng kể và chi phí vốn đầu tư được chuyển sang hoạt động chi tiêu. Điều này làm giảm rào cản cho việc tiếp nhận, chẳng hạn như cơ sở hạ tầng được cung cấp bởi đối tác thứ 3 và không cần phải mua để dùng cho các tác vụ tính toán thực hiện 1 lần hay chuyên sâu mà không thường xuyên. Việc định giá dựa trên cơ sở tính toán theo nhu cầu thì tốt đối với những tùy chọn dựa trên việc sử dụng và các kỹ năng IT được đòi hỏi tối thiểu (hay không được đòi hỏi) cho việc thực thi.

Sự độc lập giữa thiết bị và vị trí làm cho người dùng có thể truy cập hệ thống bằng cách sử dụng trình duyệt web mà không quan tâm đến vị trí của họ hay thiết bị nào mà họ đang dùng, ví dụ như PC, mobile. Vì cơ sở hạ tầng off-site (được cung cấp bởi đối tác thứ 3) và được truy cập thông qua Internet, do đó người dùng có thể kết nối từ bất kỳ nơi nào.

Việc cho thuê nhiều để có thể chia sẻ tài nguyên và chi phí giữa một phạm vi lớn người dùng, cho phép:

o Tập trung hóa cơ sở hạ tầng trong các lĩnh vực với chi phí thấp hơn (chẳng hạn như bất động sản, điện, v.v.)

o Khả năng chịu tải nâng cao (người dùng không cần kỹ sư cho các mức tải cao nhất có thể).

4

Page 11: Thuat toan dam may

Tên đề tài ở đây

o Cải thiện việc sử dụng và hiệu quả cho các hệ thống mà thường chỉ 10-20% được sử dụng.

Độ tin cậy cải thiện thông qua việc sử dụng các site có nhiều dư thừa, làm nó thích hợp cho tính liên tục trong kinh doanh và khôi phục thất bại. Tuy nhiên, phần lớn các dịch vụ của cloud computing có những lúc thiếu hụt và người giám đốc kinh doanh, IT phải làm cho nó ít đi.

Tính co giãn linh động (“theo nhu cầu”) cung cấp tài nguyên trên một cơ sở mịn, tự bản thân dịch vụ và gần thời gian thực, không cần người dùng phải có kỹ sư cho chịu tải.

Hiệu suất hoạt động được quan sát và các kiến trúc nhất quán, kết nối lỏng lẽo được cấu trúc dùng web service như giao tiếp hệ thống.

Việc bảo mật cải thiện nhờ vào tập trung hóa dữ liệu, các tài nguyên chú trọng bảo mật, v.v… nhưng cũng nâng cao mối quan tâm về việc mất quyền điều khiển dữ liệu nhạy cảm. Bảo mật thường thì tốt hay tốt hơn các hệ thống truyền thống, một phần bởi các nhà cung cấp có thể dành nhiều nguồn lực cho việc giải quyết các vấn đề bảo mật mà nhiều khách hàng không có đủ chi phí để thực hiện. Các nhà cung cấp sẽ ghi nhớ (log) các truy cập, nhưng việc truy cập vào chính bản thân các audit log có thể khó khăn hay không thể.

4. Các vấn đề có thể được giải quyết bởi điện toán đám mây và ưu nhược điểm của điện toán đám mây

4.1 Các vấn đề có thể được giải quyết bởi điện toán đám mây

Cloud Computing ra đời để giải quyết các vấn đề sau:

4.1.1 Vấn đề về lưu trữ dữ liệu:

Dữ liệu được lưu trữ tập trung ở các kho dữ liệu khổng lồ. Các công ty lớn như Microsoft, Google có hàng chục kho dữ liệu trung tâm nằm rải rác khắp nơi trên thế giới. Các công ty lớn này sẽ cung cấp các dịch vụ cho phép doanh nghiệp có thể lưu trữ và quản lý dữ liệu của họ trên các kho lưu trữ trung tâm.

4.1.2 Vấn đề về sức mạnh tính toán: (các mục nằm lỡ cỡ như thế này nên bắt đầu ở trang mới)

Có 2 giải pháp chính:

o Sử dụng các siêu máy tính (super-computer) để xử lý tính toán.

o Sử dụng các hệ thống tính toán song song, phân tán, tính toán lưới (grid computing).

5

Page 12: Thuat toan dam may

Tên đề tài ở đây

4.1.3 Vấn đề về cung cấp tài nguyên, phần mềm:

Cung cấp các dịch vụ như IaaS (infrastructure as a service), PaaS (platform as a service), SaaS (software as a service). Các phần tiếp theo sẽ đi sâu hơn về các dịch vụ này.

Hình 3: Các dịch vụ có thể được cung cấp trên nền điện toán đám mây

4.2 Các ưu, nhược điểm của điện toán đám mây

4.2.1 Ưu điểm

Tính linh động : Người dùng có thể thoải mái lựa chọn các dịch vụ phù hợp với nhu cầu của mình, cũng như có thể bỏ bớt những thành phần mà mình không muốn. (Thay vì phải bỏ ra hàng trăm USD cho 1 bộ Ms office, ta có thể mua riêng lẻ từng phần hoặc chỉ trả 1 khoản phí rất nhỏ mỗi khi sử dụng 1 phần nào đó của nó).

Giảm bớt phí : Người dùng không chỉ giảm bớt chi phí bản quyền mà còn giảm phần lớn chi phí cho việc mua và bảo dưỡng máy chủ. Việc tập hợp ứng dụng của nhiều tổ chức lại 1 chỗ sẽ giúp giảm chi phí đầu tư ban đầu, cũng như tăng hiệu năng sử dụng các thiết bị này một cách tối đa.

Tạo nên sự độc lập : Người dùng sẽ không còn bị bó hẹp với 1 thiết bị hay 1 vị trí cụ thể nào nữa. Với điện toán đám mây, phần mềm, dữ liệu có thể được truy cập và sử dụng từ bất kì đâu, trên bất kì thiết bị nào mà không cần phải quan tâm đến giới hạn phần cứng cũng như địa lý

Tăng cường độ tin cậy : Dữ liệu trong mô hình điện toán đám mây được lưu trữ 1 cách phân tán tại nhiều cụm máy chủ tại nhiều vị trí khác

6

Page 13: Thuat toan dam may

Tên đề tài ở đây

nhau. Điều này giúp tăng độ tin cậy, độ an toàn của dữ liệu mỗi khi có sự cố hoặc thảm họa xảy ra.

Bảo mật : Việc tập trung dữ liệu từ nhiều nguồn khác nhau sẽ giúp các chuyên gia bảo mật tăng cường khả năng bảo vệ dữ liệu của người dùng, cũng như giảm thiểu rủi ro bị ăn cắp toàn bộ dữ liệu. (Dữ liệu được đặt tại 6 máy chủ khác nhau → trong trường hợp hacker tấn công, bạn cũng sẻ chỉ bị lộ 1/6. Đây là 1 cách chia sẻ rủi ro giữa các tổ chức với nhau)

Bảo trì dễ dàng : Mọi phần mềm đều nằm trên server, lúc này, người dùng sẽ không cần lo lắng cập nhật hay sửa lỗi phần mềm nữa. Và các lập trình viên cũng dễ dàng hơn trong việc cài đặt, nâng cấp ững dụng của mình.

4.2.2 Nhược điểm

Tính riêng tư: Các thông tin người dùng và dữ liệu được chứa trên điện toán đám mây có đảm bảo được riêng tư, và liệu các thông tin đó có bị sử dụng vì một mục đích nào khác?

Tính sẵn dùng: Liệu các dịch vụ đám mây có bị “treo” bất ngờ, khiến cho người dùng không thể truy cập các dịch vụ và dữ liệu của mình trong những khoảng thời gian nào đó khiến ảnh hưởng đến công việc?

Mất dữ liệu : Một vài dịch vụ lưu trữ dữ liệu trực tuyến trên đám mây bất ngờ ngừng hoạt động hoặc không tiếp tục cung cấp dịch vụ, khiến cho người dùng phải sao lưu dữ liệu của họ từ “đám mây” về máy tính cá nhân. Điều này sẽ mất nhiều thời gian. Thậm chí một vài trường hợp, vì một lý do nào đó, dữ liệu người dùng bị mất và không thể phục hồi được.

Tính di động của dữ liệu và quyền sở hữu : Một câu hỏi đặt ra, liệu người dùng có thể chia sẻ dữ liệu từ dịch vụ đám mây này sang dịch vụ của đám mây khác? Hoặc trong trường hợp không muốn tiếp tục sử dụng dịch vụ cung cáp từ đám mây, liệu người dùng có thể sao lưu toàn bộ dữ liệu của họ từ đám mây? Và làm cách nào để người dùng có thể chắc chắn rằng các dịch vụ đám mây sẽ không hủy toàn bộ dữ liệu của họ trong trường hợp dịch vụ ngừng hoạt động.

Khả năng bảo mật : Vấn đề tập trung dữ liệu trên các “đám mây” là cách thức hiệu quả để tăng cường bảo mật, nhưng mặt khác cũng lại chính là mối lo của người sử dụng dịch vụ của điện toán đám mây. Bởi lẽ một khi các đám mây bị tấn công hoặc đột nhập, toàn bộ dữ liệu sẽ bị chiếm dụng

Các quy định pháp luật cho các dịch vụ, giữa khách hàng và nhà cung cấp.

7

Page 14: Thuat toan dam may

Tên đề tài ở đây

5. Cấu trúc và các dịch vụ điện toán đám mây

5.1 Cấu trúc của một đám mây điện toán

Như đã đề cập ở trên, cấu trúc vật lý của điện toán đám mây (bao gồm các thiết bị, máy móc để chạy dịch vụ,…) được xem như trong suốt đối với người sử dụng và người thuê sử dụng dịch vụ.

Tuy nhiên khi xét về mặt cấu trúc nền tảng thì một đám mây, dù ở loại nào hay do hãng nào cung cấp thì cũng đều có 1 cấu trúc chung gồm 4 lớp.

Hình 4: Cấu trúc 4 lớp của điện toán đám mây

Client (Lớp Khách hàng): Lớp Client của điện toán đám mây bao gồm phần cứng và phần mềm, để dựa vào đó, khách hàng có thể truy cập và sử dụng các ứng dụng/dịch vụ được cung cấp từ điện toán đám mây. Chẳng hạn máy tính và đường dây kết nối Internet (thiết bị phần cứng) và các trình duyệt web (phần mềm)….

Application (Lớp Ứng dụng): Lớp ứng dụng của điện toán đám mây làm nhiệm vụ phân phối phần mềm như một dịch vụ thông quan Internet, người dùng không cần phải cài đặt và chạy các ứng dụng đó trên máy tính của mình, các ứng dụng dễ dàng được chỉnh sữa và người dùng dễ dàng nhận được sự hỗ trợ.Các đặc trưng chính của lớp ứng dụng bao gồm :

o Các hoạt động được quản lý tại trung tâm của đám mây, chứ không nằm ở phía khách hàng (lớp Client), cho phép khách hàng truy cập các ứng dụng từ xa thông qua Website.

o Người dùng không còn cần thực hiện các tính năng như cập nhật phiên bản, bản vá lỗi, download phiên bản mới… bởi chúng sẽ được thực hiện từ các “đám mây”.

8

Page 15: Thuat toan dam may

Tên đề tài ở đây

o Platform (Lớp Nền tảng): Cung cấp nền tảng cho điện toán và các giải pháp của dịch vụ, chi phối đến cấu trúc hạ tầng của “đám mây” và là điểm tựa cho lớp ứng dụng, cho phép các ứng dụng hoạt động trên nền tảng đó. Nó giảm nhẹ sự tốn kém khi triển khai các ứng dụng khi người dùng không phải trang bị cơ sở hạ tầng (phần cứng và phần mềm) của riêng mình.

o Infrastructure (Lớp Cơ sở hạ tầng): Cung cấp hạ tầng máy tính, tiêu biểu là môi trường nền ảo hóa. Thay vì khách hàng phải bỏ tiền ra mua các server, phần mềm, trung tâm dữ liệu hoặc thiết bị kết nối… giờ đây, họ vẫn có thể có đầy đủ tài nguyên để sử dụng mà chi phí được giảm thiểu, hoặc thậm chí là miễn phí. Đây là một bước tiến hóa của mô hình máy chủ ảo (Virtual Private Server)

o Server (Lớp Server - Máy chủ): Bao gồm các sản phẩm phần cứng và phần mềm máy tính, được thiết kế và xây dựng đặc biệt để cung cấp các dịch vụ của đám mây. Các server phải được xây dựng và có cấu hình đủ mạnh (thậm chí là rất may) để đám ứng nhu cầu sử dụng của số lượng động đảo các người dùng và các nhu cầu ngày càng cao của họ

5.2 Các dịch vụ triển khai trên một đám mây điện toán

Dựa trên cấu trúc phân tầng ở trên, một đám mây điện toán có thể cung cấp được các dịch vụ tổng quát như trong sơ đồ dưới đây.

Hình 5: Sơ đồ kiến trúc cung cấp dịch vụ của một đám mây điện toán

9

Page 16: Thuat toan dam may

Tên đề tài ở đây

Cloud computing cung cấp hạ tầng, nền tảng và phần mềm như là dich vụ, mà có thể được cung ứng như là một dich vụ cho thuê trong cách dùng bao nhiêu trả bấy nhiêu đối với người dùng.

Cloud computing được hiện thực theo 3 kiểu:

5.2.1 Infrastructure-as-a-Service (IaaS – Dịch vụ hạ tầng):

Cung cấp cho người dùng hạ tầng thô (thường là dưới hình thức các máy ảo) như là một dịch vụ. Những kiến trúc ảo xếp chồng là một ví dụ của xu hướng mọi thứ là dịch vụ và có cùng những điểm chung. Hơn hẳn một máy chủ cho thuê, không gian luu trử tập trung hay thiết bị mạng, máy trạm thay vì đầu tư mua những nguyên thì có thể thuê đầy đủ dịch vụ bên ngoài. Những dịch vụ này thông thường được tính chi phí trên cơ sở tính toán chức năng và lượng tài nguyên sử dụng (và từ đó ra chi phí) sẽ phản ảnh được mức độ của hoạt động. Đây là một sự phát triển của những giải pháp lưu trữ web và máy chủ cá nhân ảo.

Tên ban đầu được sử dụng là dịch vụ phần cứng (HaaS) và được tạo ra bởi một nhà kinh tế học Nichlas Car vào thang 3 năm 2006, nhưng điều này cần thiết. Nhưng từ này đã dần bị thay thế bởi khái niệm dịch vụ hạ tầng vào khoảng cuối năm 2006.

Những đặc trưng tiêu biểu:

Cung cấp tài nguyên như là dịch vụ: bao gồm cả máy chủ, thiết bị mạng, bộ nhớ, CPU, không gian đĩa cứng, trang thiết bị trung tâm dữ liệu.

Khả năng mở rộng linh hoạt

Chi phí thay đổi tùy theo thực tế

Nhiều người thuê có thể cùng dùng chung trên một tài nguyên

Cấp độ doanh nghiệp: đem lại lợi ích cho công ty bởi một nguồn tài nguyên tính toán tổng hợp

Các ví dụ: Amazon EC2/S3, Elastra (Beta 2.0 2/2009), Nirvanix, AppNexus

5.2.2 Platform-as-a-Service (PaaS – Dịch vụ nền tảng):

Cung cấp API cho phát triển ứng dụng trên một nền tảng trừu tượng. Cung cấp nền tảng tinh toán và một tập các giải pháp nhiều lớp. Nó hỗ trợ việc triển khai ứng dụng mà không quan tâm đến chi phí hay sự phức tạp của việc trang bị và quản lý các lớp phần cứng và phần mềm bên dưới, cung cấp tất cả các tính năng cần thiết để hỗ trợ chu trình sống đầy đủ của việc xây dựng và cung cấp một ứng dụng và dịch vụ web sẵn sàng trên Internet mà không cần bất kì thao tác tải hay cài đặt phần mềm cho những người phát triển, quản lý tin học, hay người dùng cuối. Nó còn được biết đến với một tên khác là cloudware.

Cung cấp dịch vụ nền tảng (PaaS) bao gồm những điều kiện cho qui trình thiết kế ứng dụng, phát triển, kiểm thử, triển khai và lưu trữ ứng dụng có giá trị như là dịch vụ

10

Page 17: Thuat toan dam may

Tên đề tài ở đây

ứng dụng như cộng tác nhón, săp xếp và tích hợp dịch vụ web, tích hợp cơ sở dữ liệu, bảo mật, khả năng mở rộng, quản lý trạng thái, phiên bản ứng dụng, các lợi ích cho cộng đồng phát triển và nghiên cứu ứng dụng. Những dịch vụ này được chuẩn bị như là một giải pháp tính hợp trên nền web.

Những đặc trưng tiêu biểu:

Phục vụ cho việc phát triển, kiêm thử, triển khai và vận hành ứng dụng giống như là môi trường phát triển tích hợp

Các công cụ khởi tạo với giao diện trên nền web.

Kiến trúc đồng nhất

Tích hợp dịch vụ web và cơ sở dữ liệu

Hỗ trợ cộng tác nhóm phát triển

Công cụ hỗ trợ tiện ích

Các yếu tố:

Thuận lợi:

Dịch vụ nền tảng (PaaS) đang ở thời kì đầu và được ưa chuộng ở những tính năng vốn được ưa thích bơi dịch vụ phần mềm (đề cập sau), bên cạnh đó có tích hợp các yếu tố về nền tảng hệ thống.

Ưu điểm trong những dự án tập hợp những công việc nhóm có sự phân tán về địa lý.

Khả năng tích hợp nhiều nguồn của dich vụ web

Giảm chi phí ngoài lề khi tích hợp các dịch vụ về bảo mật, khả năng mở rộng, kiểm soát lỗi…

Giảm chi phí khi trừu tượng hóa công việc lập trình ở mức cao để tạo phục vụ, giao diện người dùng và các yếu tố ứng dụng khác.

Mong đợi ở người dùng có kiến thức có thể tiếp tục hoàn thiện và hỗ trợ tương tác với nhiều người để giúp xác định mức đô khó khăn của vấn đề chúng ta gặp phải.

Hướng việc sử dụng công nghệ để đạt được mục đích tạo điều kiện dễ dàng hơn cho việc phát triển ứng dụng đa người dùng cho những người không chỉ trong nhóm lập trình mà có thể kết hợp nhiều nhóm cùng làm việc

Khó khăn:

Ràng buộc bởi nhà cung cấp: do giới hạn phụ thuộc và dịch vụ của nhà cung cấp

Giới hạn phát triển: độ phức tạp khiến nó không phù hợp với yêu cầu phá triển nhanh vì những tính năng phức tạp khi hiện thực trên nền tảng web.

Các ví dụ: zosso (2/2008), Google App Engine, Salesforce, Heroku, Engine Yard

11

Page 18: Thuat toan dam may

Tên đề tài ở đây

5.2.3 Software-as-a-Service (SaaS – Dịch vụ phần mềm):

Cung cấp dịch vụ phần mềm thực thi từ xa.

Dịch vụ phần mềm (SaaS) là một mô hình triển khai ứng dụng mà ở đó người cung cấp cho phép người dụng sử dụng dịch vụ theo yêu cầu. Những nhà cung cấp SaaS có thể lưu trữ ứng dụng trên máy chủ của họ hoặc tải ứng dụng xuống thiết bị khách hàng, vô hiệu hóa nó sau khi kết thúc thời hạn. Các chức năng theo yêu cầu có thể được kiểm soát bên trong để chia sẻ bản quyền của một nhà cung cấp ứng dụng thứ ba.

Hình 6: Mô hình Software as a Services

Những đặc trưng tiêu biểu

Phần mềm sẵn có đòi hỏi việc truy xuất, quản lý qua mạng.

Quản lý các hoạt dộng từ một vị trí tập trung hơn là tại mỗi nơi của khách hàng, cho phép khác hàng truy xuất từ xa thông qua web.

Cung cấp ứng dụng thông thường gần gũi với mô hình ánh xạ từ một đến nhiều hơn là mô hình 1:1 bao gồm cả các đặc trưng kiến trúc, giá cả và quản lý.

Những tính năng tập trung nâng cấp, giải phóng người dùng khỏi việc tải các bản vá lỗi và cập nhật.

Thường xuyên tích hợp những phần mềm giao tiếp trên mạng diện rộng

Các ví dụ: 3Tera (2/2006), Salesforce

12

Page 19: Thuat toan dam may

Tên đề tài ở đây

Hình 7: So sánh quy trình làm phát triển phần mềm truyền thống với phát triển dựa trên đám mây

5.2.4 Các cách tính chi phí trên đám mây

Định giá cố định : nhà cung cấp sẽ xác định rõ đặc tả về khả năng tính toán cố định (dung lượng bộ nhớ được cấp phát, loại CPU và tốc độ .v.v…)

Định giá theo đơn vị : được áp dụng phổ biến cho lượng dữ liệu truyền tải, dụng lượng bộ nhớ được cấp phát và sử dụng,… cách này uyển chuyên hơn cách trên

Định giá theo thuê bao : ứng dụng phần lớn trong mô hình dịch vụ phần mềm (SaaS) người dùng sẽ tiên đoán trước định mức sử dụng ứng dụng cloud (cách tình này thường khó đạt được độ chính xác cao)

13

Page 20: Thuat toan dam may

Tên đề tài ở đây

6. Các mô hình triển khai cloud Computing

Hình 8: Các mô hình triển khai Cloud Computing

6.1 Các đám mây công cộng (Public cloud)

Là các dịch vụ đám mây được một bên thứ ba (người bán) cung cấp. Chúng tồn tại ngoài tường lửa công ty và chúng được lưu trữ đầy đủ và được nhà cung cấp đám mây quản lý.

Các đám mây công cộng cố gắng cung cấp cho người tiêu dùng với các phần tử công nghệ thông tin tốt nhất. Cho dù đó là phần mềm, cơ sở hạ tầng ứng dụng hoặc cơ sở hạ tầng vật lý, nhà cung cấp đám mây chịu trách nhiệm về cài đặt, quản lý, cung cấp và bảo trì. Khách hàng chỉ chịu phí cho các tài nguyên nào mà họ sử dụng, vì thế cái chưa sử dụng được loại bỏ.

Tất nhiên điều này liên quan đến chi phí. Các dịch vụ này thường được cung cấp với "quy ước về cấu hình," nghĩa là chúng được phân phối với ý tưởng cung cấp các trường hợp sử dụng phổ biến nhất. Các tùy chọn cấu hình thường là một tập hợp con nhỏ hơn so với những gì mà chúng đã có nếu nguồn tài nguyên đã được người tiêu dùng kiểm soát trực tiếp. Một điều khác cần lưu ý là kể từ khi người tiêu dùng có quyền kiểm soát một chút trên cơ sở hạ tầng, các quy trình đòi hỏi an ninh chặt chẽ và tuân thủ quy định dưới luật không phải lúc nào cũng thích hợp cho các đám mây chung.

Một đám mây công cộng là sự lựa chọn rõ ràng khi:

Phân bố tải workload cho các ứng dụng được sử dụng bởi nhiều người, chẳng hạn như e-mail.

14

Page 21: Thuat toan dam may

Tên đề tài ở đây

Bạn cần phải thử nghiệm và phát triển các mã ứng dụng.

Bạn có các ứng dụng SaaS từ một nhà cung cấp có một chiến lược an ninh thực hiện tốt.

Bạn cần gia tăng công suất (khả năng bổ sung năng lực cho máy tính cao nhiều lần).

Bạn đang thực hiện các dự án hợp tác.

Bạn đang làm một dự án phát triển phần mềm quảng cáo bằng cách sử dụng PaaS cung cấp các đám mây.

Hình 9: Mô hình 1 đám mây công cộng

6.2 Các đám mây riêng (Private cloud)

Là các dịch vụ đám mây được cung cấp trong doanh nghiệp. Những đám mây này tồn tại bên trong tường lửa công ty và chúng được doanh nghiệp quản lý.

Các đám mây riêng đưa ra nhiều lợi ích giống như các đám mây chung thực hiện với sự khác biệt chính: doanh nghiệp có trách nhiệm thiết lập và bảo trì đám mây này. Sự khó khăn và chi phí của việc thiết lập một đám mây bên trong đôi khi có thể có chiều hướng ngăn cản việc sử dụng và chi phí hoạt động liên tục của đám mây có thể vượt quá chi phí của việc sử dụng một đám mây chung.

Các đám mây riêng đưa ra nhiều lợi thế hơn so với loại chung. Việc kiểm soát chi tiết hơn trên các tài nguyên khác nhau đang tạo thành một đám mây mang lại cho

15

Page 22: Thuat toan dam may

Tên đề tài ở đây

công ty tất cả các tùy chọn cấu hình có sẵn. Ngoài ra, các đám mây riêng là lý tưởng khi các kiểu công việc đang được thực hiện không thiết thực cho một đám mây chung, do đúng với các mối quan tâm về an ninh và về quản lý.

Một đám mây riêng là sự lựa chọn rõ ràng khi

Việc kinh doanh của bạn gắn với dữ liệu và các ứng dụng của bạn. Vì vậy, việc kiểm soát và bảo mật chiếm phần lớn công việc.

Việc kinh doanh của bạn là một phần của một ngành công nghiệp phải phù hợp với an ninh nghiêm ngặt và các vấn đề bảo mật dữ liệu.

Công ty của bạn là đủ lớn để chạy một dữ liệu trung tâm điện toán đám mây có hiệu quả .

Hình 10: Kiến trúc một đám mây riêng

16

Page 23: Thuat toan dam may

Tên đề tài ở đây

Hình 11: Mô hình một đám mây riêng

6.3 Các đám mây lai (Hybrid cloud )

Là một sự kết hợp của các đám mây công cộng và riêng. Những đám mây này thường do doanh nghiệp tạo ra và các trách nhiệm quản lý sẽ được phân chia giữa doanh nghiệp và nhà cung cấp đám mây công cộng. Đám mây lai sử dụng các dịch vụ có trong cả không gian công cộng và riêng.

Các đám mây lai là câu trả lời khi một công ty cần sử dụng các dịch vụ của cả hai đám mây riêng và công cộng. Theo hướng này, một công ty có thể phác thảo các mục tiêu và nhu cầu của các dịch vụ và nhận được chúng từ đám mây công cộng hay riêng, khi thích hợp. Một đám mây lai được xây dựng tốt có thể phục vụ các quy trình nhiệm vụ-tới hạn, an toàn, như nhận các khoản thanh toán của khách hàng, cũng như những thứ là không quan trọng bằng kinh doanh, như xử lý bảng lương nhân viên.

Hạn chế chính với đám mây này là sự khó khăn trong việc tạo ra và quản lý có hiệu quả một giải pháp như vậy. Phải có thể nhận được và cung cấp các dịch vụ lấy từ các nguồn khác nhau như thể chúng có nguồn gốc từ một chỗ và tương tác giữa các thành phần riêng và chung có thể làm cho việc thực hiện thậm chí phức tạp hơn nhiều. Do đây là một khái niệm kiến trúc tương đối mới trong điện toán đám mây, nên cách thực hành và các công cụ tốt nhất về loại này tiếp tục nổi lên và bất đắc dĩ chấp nhận mô hình này cho đến khi hiểu rõ hơn

17

Page 24: Thuat toan dam may

Tên đề tài ở đây

Hình 12: Mô hình một đám mây lai

Dưới đây là một vài tình huống mà một môi trường hybrid là tốt nhất.

Công ty của bạn muốn sử dụng một ứng dụng SaaS nhưng quan tâm về bảo mật . Nhà cung cấp SaaS có thể tạo ra một đám mây riêng chỉ cho công ty của bạn bên trong tường lửa của họ. Họ cung cấp cho bạn một mạng riêng ảo (VPN) để bổ sung bảo mật.

Công ty của bạn cung cấp dịch vụ được thay đổi cho thị trường khác nhau. Bạn có thể sử dụng một đám mây công cộng để tương tác với khách hàng nhưng giữ dữ liệu của họ được bảo đảm trong vòng một đám mây riêng.

Các yêu cầu quản lý của điện toán đám mây trở nên phức tạp hơn nhiều khi bạn cần quản lý dữ liệu cá nhân, công cộng, và truyền thống tất cả với nhau. Bạn sẽ cần phải thêm các khả năng cho phù hợp với các môi trường

6.4 Các đám mây cộng đồng (Community cloud)

Là các đám mây được chia sẻ bởi một số tổ chức và hỗ trợ một cộng đồng cụ thểcó mối quan tâm chung (ví dụ: chung sứ mệnh, yêu cầu an ninh, chính sách .. ) Nó có thể được quản lý bởi các tổ chức hoặc một bên thứ ba.

Một đám mây cộng đồng có thể được thiết lập bởi một số tổ chức có yêu cầu tương tự và tìm cách chia sẻ cơ sở hạ tầng để thực hiện một số lợi ích của điện toán đám mây

18

Page 25: Thuat toan dam may

Tên đề tài ở đây

Tùy chọn này là tốn kém hơn nhưng có thể đáp ứng về sự riêng tư, an ninh hoặc tuân thủ các chính sách tốt hơn.

Hình 13: Mô hình một đám mây cộng đồng

7. So sánh mô hình Cloud Computing với mô hình Client – Server

Cloud client trong cloud computing và client trong mô hình client/server giống nhau ở vai trò là hiển thị dữ liệu và tiếp nhận các thao tác của người dùng, mọi tính toán nghiệp vụ đều được thực hiện ở máy chủ. Tuy nhiên, điểm khác biệt lớn nhất giữa 2 mô hình này là ở việc tính toán trên máy chủ:

Server trong mô hình client/ server thường mang ý nghĩa là 1 hoặc 1 cụm máy chủ trung tâm chỉ làm nhiệm vụ thực hiện tính toán cho 1 số client cụ thể (trong 1 công ty hoặc 1 tổ chức nào đó); trong khi server trong Cloud computing lại mang 1 ý nghĩa rộng hơn nhiều. Server trong điện toán đám mây sẽ làm nhiệm vụ tính toán cho bất kì client nào với bất kì công việc nào (mà nó hỗ trợ). Công việc tính toán lúc này không phải thực hiện theo nghĩa vụ mà là theo dịch vụ. Với điện toán đám mây, mọi thứ sẽ được cung cấp dưới dạng dịch vụ, và người dùng sẽ chỉ phải trả phí sử dụng các dịch vụ đó.

19

Page 26: Thuat toan dam may

Tên đề tài ở đây

8. So sánh Cloud Computing với Grids ComputingKhi xem xét các định nghĩa về Clouds, Grids, Distributed Systems (DS), chúng ta

dễ dàng thấy rằng định nghĩa của Clouds có điểm trùng lấp với các định nghĩa của Grids và DS. Điều này không phải là một vấn đề đáng ngạc nhiên bởi vì Clouds không ra đời một cách riêng lẻ hay độc lập mà nó dựa trên nền tảng của các công nghệ trước đó. Hình 14 minh họa mối liên hệ giữa Clouds và các công nghệ khác:

Hình 14: Biểu đồ so sánh Cloud Computing với một số công nghệ khác

Xét riêng về 2 lĩnh vực là Cloud Computing và Grids Computing thì có nhiều khía cạnh để so sánh, nhưng tựu chung thì có 6 mô hình sau đây cho thấy sự khác nhau rõ nét giữa cloud và grids computing

8.1 Mô hình thương mại (Business Model)

Mô hình thương mại truyền thống trong các phần mềm trước đây là các hình thức tính phí theo một máy tính. Trong Clouds mô hình thanh toán phí linh hoạt hơn nhiều, người khách hàng chỉ cần trả theo nhu cầu sử dụng như các loại phí sinh hoạt hàng ngày mà họ phải trả: điện, nước, gas ..v.v. Ngoài ra Clouds còn hỗ trợ khả năng mở

20

Page 27: Thuat toan dam may

Tên đề tài ở đây

rộng hệ thống mang tính kinh tế, tức là người sử dụng có thể triển khai với hệ thống ngày một lớn hơn với chi phí phù hợp. Các tiềm năng hiện của có là các trung tâm dữ liệu lớn của các tập đoàn Amazon, IBM, Sun, Google ..v.v. Người dùng trong tương lai chỉ cần một thẻ tín dụng đã có thể truy cập theo nhu cầu đến hàng 100 000 bộ xử lý ngang qua hàng chục trung tâm dữ liệu trải khắp thế giới.

Mô hình thương mại của Grids là hướng đến các dự án nghiên cứu trong môi trường học thuật như các đại học, viện nghiên cứu, phòng thí nghiệm của chính phủ. TeraGrid làm một ví dụ điển hình cho hình thức thương mại của Grid, nó sử dụng hàng chục Grid khác nhau từ các viện nghiên cứu trong cùng một quốc gia. Khi một tổ chức nào đó gia nhập vào TeraGrid thì sẽ có thể truy cập đến các Girds khác và đồng thời có thể sử dụng tài nguyên, kết quả thí nghiệm … trên hệ thống Grid này. Mô hình này đã được ứng dụng rộng rải nhiều nơi trên thế giới. Có nhiều nỗ lực để xây dựng một Grid kinh tế cho cở sở hạ tầng Grid toàn cầu, nó hỗ trợ thương mại, đàm phán, cung cấp dịch vụ theo nhu cầu sử dụng, khả năng rủi ro, chi phí và sở thích của người sử dụng. Nếu như các cố gắng này mang đến kết quả khả quan thì mô hình thương mại của Grids và Clouds thật khó phân biệt trong tương lai.

8.2 Kiến trúc (Architecture)

Phần này trình bày mô hình kiến trúc của Grids và Clouds để làm nổi bật sự khác biệt trong hướng tiếp cận của cả hai. Trong khi Grids tập trung trên việc tích hợp các tài nguyên sẵn có gồm cả phần cứng, hệ điều hành, cở sở hạ tầng an ninh của các hệ thống thì Clouds hướng đến các cấp độ khác nhau của dịch vụ nhằm đáp ứng tối đa nhu cầu người sử dụng như SaaS, IaaS, PaaS.

Để hỗ trợ cho việc tạo ra các tổ chức ảo (Virtual Organizations) – một thực thể luận lý mà bên trong nó các tài nguyên phân bố có thể được khám phá và chia sẻ như thể trong cùng một tổ chức, Grids đã định nghĩa và cung cấp một tập các giao thức chuẩn, phần mềm cơ sở (middleware), bộ công cụ và các dịch vụ được xây dựng trên tập giao thức này. Khả năng hoạt động liên kết và tính an toàn là những vấn đề chính được quan tâm cho cơ sở hạ tầng Grids bởi vì các tài nguyên có thể đến từ các miền quản trị khác nhau, có cả chính sách sử dụng tài nguyên cục bộ và toàn cục khác nhau, các nền và cấu hình phần cứng và phần mềm cũng khác nhau về khả năng sử dụng và tính sẵn sàng của chúng.

Grids cung cấp các giao thức và dịch vụ ở 5 lớp khác nhau như được minh họa bởi hình 15

Lớp connectivity định nghĩa các giao tiếp và chứng thực cốt lõi cho quá trình giao tác an toàn và dễ dàng qua mạng. Lớp resource định nghĩa các giao thức công bố, khám phá, đàm phán, giám sát, kế toán và thanh toán chi phí cho các hoạt động trên các tài nguyên riêng biệt. Lớp collective nắm giữ sự tương tác ngang qua các tập tài nguyên, dịch vụ thư mục cho phép giám sát và khám phá ra các tài nguyên tổ chức

21

Page 28: Thuat toan dam may

Tên đề tài ở đây

ảo. Cuối cùng là lớp application bao gồm các ứng dụng người dùng được xây dựng trên đầu của các giao thức.

Hình 15: Kiến trúc Grids Computing

Clouds được phát triển để giải quyết những bài toán tính toán mở rộng qua Internet trong đó một số giả thiết là khác biệt so với Grids. Clouds thường được xem như là một “hồ” tính toán và lưu trữ có thể được truy cập thông qua các giao thức chuẩn và qua một giao tiếp trừu tượng. Thật ra Clouds có thể được hiện thực trên nhưng công nghệ Grids đã tồn tại hàng thập niên nhưng hướng vào kiến trúc 4 lớp sau: Lớp Fabric gồm các tài nguyên phần cứng, lớp Unified Resource chứa các tài nguyên được trừu tượng hóa để có thể xuất hiện đồng nhất với người dùng, lớp Platform thêm vào một tập các công cụ, phần mềm và dịch vụ trên lớp Unified Resource, lớp Application là lớp chứa các ứng dụng chạy trên Clouds. Hình 16 minh họa một kiến trúc của Clouds.

22

Page 29: Thuat toan dam may

Tên đề tài ở đây

Hình 16: Kiến trúc Cloud Computing

8.3 Quản lý tài nguyên (Resource Management)

Quản lý tài nguyên là vấn đề quyết định khả năng hoạt động của hệ thống và đương nhiên nó không thể thiếu trong các hệ thống lớn như Grids và Clouds. Trong phần này, đề cập đến những thách thức chính mà cả Grids và Clouds phải đối mặt để thấy được điểm tương đồng và khác biệt trong hai mô hình.

8.3.1 Mô hình tính toán (Compute Model):

Hầu hết các Grids sử dụng mô hình tính toán bó (batch-scheduled compute model) cùng với một bộ quản lý tài nguyên cục bộ như PBS, SGE, Condor để quản lý tài nguyên tại các vị trí khác nhau. Với phương thức quản lý này. Grids không thể phục vụ tốt cho các chương trình yêu cầu nhiều bộ xử lý và thực thi trong thời gian dài. Chẳng hạn trong trường hợp một chương trình cần 100 bộ xử lý và thực thi trong 60 phút, nó phải đợi đến khi hệ thống có đủ 100 bộ xử lý và rảnh trong 60 phút. Mô hình tính toán trong Clouds hoàn toàn khác, các người dùng được sử dụng tài nguyên đồng thời mặc dù phải đảm bảo được chất lượng dịch vụ cho người sử dụng. Đây cũng là một trong những thách thức của Clouds về khả năng mở rộng và khi số lượng người dùng lớn.

8.3.2 Mô hình dữ liệu (Data Model):

Mô hình dữ liệu có khuynh hướng trong tương lai là mô hình tương tác tam giác như chỉ ra trong hình 17.

23

Page 30: Thuat toan dam may

Tên đề tài ở đây

Hình 17: Mô hình dữ liệu

Tính toán Internet sẽ xoay quanh mô hình dữ liệu ở trên do các nguyên nhân khách quan từ thực tiễn. Người khách hàng không muốn đưa các dữ liệu nhạy cảm hoặc tối quan trọng lên xử lý và lưu trữ trên Clouds. Đồng thời, người dùng cũng muốn truy cập đến dữ liệu riêng tư của họ ngay khi các giao tiếp mạng chậm hay hư hỏng. Ngoài ra, công nghệ đa nhân (multicore - technology) cũng mang đến cho người dùng nhiều hệ thống con mạnh mẽ trong tương lai.

Đối với Grids, thì mô hình tính toán tập trung vào dữ liệu đa được quan tâm từ sớm, chẳng hạn như Data Grid đã được thiết kế dành riêng cho các ứng dụng tập trung lớn trên dữ liệu. Do đó, Grids không cần thiết đưa ra định hướng phát triển mô hình dữ liệu như Clouds thay vào đó nó đã có mô hình chuyên biệt để sử dụng.

8.3.3 Tính cục bộ của dữ liệu (Data Locality):

Một thách thức chính trong vấn đề mở rộng ứng dụng một cách hiệu quả là vị trí dữ liệu liên quan đối với các tài nguyên đã sẵn sàng. Việc di dời dữ liệu ở xa về các bộ xử lý một cách liên tục là một hạn chế rõ rệt, hơn nữa quá trình nhập xuất (I/O) dữ liệu từ xa có khác biệt lớn với I/O trên dữ liệu cục bộ và ảnh hưởng trực tiếp đến hiệu suất của hệ thống. Đây là một định hướng được Clouds quan tâm giải quyết. Quá trình xử lý dữ liệu là kết hợp dữ liệu liên quan và tiến trình (process) xử lý nó trong cùng một nút (node), do đó vấn đề “data locality” sẽ được giải quyết một cách hiệu quả. Về phía Grids, dữ liệu được lưu trữ dựa trên các hệ thống file chia sẻ như NFS, GPFS, PVFS ..v.v. Nơi mà tính “data locality” không dễ dàng áp dụng, đây cũng là một điểm yếu của Grids so với Clouds.

8.3.4 Kết hợp tính toán và quản lý dữ liệu(Combining compute and data management):

Tính cục bộ của dữ liệu chỉ hiệu quả khi mà số lượng người dùng và qui mô chưa thực sự lớn. Khi hệ thống ngày càng mở rộng thì vấn đề kết hợp tính toán và quản lý dữ liệu trở thành yếu tố quan trọng cho việc cải thiện hiệu suất. Đó là bài toán định thời công việc (job) gần với dữ liệu mà nó sử dụng trong suốt quá trình thực thi tránh tối đa hoạt động di dời dữ liệu qua mạng. Girds đã có các mô hình tập trung cho các

24

Page 31: Thuat toan dam may

Tên đề tài ở đây

ứng dụng dữ liệu khổng lồ còn Clouds thì sẽ phải đối mặt với vấn đề này trong tương lai.

8.3.5 Ảo hóa (Virtualization):

Đây là công nghệ được khai thác mạnh mẽ trong hầu hết các Clouds. Không giống như mô hình tính toán của Grids, Clouds đòi hỏi chạy nhiều ứng dụng người dùng và tất cả các ứng dụng này phải được thực hiện một cách đồng thời đối với người sử dụng. Bên cạnh đó mỗi người dùng có cảm giác như là họ đại sở hữu toàn bộ tài nguyên sẵn có. Công nghệ ảo hóa cung cấp mức trừu tượng thiết yếu cho việc hợp nhất tài nguyên nhằm đạt được mục tiêu này. Đồng thời ảo hóa còn cho phép mỗi ứng dụng có thể được đóng gói (encapsulate) để có thể cấu hình, triển khai, bắt đầu, di chuyển, tạm dừng, tiếp tục, dừng hẳn, ..v.v. và vì vậy cung cấp tính độc lập, khả năng quản lý, bảo mật tốt hơn. Grids không dựa vào công nghệ ảo hóa nhiều như Clouds, nhưng để đảm bảo được tính riêng tư cho các tổ chức ảo trên tài nguyên thì công nghệ ảo hóa cũng được sử dụng trong lưới chẳng hạn như Nimbus.

8.3.6 Giám sát (Monitoring):

Một thách thức khác mà công nghệ ảo hóa mang lại cho Clouds đó là việc giám sát tài nguyên. Vấn đề giám sát tài nguyên trên Clouds chưa được tổ chức trực tiếp như Grids. Grids đề ra các mô hình tin cậy khác nhau để người dùng được ủy quyền có thể truy cập các tài nguyên khác nhau trên các Grid khác nhau và quá tình duyệt tài nguyên này được đảm bảo an toàn. Hơn nữa, Grids không có độ trừu tượng cao và tận dụng ảo hóa như Clouds, ví dụ công cụ giám sát Ganglia có thể theo dõi các cluster và Grids phân tán một cách khá hiệu quả và được chấp nhận rộng rải trong cộng đồng Grids. Khả năng giảm sát tài nguyên của Clouds gặp nhiều thách thức do mục tiêu đề ra của nó về việc cân bằng quá trình giám sát các ứng dụng thương mại, quản lý máy chủ xí nghiệp, giám sát máy ảo, bảo trì phần cứng..v.v. Do đó trong tương lai gần Clouds sẽ hướng đến việc cung cấp khả năng tự bào trì, cấu hình và quản lý về phía người dùng.

8.3.7 Nguồn gốc dữ liệu(Provenance):

Đây là quá trình hướng dẫn về nguồn gốc, lai lịch của các sản phẩm dữ liệu bao gồm tất cả các dữ liệu nguồn, sản phẩm dữ liệu trung gian, và các thủ tục được ứng dụng vào trong sản phẩm dữ liệu. Thông tin này là cần thiết để hiểu, khám phá, hợp lệ và chia sẻ các sản phẩm dữ liệu cũng như các ứng dụng, chương trình dẫn xuất từ nó. Trong Grids “provenance” đã được triển khai thành các hệ thống workflow và được sử dụng hiệu quả. Ngược lại, Clouds còn chưa khai thác lĩnh vực này và có nhiều thách thức trong việc theo vết dữ liệu ngang qua các nhà cung cấp dịch vụ khác nhau, ngang qua các phần mềm khác nhau và các lớp phần cứng trừu tượng thuộc một nhà cung cấp.

25

Page 32: Thuat toan dam may

Tên đề tài ở đây

8.4 Mô hình lập trình (Programming Model)

Mặc dù mô hình lập trình trong môi trường Grids không có các khác biệt về cơ bản so với các môi trường lập trình song song và phân bố truyền thống. Nó có một số vấn đề phức tạp như nhiều miền quản trị, tài nguyên bất đồng bộ, hiệu suất và tính ổn định, điểu khiển ngoại lệ trong môi trường có tính linh động cao..v.v. Mục đích chính của Grids là các ứng dụng khoa học đòi hỏi khả năng mở rộng cao, mở rộng đến khối lượng tài nguyên lớn và thực thi vừa nhanh vừa hiệu quả, do dó các chương trình cần phải hoàn tất một cách chính xác nên phải xem xét đến độ tin cậy và khả năng kháng lỗi trong môi trường Grids.

Ngoài các môi trường lập trình truyền thống như MPI, Globus Toolkit, còn có một một mô hình lập trình được quan tâm gần đây là MapReduce. MapReduce thật ra chỉ là một mô hình lập trình song song khác nhằm vào các hệ thống với khối lượng dữ liệu lớn. Nó được xây dựng dựa trên hai từ khóa chính là “map” và “reduce” mượn từ ngôn ngữ tự nhiên. Chức năng “map” là cung cấp thao tác cụ thể lên một tập dữ liệu và sinh ra một tập dữ liệu mới. Thao tác “reduce” ngược lại sẽ thu gom các dữ liệu lại. Một hiện thực mã mở của mô hình này là Hadoop và đang được quan tâm trong Clouds.

Clouds về khái quát chấp nhận các Web Services APIs, nơi mà người dùng cấu hình và lập trình dịch vụ Cloud dựa trên các API được trình bày trong Web Services. Các giao thức HTTP và SOAP là những giao thức chuẩn được chọn trong các dịch vụ này. Mặc dù Clouds chấp nhận một số giao thức tổng quát như HTTP và SOAP, khả năng tích hợp và liên kết giữa các dịch vụ lẫn ứng dụng vẫn là một thách thức lớn khi người sử dụng làm việc với các nhà cung cấp Clouds

khác nhau.

8.5 Mô hình ứng dụng (Application Model)

Grids một cách tổng quát hỗ trợ nhiều loại ứng dụng khác nhau và hỗ trợ tốt cho các ứng dụng hiệu suất cao (high performance computing - HPC). HPC là các ứng dụng song song chạy trên một hệ thống cục bộ không phải qua internet. Mặt khác Clouds Computing cũng hỗ trợ các loại ứng dụng tương tự Grids nhưng không đạt được tính hiệu quả đối với các ứng dụng HPC. Bởi vì Clouds còn trong quá trình sơ khai, nó còn nhiều vấn đề cần giải quyết.

8.6 Mô hình bảo mật (Security Model)

Clouds hầu như bao gồm các trung tâm dữ liệu (data center) chuyên dụng thuộc về cùng một tổ chức, nó mang tính đồng nhất khác biệt hoàn toàn với môi trường Grids. Mô hình bảo mật của Clouds hiện tại đơn giản và ít an toàn hơn các mô hình sẵn có của Grids. Tiêu biểu là Clouds dựa trên Web tạo ra tài khoản người dùng, cho phép họ đặt lại mật khẩu và nhận mật khẩu mới thông qua email trong một môi trường không mã hóa và không an toàn. Chú ý rằng, người dùng có thể dễ dàng sử dụng

26

Page 33: Thuat toan dam may

Tên đề tài ở đây

Clouds ngay lập tức với chỉ một thẻ tín dụng hay địa chỉ email. Ngược lại hoàn toàn, Grids hạn chế hơn về tính bảo mật. Chẳng hạn, mặc dù thông qua Web để tạo tài khoản người dùng, thông tin nhạy cảm về tài khoản, mật khẩu được yêu cầu giao tiếp giữa người với người để xác nhận rõ ràng người dùng được ủy quyền.

Tính bảo mật là một vấn đề quan trọng được quan tâm trong Cloud Computing. Có 7 điểm chính mà một người dùng Clouds cần chú ý khi quyết định sử dụng:

1. Truy cập bởi người dùng có quyền hạn: Việc dữ liệu nhạy cảm được xử lý bên ngoài xí nghiệp cần đảm bảo rằng nó chỉ truy cập và lan truyền bởi người sử dụng có đặc quyền.

2. Đồng thuận về điều chỉnh : Người khách hàng cần phải biết được nhà cung cấp Clouds có thực hiện các thao tác ngoài luồng trên dữ liệu của họ hay không.

3. Vị trí dữ liệu: Do người dùng không biết nơi lưu trữ dữ liệu của họ, nhà cung cấp Clouds phải đảm bảo lưu trữ và xử lý dữ liệu đúng theo thỏa thuận pháp lý ban đầu và phải tuân thủ yêu cầu về tính riêng tư của người khách hàng.

4. Sự tách biệt về dữ liệu: Dữ liệu giữa các người sử dụng khác nhau phải được lưu trữ riêng biệt.

5. Khôi phục: Nhà cung cấp Clouds phải có cơ chế nhân bản và khôi phục dữ liệu trong trường hợp có hỏng hóc xảy ra.

6. Hỗ trợ kiểm tra: Các dịch vụ Clouds rất khó kiểm tra, nếu như điều đó là quan trọng với khách hàng thì nhà cung cấp dịch vụ cũng phải có có chế hỗ trợ.

7. Tính lâu dài: Dữ liệu trên Clouds phải tồn tại lâu dài bền vững ngay khi nhà cung cấp Clouds bị thu mua bởi một tập đoàn khác.

27

Page 34: Thuat toan dam may

Chương 3: MÔT SỐ GIẢI PHAP VA NỀN TẢNG ĐAM MÂY HIỆN TAI

Hiện tại có rất nhiều hãng lớn trên thế giới đầu tư vào điện toán đám mây và phát triẻn các nền tảng và giải pháp Cloud Computing. Ví dụ như Google có Google AppEngine, Amazon có Amazon Web Services, Windows Azure của Microsoft, hay Clouds của IBM. Nhưng nói chung thì dù hãng nào, hay cung cấp dịch vụ gì thì ta cũng có thể chia được làm 3 loại như chương 2 đã đề cập đó là:

PaaS (Platform as a Service) : cho thuê nền tảng công nghệ được xây dựng sẵn, cung cấp các API cho phép người sử dụng và nhà lậptrình tự xây dựng dựa trên các nền tảng cung cấp sẵn này. Ví dụ như: Google App Engine, hay dịch vụ Amazon WebServices

IaaS (Infrastructure as a Service): cho thuê nền tảng, kiến trúc phần cứng hoặc phần mềm. Tính phí dự trên cấu hình cho thuê. Ở đây, các nhà cung cấp dịch vụ sử dụng các công nghệ ảo hóa Virtual Technology của các hãng như Vmware có sản phẩm EXServer, Microsoft có Windows Azure. Dịch vụ này cho phép người sử dụng thuê từ cấu hình phần cứng của máy chủ tùy ý cho tới hệ điều hành và các dịch khác chạy trên máy chủ.

SaaS (Software as a Service): đây là tầng gần với người sử dụng nhất, cung cấp các phần mềm hoàn chỉnh, tính phí dựa trên số lần hoặc dung lượng sử dụng và lưu trữ dữ liệu của người dùng. Hiện tại hầu hết các SaaS được các hãng dịch vụ cung cấp miến phí cho người sử dụng. Ví dụ như Google Mail, Google Docs, Yahoo Mail, ASUS Webstore, Windows Live, Dropbox,…

Trong chương này, đề tài xin được giới thiệu một vài nền tảng phổ biến và hay dùng hiện nay đó là Google App Engine (thuộc dạng PaaS, miễn phí) và Amazon Webservice (thuộc dạng PaaS, có phí). Sau đó so sánh những điễm khác biệt giữa các nền tảng này và 1 nền tảng đang được quảng bá rộng rãi hiện nay là Microsoft Azure. Từ đó rút ra một số kết luận.

Cuối chương, để làm rõ nguyên tắc hoạt động của một đám mây dạng PaaS, đề tài giới thiệu một demo nhỏ chạy trên nền tảng Google App Engine. Lý do là vì hiện tại mặc dù còn nhiều hạn chế (sẽ đề cập ở các phần sau) nhưng Google App Engine là một nền tảng miễn phí do đó triển khải dễ dang hơn, đồng thời việc quản lý và xây dựng ứng dụng dựa trên nền tảng Google App Engine cũng đơn giản và đã được Google hỗ trợ rất nhiều.

1. Amazon Web ServicesDịch vụ Web Services của Amazon gồm 5 dịch vụ chính:

Elastic Compute Cloud (EC2)

SimpleDB

Simple Storeage Service (S3)

CloudFront

Tên tác giả, LỚP XXX 1

Page 35: Thuat toan dam may

Tên đề tài ở đây

Simple Queue Service (SQS)

2. Amazon Elastic Compute Cloud (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ác lậ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, Oracle Enterprise 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 18: Giao diện chính Amazon EC2

3. Amazon Simple DBAmazon 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.

2

Page 36: Thuat toan dam may

Tên đề tài ở đây

Hình 19: Giao diện chính Amazon DB

4. Amazon 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 qua internet. Đâ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ên toá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 20: Giao diện chính Amazone S3

3

Page 37: Thuat toan dam may

Tên đề tài ở đây

5. Amazon Cloud Font:Amazon CloudFront là một mạng phân phối dữ liệu để chuyển đổi nội dung. Amazon CloudFont 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.

Hình 21: Giao diện chính Amazon Web Services

6. Amazon 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ựng các luồng làm việc phức tạp.

4

Page 38: Thuat toan dam may

Tên đề tài ở đây

Hình 22: Giao diện chính Amazon SQS

Trên đây là các thông tin giới thiệu cơ bản về nền tảng Amazon Webservice cũng như một số dịch vụ chạy trên nền tảng của Amazon Webservice. Việc tiếp cận nghiên cứu thực tế các dịch vụ này tương đối khó khăn với nhóm thực hiện vì dịch vụ này đòi hỏi trả phí sử dụng.

7. Google App EngineMột trong những nền tảng phát triển ứng dụng đám mây phổ biến và nổi tiếng hiện

tại đang được rất nhiều người dùng lựa chọn hiện nay đó là App Engine của Google.

7.1 Giới thiệu:- Google App Engine (gọi tắt là AppEngine, một số trường hợp được viết tắt là

GAE ) là giải pháp cho vấn đề điện toán đám mây. Ở đó, Google cung cấp sẵn một hệ thống máy chủ điện toán đám mây, và người lập trình sẽ viết ứng dụng của mình lên đó. Ứng dụng này sẽ chạy trên đám mây của Google.

- Google App Engine cho phép bạn chạy các ứng dụng web của bạn trên cơ sở hạ tầng của Google. App Engine ứng dụng được dễ dàng để xây dựng, dễ bảo trì, và dễ dàng để có quy mô như giao thông của bạn và nhu cầu lưu trữ dữ liệu lớn. Với App Engine, không có máy chủ để duy trì: 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

5

Page 39: Thuat toan dam may

Tên đề tài ở đây

dung lượng 500 MB lưu trữ và cho phép 10 GB băng thông lưu chuyển mỗi ngày hay tương đương 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ô 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.

- Hiện AppEngine hỗ trợ 2 loại ngôn ngữ là: Python và Java. 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

7.2 Các thành phần chính của Google App Engine:

7.2.1 Python Runtime• AppEngine hỗ trợ Python Runtime phiên bản 2.5.2. Hầu hết các thư

viện của Python Standard Library đều được hỗ trợ. Tuy nhiên do vấn đề về security nên các extensions viết bằng C sẽ không được hỗ trợ. Điều này có nghĩa rằng bạn không thể nhúng C extensions vào ứng dụng của bạn khi sử dụng App Engine.

• Python Runtime cung cấp APIs cho datastore, Google Accounts, App Engine services. Để tiện lợi cho việc phát triển web AppEngine cũng cung cấp 1 web framework đơn giản là webapp. Do viết bằng ngôn ngữ Python nên AppEngine hỗ trợ hầu hết các Python framework như Django, CherryPy, Pylons, web.py với một ít thay đổi nhất định.

7.2.2 Java Runtime Environment• Bạn có thể phát triển ứng dụng của bạn cho Java Runtime Environment

sử dụng phổ biến công cụ phát triển web Java và các tiêu chuẩn API. Ứng dụng của bạn tương tác với môi trường bằng cách sử dụng the Java Servlet standard, và có thể sử dụng các công nghệ ứng dụng web phổ biến như JavaServer Pages (JSP)

• Java Runtime Environment sử dụng Java 6. Các App Engine Java SDK hỗ trợ phát triển các ứng dụng bằng cách sử dụng Java 5 hoặc 6.

• Đối với các kho dữ liệu App Engine, Java SDK bao gồm việc triển khai của Java Data Objects (JDO) và Java Persistence API (JPA) interfaces. Ứng dụng của bạn có thể sử dụng các API JavaMail để gửi tin nhắn email với dịch vụ App Engine Mail. Các java.net HTTP API truy cập vào App Engine lấy URL dịch vụ. App Engine cũng bao gồm các API cấp thấp cho các dịch vụ của mình để thực hiện thêm bộ điều hợp, hoặc sử dụng trực tiếp từ ứng dụng. Xem tài liệu cho the datastore, memcache, URL fetch, mail, images and Google Accounts APIs.

• Thông thường, các nhà phát triển Java sử dụng các ngôn ngữ lập trình Java và các API để thực hiện các ứng dụng web cho JVM. Với việc sử dụng các trình biên dịch tương thích với JVM, người phiên dịch, bạn cũng có thể sử dụng các ngôn ngữ khác để phát triển các ứng dụng web, chẳng hạn như JavaScript, Ruby, hoặc Scala.

6

Page 40: Thuat toan dam may

Tên đề tài ở đây

7.2.3 DatastoreDatastore là cơ chế để thao tác với dữ liệu trên hệ thống dữ liệu phân tán của Google. APIs của Datastore sẽ cung cấp cho bạn Interface để có thể thao tác với các dữ liệu phía dưới.

7.2.4 Google Accounts:AppEngine liên kết mật thiết với tài khoản Google. Bạn có thể cho user login vào ứng dụng của mình bằng tài khoản Google của họ.

7.2.5 App Engine Services:Cung cấp nhiều dịch vụ để bạn có thể sử dụng cho ứng dụng của mình. Những dịch vụ có thể liệt kê ở đây là: URL Fetch, Mail, Memcache, Image Manipulation

7.3 Một số Data API của Google App

7

Page 41: Thuat toan dam may

Tên đề tài ở đây

Bảng 1: Thống kê các Data API được dùng trên Google App Engine

8. So sánh một số nền tảng cung cấp dịch vụ điện toán đám mây

8

Page 42: Thuat toan dam may

Tên đề tài ở đây

Hình 23: So sánh một số nền tảng và dịch vụ đám mây hiện tạiDựa trên những thông tin bên trên về Google App Engine và Amazon Webservice, nhóm nghiên cứu đưa ra một bảng so sánh các nền tảng trên như sau:

Bảng 2: So sánh một số dịch vụ và nền tảng đang phổ biếnAmazon / Windows Azure

Google App Force.com

Dịch vụ cung cấp +Server as a Service+Database as a Service + Infrastructure as a Service

+ PaaS+ IaaS+ DaaS

+PaaS+IaaS+DaaS

Phí sử dụng Có tính phí Miễn phí Có tính phíAPI tương thích Ứng dụng tương

thích chạy được trên môi trường máy chủ cần thuê

Có API tương thích Sử dụng Frame Work làm nền tảng phát triển

Ngôn ngữ lập trình Phụ thuộc vào dịch vụ hay nền tảng cần thuê

Java, Python FrameWork

Đối tượng cung cấp Doanh nghiệp Lập trình viênDoanh nghiệp

Doanh nghiệp

Khả năng mở rộng Có Có, dễ mở rộng Có

9. Một số kết luận dựa trên các kết quả so sánh

Hầu hết các dịch vù và nhà cung cấp đều cho phép người sử dụng thuê nền tảng (Infrastructure) có thể hiểu như thuê trọn phần cứng. Tất cả đều cung cấp các dịch vụ

9

Page 43: Thuat toan dam may

Tên đề tài ở đây

theo 5 mức của mô hình điện toán đám mây, đều có API hay Framework hỗ trợ người sử dụng lập trình được ở trên đám mấy và triển khai ứng dụng. Tuy nhiên nổi lên đó, ta thấy Google AE có các ưu điểm vượt trội mà các đối thủ khác không có:

- GAE miễn phí cho phép người lập trình sử dụng và triển khai dễ dàng.- Cung cấp 1 bộ SDK và 1 tập hợp phong phú các API nhúng vào 1 môi trường

phát triển tích hợp sẵn ví dụ như Eclipse nên việc triển khai ứng dụng dễ dàng và quen thuộc hơn.

- Mặc dù không phải hoàn toàn nhưng GAE hỗ trợ mạnh mẽ Java cho phép lập trình viên lập trình dễ dàng cũng như mở rộng ứng dụng sau này.

10. Triển khai một demo trên Google App Engine

Như đã đề cập ở phần trên, Google App Engine là một trong những lựa chọn tốt nhất để triển khai mẫu một dự án nền tảng đám mây và từ đó hiểu được cách thức hoạt động của một đám mây cũng như hiểu được quy trình triển khai một dự án phần mềm trên điện toán đám mây ra sao.

10.1 Một số điểm lưu ý khi xây dựng một ứng dụng trên nền Google App Engine

Trong phần lý thuyết, đề tài đã chỉ ra Google App Engine hỗ trợ 2 ngôn ngữ là Python và Java (ở đây là Java phiên bản 6), tuy nhiên cũng không phải là hỗ trợ tất cả. Để dễ vận dụng và phát triển, demo dưới đây sử dụng ứng dụng dựa trên ngôn ngữ Java.

Về vấn đề các thư viện lập trình chuẩn, Google AE chỉ hỗ trợ các thư viện chuẩn (Java Standard API), do đó, khi phát triển các ứng dụng loại này mà muốn chạy dựa trên các trình server như Tomcat hay Jetty thì cũng chỉ nên sử dụng các thư viên lập trình chuẩn của Java (Java Stardard API)

Google App Engine hỗ trợ 2 cách để truy xuất cơ sở dữ liệu bao gồm JDO, JPA. Bởi vì google sử dụng các container servlet của Jetty nên nó hỗ trợ Java Servlet API phiên bản 2.4. Mặc dù vậy nhưng ở nền thì Google app engine sử dụng Google Bigtable để phân phối không gian bộ nhớ cho các ứng dụng đám mây chạy trên nó.

Khi phát triển ứng dụng chạy trên Google App Engine, Google cũng hỗ trợ quản lý phiên bản của sản phẩm và điều này dễ dàng thực hiện trong bảng quản lý và điều khiển tài khoản Google App Engine của nhà phát triển.

Mặc dù App Engine hỗ trợ Java 6 nhưng không phải tất cả các lớp trong phiên bản này được hỗ trợ, ví dụ như các thư viện lập trình giao diện sử dụng Swing và hầu hết các lớp của thư viện giao diện AWT không được hỗ trợ.

Người dùng cũng không được sử dụng Threads hay các framework có sử dụng Thread để phát triển ứng dụng. Người sử dụng cũng không được sử dụng các lệnh liên quan đến file system và chỉ được đọc các tệp tin mà là một phần của ứng dụng. Ví dụ

10

Page 44: Thuat toan dam may

Tên đề tài ở đây

như các phương thức ec() và exit() trong lớp java.lang.System sẽ không thực hiện việc gì cả.

Ngoài ra, nhà phát triển ứng dụng cũng không được phép mở các port để truyền tin mà phải thao tác thông qua các API hơi phức tạp và rắc rối của Google AE để truyền thông tin từ client tới server.

Mặc dù cho phép miễn phí lưu trữ dự án trên máy chủ đám mây nhưng điều đó không có nghĩa là ứng dụng phát triển trên đám mây google được miễn phí hoàn toàn. Google chỉ cho phép mỗi ứng dụng được miễn phí 5 triệu lượt xem và có các giới hạn đối với mỗi lần truy cập vào cơ sở dữ liệu cũng như gọi các API của Google hay các tính toán liên quan đến sử dụng CPU và độ lớn cơ sở dữ liệu để sử dụng trong ứng dụng. Nếu vượt quá các quy định trên, Google sẽ tiến hành thu phí nhà phát triển ứng dụng đó.

10.2 Quy trình phát triển một ứng dụng trên Google App Engine

Quy trình phát triển một ứng dụng trên Google App Engine cơ bản tuân theo các bước sau:

10.2.1 Bước 1, đăng kí sử dụng dịch vụ

Đăng kí 1 tài khoản trên Google App Engine, cho phép sử dụng tài khoản Gmail để đăng kí sử dụng. Sau khi đăng kí, người dùng sẽ có 1 bảng điều khiển đám mây. Tại đây có thể thêm, xóa và cấu hình các ứng dụng có thể được phát triển, có tối đa 10 ứng dụng được phát triển cho một tài khoản truy cập Google App Engine. Hình 24 và 25 mô phỏng về giao diện của bảng điều khiển ứng dụng đám mây sau khi đăng kí tài khoản thành công trên Google App Engine.

10.2.2 Bước 2, cài đặt bộ công cụ phát triển phần mềm và môi trường phát triển ứng dụng

Google đã xây dựng sẵn một bộ công cụ phát triển ứng dụng (SDK) và một plug-in giúp người sử dụng cài đặt và sử dụng trên 1 IDE là Eclipse giúp cho việc phát triển ứng dụng dễ dàng hơn.

Vì vậy ở bước này, lập trình viên tải về và cài đặt 2 bộ công cụ chính là SDK và plugin để bắt đầu phát triển ứng dụng Google App Engine trên môi trường Eclipse.

Hình 26, giới thiệu giao diện của Eclipse sau khi đã cài đặt đầy đủ SDK và plug-in.

11

Page 45: Thuat toan dam may

Tên đề tài ở đây

Hình 24: Sau khi đăng nhập, Google AE sẽ liệt kê các ứng dụng đã được tạo ra và đưa lên đám mây

Hình 25: Sau khi click chọn vào ứng dụng, Google AE sẽ thống kê về lưu lượng đã sử dụng, thời gian sử dụng CPU, các thông số về băng thông, yêu cầu, sô lần truy cập ,…

của ứng dụng

10.2.3 Bước 3, phát triển ứng dụng và chạy chúng trên máy cục bộ

Ở bước này người sử dụng phát triển ứng dụng bình thường như các ứng dụng khác, lưu ý tới những giới hạn của bộ công cụ phát triển và chạy chúng để kiểm thử trên máy local.

12

Page 46: Thuat toan dam may

Tên đề tài ở đây

10.2.4 Bước 4, đưa mã nguồn lên trên đám mâycủa Google và tiến hành cài đặt để chạy chúng trên môi trường internet.

Ở bước này, nếu không dùng các công cụ có sẵn trên môi trường IDE, người lập trình có thể sử dụng các câu lệnh của bộ SDK để đưa dự án lên trên đám mây của Google và tiến hành biên dịch. Việc xác định vị trí đưa dự án lên đám mây dựa vào các id mà trong quá trình tạo dự án trong bảng điều khiển tài khoản Google App Engine cung cấp trước.

Ngoài ra, đễ dễ dàng phát triển, plugin trên eclipse cũng hỡ trợ người dùng đưa dự án lên trên đám mây cũng theo cách trên nhưng đơn giản hơn bằng giao diện đồ họa, chỉ cần cầu hình một vài tham số khi khởi tạo dự án và sao khi chạy test thử xong trên local ta bấm menu đưa dự án lên đám mây chạy đơn giản và bớt phức tạp.

10.3 Demo ứng dụng trên Google App Engine

10.3.1 Mô tả ứng dụng

Ứng dụng có chức năng đơn giản là khi người dùng truy cập vào ứng dụng sẽ xuất hiện 1 box cho phép người dùng nhập vào tên hoặc chuỗi bất kì, sau khi nhấn nút, thông điệp sẽ gửi lên đám mây và sẽ trả về kết quả là chuỗi người dùng nhập vào kèm thông điệp hello cũng như thông tin về App Engine và thông tin máy tính mà người dùng đang sử dụng.

10.3.2 Đăng kí tài khoản Google AE và cài đặt Eclipse, bộ Google App Engine SDK và Google App Engine for Eclipse.

Sau khi đăng kí thành công tài khoản trên Google AE ta tiến hành tạo 1 dự án có tên luuhoanglongtest1 như trên hình 24.

Bấm chọn vào tên ứng dụng ta có các thông tin bảng điều khoeẻn như trên hình 25.

Tiếp đó ta tiến hành download và cài đặt bộ Google AE SDK từ trang chủ của Google AE.

Tải và cài đặt bộ công cụ Eclipse.

Sau khi cài đặt ta tiếp tục cài đặt plug-in Google AE cho Eclipse. Sau khi cài đặt thành công, giao diện Eclipse có như hình 26.

13

Page 47: Thuat toan dam may

Tên đề tài ở đây

Hình 26: Môi trường Eclipse sau khi đã cài đặt Google App Engine plugin

10.3.3 Tạo dự án mới và tiến hành lập trình

Sau khi cài đặt được plug-in, khi tạo dự án mới ta sẽ có thêm lựa chọn là Web Application. Ta chọn dự án loại này, đặt tên và hoàn thành.

Sau khi tạo ta tiến hành lập trình các file code theo hình sau:

Hình 27: Các file code của demo

14

Page 48: Thuat toan dam may

Tên đề tài ở đây

Một số chức năng các file như sau:

GAẸJ___ChapterThree.html và GAEJ___ChapterThree.css: tạo giao diện cho ứng dụng

Gaej.chapterthree.client và Gaej.chapterthree.server: khởi tạo kết nối giữa đám mây và client. Những packet và lớp trong packet này sẽ do bộ SDK và IDE tự tạo ra trong lúc khởi tạo dự án.

Jdoconfig.xml : cấu hình cơ sở dữ liệu cho ứng dụng.

Sau khi lập trình ta có thể cho ứng dụng chạy ngay trên máy local để kiểm tra và test ứng dụng bằng cách nhấp chuột phải lên project, chọn Run As -> Web Application.

Kết quả được như hình sau:

Hình 28: Kết quả chạy trên máy Local.

10.3.4 Đưa dự án lên đám mây

Như đã đề cập ở các phần trước, để đưa dự án lên đám mây, trước hết cần phải đăng kí tài khoản Google App Engine, lập trình viên sẽ phải dùng tài khoản này để login vào trên cả môi trường Eclipse, sau khi đăng nhập, thông tin tài khoản sẽ nằm ở góc dưới, bên trái của cửa sổ Eclipse.

15

Page 49: Thuat toan dam may

Tên đề tài ở đây

Tiếp tục người dùng tạo ra 1 ứng dụng đám mây trên bảng điều khiển như ở hình 24. Ứng dụng sẽ có 1 application ID duy nhất và ta sẽ dùng ID này để cài vào Eclipse trước khi đưa ứng dụng lên đám mây.

Nhấp chọn biểu tượng Deploy Application Project trên cửa sổ Eclipse ta có:

Hình 29: Cấu hình ứng dụng đám mây.

Ta điền tên ứng dụng (application ID) vào, như ở hình 26 là luuhoanglongtest1 là tên ứng dụng giống như đã tạo trên đám mây. Tiếp tục ta nhấn OK. Ứng dụng sẽ tự động được plug-in đưa lên trên đám mây, biên dịch và thực hiện.

Nếu thành công, ta gõ dòng địa chỉ sau: http://luuhoanglongtest1.appspot.com. Ta sẽ thấy kết quả chạy trên đám mây như hình 30.

16

Page 50: Thuat toan dam may

Tên đề tài ở đây

Hình 30: Kết quả chạy trên đám mây

17

Page 51: Thuat toan dam may

Chương 4: PHAT TRIỂN ỨNG DUNG VĂN PHÒNG TRÊN WEB

Chương 3 của đồ án đã làm so sánh và lấy được ví dụ demo 1 ứng dụng đơn giản chạy trên nền tảng đám mây của Google đó là Google App Engine.

Tuy nhiên, việc triển khai dự án trên Google App Engine vẫn còn nhiều hạn chế vì đó là một nền tảng , hỗ trợ vẫn chưa đầy đủ và mọi thứ đều phụ thuộc vào các API và các tiêu chuẩn của Google.

Điện toán đám mây không chỉ có vậy, không chỉ có dạng Platform, trong chương 2 của đề tài đã trình bày là vẫn còn 3 dịch vụ được tiếp cận nữa của đám mây đó là Software as a Service và Infrastructure as a Service (IaaS). Trong đó, IaaS là cách thức các nhà cung cấp dịch vụ sử dụng công nghệ ảo hóa các cơ sở hạ tầng để cung cấp một cách tùy biến và mềm dẻo các tài nguyên phần cứng và phần mềm. Từ đó, dễ dàng cho thuê các máy chủ với dung lượng và sức mạnh xử lý cũng như hệ điều hành trên đó tùy biến theo nhu cầu của người sử dụng. Ví dụ, một doanh nghiệp trong những ngày bình thường chỉ có nhu cầu thuê 1 server chạy Windows, với cấu hình CPU, RAM, bộ nhớ lưu trữ trung bình để chạy website của công ty. Đến một thời điểm nào đó, công ty có một dự án lớn, cần triển khai, dự án yêu cầu phải sử dụng linux, với CPU và RAM cũng như lưu trữ cao hơn. Điều này hoàn toàn có thể thực hiện được bằng công nghệ ảo hóa. Nhà cung cấp có thể nâng cấu hình và chạy nền tảng hệ điều hành khác cho doanh nghiệp chỉ trong 1 thời gian rất ngắn. Và sau đó công ty có không có nhu cầu đó nữa, muốn trở lại như cấu hình và hệ điều hành ban đầu cũng hết sức dễ dàng. Đó là cách thức hoạt động của các trung tâm dữ liệu (Data Center), một trong những điển hình điện toán đám mây phổ biến và là xu hướng ngày nay.

Trong chương này, nhóm thực hiện phát triển một ứng dụng văn phòng cho phép thao tác nhiều người một lúc, chạy trên môi trường web, và sẵn sàng để triển khai trên đám mây. Để chạy, chỉ cần thuê ở một Data Center (ở Việt Nam có Viettel, FPT và IBM đã khánh thành và đưa vào hoạt động các trung tâm này), một máy chủ linux, có hỗ trợ Java Virtual Machine và các ngôn ngư dựa trên JVM như Scala,… là có thể triển khai đám mây chạy được dự án.

Do thời gian tìm hiểu điẹn toán đám mây là một lĩnh vực mới rất mất thời gian nên để tiết kiệm thời gian làm đồ án, nhóm thực hiện đưa vào sử dụng mã nguồn mở Etherpad để thực hiện demo.

Etherpad trước đây là một dự án phát triển dựa trên Java phục vụ cho việc cộng tác làm việc trên mạng. Sau này, dự án được Google mua lại và mở mã nguồn cho đông đảo người sử dụng theo chuẩn Apache.

11. Giới thiệu các chức năng

Đây là chương trình xử lý ký tự đơn giản dựa trên nền web , chương trình cho phép mọi người làm việc, tương tác trên cùng 1 văn bản trong thời gian thực.

Tên tác giả, LỚP XXX 19

Page 52: Thuat toan dam may

Khi nhiều người chỉnh sửa cùng một tài liệu đồng thời , mọi thay đổi được lập tức hiển thị trên màn hình của những người cùng làm việc.Chương trình đem đến sự đơn giản hóa cho những công việc yêu cầu tính cộng tác như : ghi chú trong các cuộc họp, soạn thảo văn bản theo phiên, nhóm lập trình , giáo dục và nhiều hơn nữa.

Sau khi build source code, ta sẽ có 1 server lắng nghe kết nối trên cổng 9000.

Để sử dụng chương trình trên localhost ta gõ vào trình duyệt địa chỉ : http://localhost:9000.

Màn hình chào mừng sẽ hiện ra. Để tạo một pad mới ta click vào dòng chữ : “Click để tạo file mới.”

Giao diện chính của chương trình :

Tên tác giả, LỚP XXX 20

Page 53: Thuat toan dam may

Tên đề tài ở đây

Trên giao diện của chương trình ta thấy có các vùng sau :

Vùng cho phép điền tên người dùng, chọn mùa chữ tương ứng với mỗi người dùng.

Vùng hiển thị nội dung chat giữa những người dùng.

Vùng cho phép nhiều người dùng cùng soạn thảo nội dung của văn bản.

Vùng chứa các công cụ để định dạng văn bản.

Vùng lựa chọn các chức năng khác của chương trình.

Chương trình có các chức năng chính như sau :

Cho phép nhiều người cùng soạn thảo trên một tài liệu, gọi chung là “pad”.

Tự động lưu lại những thay đổi trên tài liệu trong thời gian ngắn.

Cho phép người dùng lưu trữ tài liệu tại những mốc thời gian tùy ý.

Tính năng Time Slider cho phép mọi người xem lịch sử tác động của tài liệu.

Cho phép thực hiện một số tính năng định dạng văn bản cơ bản.

Cho phép những người tham gia soạn thảo có thể chat với nhau.

Cho phép lưu nội dung file đã thao tác thành file txt hoặc html.

Minh họa các chức năng của chương trình:

21

Page 54: Thuat toan dam may

Tên đề tài ở đây

Chức năng soạn thảo văn bản đồng thời :

Thông tin tương ứng tại màn hình server :

Chức năng chat giữa những người dùng với nhau:

22

Page 55: Thuat toan dam may

Tên đề tài ở đây

Thông điệp tương ứng trên server :

Chức năng Time Slider :

Ta nhấp chọn nút Time Slider để chọn chức năng này.

Trình duyệt sẽ mở ra một tab mới cho phép xem lại lịch sử tác động lên pad.

23

Page 56: Thuat toan dam may

Tên đề tài ở đây

-Thông điệp tương ứng trên server:

12. Cấu trúc mã nguồn

Mã nguồn được tổ chức theo cấu trúc sau

24

Page 57: Thuat toan dam may

Tên đề tài ở đây

13. Chức năng một số file mã nguồn

13.1 Padevents.js : Ghi lại các sự kiện xảy ra trên “Pad” :

- function onNewPad(pad) : Sự kiện khởi tạo pad mới :

+ Đầu vào : Đối tượng pad.

+ Đầu ra : Mở ra một pad và lưu padID vào CSDL.- function onDestroyPad(pad) : Sự kiện hủy một pad.

+ Đầu vào : Đối tượng pad.

+ Đầu ra : Hủy 1 pad đã có và lưu vào. CSDL.

- function onUserJoin(pad, userInfo): Sự kiện 1 user Join vào chương trình.

+ Đầu vào : Đối tượng pad, thông tin người dùng.

+ Đầu ra : Mở ra một pad mới cho người dùng và lưu thông tin người dùng vào file log.

- function onUserLeave(pad, userInfo) : Sự kiện 1 user rời khỏi chương trình:

+ Đầu vào : Đối tượng pad, thông tin người dùng.

25

Page 58: Thuat toan dam may

Tên đề tài ở đây

+ Đầu ra : Đóng kết nối với người dùng rời khỏi chương trình, cập nhật vào CSDL.- function onUserInfoChange(pad, userInfo) : Thay đổi thông tin người dùng.- function onClientMessage(pad, senderUserInfo, msg) : Sự kiện người dùng tạo ra các sự kiện có gửi thông điệp lên server:

+ Đầu vào : Đối tượng pad, thông tin user , thông điệp.

+ Đầu ra : Tùy dạng thông điệp sẵn có mà server sẽ có các hồi đáp khác nhau- function onEditPad(pad, authorId) .

13.2 Model.js: Các phương thức cho phép truy cập đến 1 đối tượng “pad”, kiểm tra sự tồn tại của pad và tạo ra 1 pad nếu nó chưa có sẵn.

Bao gồm các phương thức :

- function _getModelCache():

- function cleanText(txt):

- function accessPadGlobal(padId, padFunc, rwMode)

- function doWithPadLock(padId, func)

- function isPadLockHeld(padId)

- function _getPadMetaData(padId)

- function _insertPadMetaData(padId, obj)

- function _removePadMetaData(padId)

- function _getPadAPool(padId)

- function _removePadAPool(padId)

- function _getPadTemp(padId)

- function _getPadStringArray(padId, name)

- function _destroyPadStringArray(padId, name)

- function _getPadSqlMeta(padId)

- function _writePadSqlMeta(padId, updates)

- function removeFromMemory(pad)

13.3 Chatarchive.js : Xử lý các thao tác khi các client chat với nhau.

Bao gồm các - function:

26

Page 59: Thuat toan dam may

Tên đề tài ở đây

- - function onChatMessage(pad, senderUserInfo, msg): Gửi các thông điệp chat ra màn hình.

+ Đầu vào : Đối tượng pad, Thông tin client gửi thông điệp, thông điệp.

+ Đầu ra : Xuất thông điệp và thông tin người gửi lên màn hình server.

- function getRecentChatBlock(pad, howMany):

- function getChatBlock(pad, start, end):

13.4 Collab_server.js: Bao gồm các phương thức xác thực User (thông qua userId), lấy thông tin phiên bản (pad revision), áp dụng các thay đổi do user tạo ra trên pad, cập nhật các thay đổi do user tạo ra tới tất cả các client đang sử dụng cùng 1 pad.

- function onStartup()- function _padIdToRoom(padId)

- function _roomToPadId(roomName)

- function removeFromMemory(pad)- function _getPadConnections(pad) : Lấy thông tin về pad để mở kết nối.

+ Đầu vào : Đối tượng pad.

+ Đầu ra : Tạo ra một kết nối tới pad.

- function guestKnock(globalPadId, guestId, displayName) : Xác định các quyền của một người dùng guest ( người dùng chưa đăng ký) có khi truy cập vào 1 pad.

+ Đầu vào : Id của pad, Id của guest , tên user guest.

+ Đầu ra : Thông báo của server khi người dùng guest thao tác trên pad.- function _verifyUserId(userId) : Xác minh người dùng là guest hay người dùng đã đăng ký .

+ Đầu vào : userId.

+ Đầu ra : Trả về kiểu của người dùng.

- function _checkChangesetAndPool(cs, pool) - function _doWarn(str) {- function _getPadRevisionSockets(pad) - function applyUserChanges(pad, baseRev, changeset, optSocketId, optAuthor) : Áp dụng các thay đổi mà người dùng đã thực hiện trên pad.

+ Đầu vào : pad, phiên bản pad, thay đổi , SoketId của client thực hiện thay đổi , thông tin tác giả thay đổi.

+ Đầu ra : Cho phép lưu các thay đổi .

- function updateClient(pad, connectionId) :

27

Page 60: Thuat toan dam may

Tên đề tài ở đây

+ Đầu vào : pad, connectionId:

+ Đầu ra : Nếu phiên bản của client cũ hơn phiên bản hiện tại của server thì server sẽ cập nhật lại nội dung mới nhất cho client.

- function updatePadClients(pad)

- function applyMissedChanges(pad, missedChanges) - function getAllPadsWithConnections() - function broadcastServerMessage(msgObj) - function appendPadText(pad, txt) - function setPadText(pad, txt) - function setPadAText(pad, atext) - function applyChangesetToPad(pad, changeset) - function _applyChangesetToPad(pad, changeset) - function getHistoricalAuthorData(pad, author) : Lấy thông tin về những thiết đặt trong lần sử dụng trước của người dùng :

+ Đầu vào : pad, người dùng.

+ Đầu ra : Nếu trước đây người dùng đã sử dụng chương trình thì các thiết đặt cũ như tên, màu chữ .. sẽ được dùng. Nếu là lần sử dụng đầu tiên thì người dùng phải thiết đặt.- function buildHistoricalAuthorDataMapFromAText(pad, atext) {- function buildHistoricalAuthorDataMapForPadHistory(pad) - function getATextForWire(pad, optRev) - function getCollabClientVars(pad) - function getNumConnections(pad) : Đếm số lượng người dùng đang kết nối tới cùng 1 pad.

+ Đầu vào : pad.

+ Đầu ra : Số lượng client kết nối đến pad.- function getConnectedUsers(pad) : Thông tin của những user đang sử dụng chương trình để thao tác trên cùng 1 pad.

+ Đầu vào : pad.+ Đầu ra : Tên những user đang cùng thao tác trên pad.

- function bootAllUsersFromPad(pad, reason) - function dumpStorageToString(pad) - function _getPadIdForSocket(socketId) : Lấy PadId ứng với SocketId

+ Đầu vào : socketId

+ Đầu ra : PadId tương ứng với socketId đang kết nối.

- function _serverDebug(msg) - function _accessSocketPad(socketId, accessType, padFunc, dontRequirePad) :

- function _accessConnectionPad(connection, accessType, padFunc, dontRequirePad) - function _accessCollabPad(padId, accessType, padFunc, dontRequirePad) : Cho phép truy cập đồng thời tới 1 pad.

+ Đầu vào : padId, kiểu truy cập, padFunc,

28

Page 61: Thuat toan dam may

Tên đề tài ở đây

+ Đầu ra : Nếu socket có kết nối đến 1 pad thì cho phép thao tác trên pad cùng với nhiều người dùng khác, nếu không sẽ xuất thông báo trên server.

- function _accessExistingPad(padId, accessType, padFunc, dontRequireExist) : Cho phép truy cập vào 1 pad với padId sẵn có.

- function _handlePadUserInfo(pad, userInfo) : Xử lý thông tin người dùng.

+ Đầu vào : pad, userInfo

+ Đầu ra : Lưu thông tin gồm màu chữ, tên người dùng ở lần truy cập cuối cùng.- function _sendUserInfoMessage(connectionId, type, userInfo) :Gửi thông tin user lại cho kết nối có connectionId.

- function translateSpecialKey(specialKey)

- function getSpecialKey(name)  - function _handleCometMessage(connection, msg) - function _correctMarkersInPad(atext, apool) - function _updateDocumentConnectionUserInfo(pad, socketId, userInfo):

13.5 Pad_control.js:Kiểm soát các thông tin về các tác động trên pad , trả về default pad text : đoạn văn bản xuất hiện khi tạo mới pad, cho phép gán các thông tin như tên user , màu chữ ứng với từng user, render một pad, render saverevision….

- function onStartup() : tạo ra bảng PAD_DIAGNOSTIC trong CSDL.- function getDefaultPadText() : Trả về đoạn văn bản chào mừng khi mới kết nối đến chương trình.- function assignName(pad, userId) : Gán username tương ứng với userId đã đăng ký.

- function assignColorId(pad, userId) : Gán màu chữ ứng với userId đã đăng ký.

- function _getPrivs() Các hàm liên quan tới biểu diễn:- function render_linkfile() - function render_newpad() - function render_newpad_xml_post() - function render_pad(localPadId) - function render_create_get() - function render_create_post() - function render_saverevision_post() - function render_saverevisionlabel_post() - function render_getrevisionatext_get()

29

Page 62: Thuat toan dam may

Tên đề tài ở đây

- function _recordDiagnosticInfo(padId, diagnosticInfoJson) - function recordMigratedDiagnosticInfo(objArray) - function render_reconnect() - function render_connection_diagnostic_info_post() - function _applyMissedChanges(localPadId, missedChangesJson) - function render_feedback_post() - function render_emailinvite_post() - function render_slider() - function render_auth_get() - function render_auth_post() - function render_chathistory_get()

30

Page 63: Thuat toan dam may

Chương 5: KẾT LUẬN VA HƯỚNG PHAT TRIỂN CỦA ĐỀ TAI

14. Kết luận

Đề tài cơ bản đã hoàn thành được những nội dung đề ra bao gồm:

Tìm hiểu được cơ sở lý thuyết về điện toán đám mây, nguyên tắc hoạt động, cấu trúc và các dịch vụ triển khai trên một đám mây điện toán.

Phân biệt các loại đám mây hiện tại, so sánh được điện toán đám mây với mô hình Client Server và đặc biệt là phân biệt điện toán đám mây với điện toán lưới và tính toán song song.

Trình bày và so sánh được một số nền tảng phát triển điện toán đám mây hiện tại như Google App Engine, Amazon Webservices, so sánh các dịch vụ này với nhau.

Trình bày được quy trình phát triển ứng dụng dựa trên nền tảng đám mây của Google là Google App engine và demo được ứng dụng chạy trên nền tảng này để thấy rõ được cách thức hoạt động của một đám mây điện toán.

Xây dựng được một ứng dụng văn phòng dựa trên mã nguồn mở chạy trên web và sẵn sàng đưa lên đám mây tại các trung tâm dữ liệu (Data Center) tại Việt Nam.

15. Hướng phát triển của đề tài

Mặc dù đã cơ bản hoàn thiện mục tiêu, nhưng đề tài vẫn còn một vấn đề nữa cần giải quyết trong thời gian tới. Đây cũng là nguyên nhân khách quan, vì hiện tại giá thành thuê tại các trung tâm dữ liệu khá cao và vì còn là sinh viên nên nhóm thực hiện chưa đưa được ứng dụng lên đám mây tại các trung tâm dữ liệu để chạy thử. Nhóm thực hiện cũng đã thử tạo một đám mây riêng, nhưng việc này cũng đòi hỏi các thiết bị có cấu hình rất mạnh và giá thành cao.

Tuy nhiên với sự phát triển như vũ bão hiện nay của CNTT, giá thành thuê các dịch vụ này sẽ ngày càng hạ thấp và việc đưa lên đám mây là nhiệm vụ và hướng phát triển thời gian đến của đề tài.

Tên tác giả, LỚP XXX 31

Page 64: Thuat toan dam may

PHU LUC

Tấ cả các phụ lục nằm ở đây và được đánh số thứ tự cùng tên phụ lục :

PHU LUC A

xxx

i

Page 65: Thuat toan dam may

TAI LIỆU THAM KHẢO

[1] <Tên các tác giả>. <Tên tài liệu chữ nghiêng>. <Tên, số, tập, nơi và năm công bố tài liệu hoặc hội thảo KH>, <từ trang đến trang> hoặc <số trang>.

[2] Jacque Arsac. Nhập môn lập trình. Nguyên bản : Premières lecons de programmation. Trung tâm hệ thống Thông tin ISC, Hà nội 1991, 241 tr.

[3] Doug Cooper. Standard Pascal User Reference Manual. W.W.Norton & Company, 1983, 476 tr.

[4] Jacque Courtin, Irène Kowaski. Initiation à l’algorithmique et aux structures de données. Volume 1. Dunord, Paris 1994, 397 tr.

[5] Phan Huy Khánh, Võ Trung Hùng. Thiết kế cơ sở dữ liệu đa ngữ ngữ pháp tiếng Việt. Tạp chí Khoa học Công nghệ, Số 36+37, 2002, tr19-24.

[6] Detmoungkhoum Saly. Xây dựng từ điển tin học Lào-Anh-Việ. Báo cáo tốt nghiệp Thạc sĩ ngành CNTT, Đại học Đà Nẵng Khoá 2002-2005.

[7] Nguyễn Như Ý. Đại từ điển tiếng Việt. Nhà Xuất bản Văn hoá-Thông tin 1999.

[8] Trang web : http://www.informatik.uni-leipzig.de/~duc

[9] ...

1

Page 66: Thuat toan dam may

TÓM TẮT LUẬN VĂN TỐT NGHIỆP

Phần này viết tên đề tài (chữ nhỏ 13pt) và :

tóm tắt nội dung LUẬN VĂN TỐT NGHIỆP, viết ngắn gọn và rõ ràng(15 đến 20 dòng) cho biết :

Đề tài đã được đặt ra như thế nào (bối cảnh), mục đích (giải thích rõ hơn tên đề tài) và nhiệm vụ phải thực hiện (các mục tiêu cụ thể và kết quả cần có)

SV đã giải quyết vấn đề gì (đã nghiên cứu lý thuyết, thực tiễn như thế nào, đã đề xuất được những giải pháp (biện pháp) hay sáng kiến gì ?).

SV đã giải quyết đến đâu (nêu một số kết quả tiêu biểu).

Tãn taïc giaí åí âáy, LÅÏP XXX 3