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 DB
Amazon SimpleDB lă một dịch vụ cơ sở dữ liệu đâm mđy cung cấp câc chức năng cơ sở dữ liệu để lưu trữ dữ liệu chỉ mục vă hăng đợi. Simple DB không phải lă một cơ sở dữ liệu quan hệ trong đâm mđy nhưng lă một phương tiện lưu trữ để lưu trữ vă lấy dữ liệu.
Hình 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 .
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.
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 Engine
Mộ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
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.
7.2.3 Datastore
Datastore 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
Bảng 1: Thống kí câc Data API được dùng trín Google App Engine
Hình 23: So sânh một số nền tảng vă dịch vụ đâm mđy hiện tại
Dự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ến
Amazon / 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ín
Doanh 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ụ 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ềnGoogle App Engine 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ụ 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.
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.
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