Điện toán đám mây cho doanh nghiệp: Phần 2: WebSphere sMash và DB2 Express-C trên đám mây công khai Amazon EC2 Các doanh nghiệp và đám mây công khai Để hiểu làm thế nào một doanh nghiệ
Trang 1Điện toán đám mây cho doanh nghiệp: Phần 2: WebSphere sMash và DB2 Express-C trên đám mây công khai Amazon
EC2
Các doanh nghiệp và đám mây công khai
Để hiểu làm thế nào một doanh nghiệp có thể thúc đẩy các dải điện toán đám mây công khai, quan tâm hai điểm sau:
Các doanh nghiệp tiêu thụ các ứng dụng cung cấp bởi đám mây công khai Đó có thể
là một ứng dụng được thiết kế để xử lý dữ liệu số tiền phải trả cho nhân viên, hoặc có thể
là một hệ thống quản lý quan hệ khách hàng Bằng cách tận dụng phần mềm được phân phối theo cách này, một công ty có thể trút bỏ gánh nặng của việc cài đặt và bảo trì ứng dụng ở các trung tâm dữ liệu riêng tư Các công ty cũng có thể nhận lợi ích từ việc tiết kiệm chi phí liên quan đến các phí bản quyền (license), vì hầu hết các nhà cung cấp đám mây thu phí dựa vào việc tiêu thụ sử dụng (dịch vụ của họ)
Các doanh nghiệp tận dụng các giải pháp đặt dựa trên đám mây để phân phối các ứng dụng cho người dùng Bằng cách làm như vậy, các công ty được giải phòng khỏi
việc bảo trì và không cần các hệ thống sản xuất vì nhà cung cấp đám mây sẵn sàng cho việc cung cấp tài nguyên cơ sở hạ tầng thỏa mãn yêu cầu những người dùng về mặt ứng dụng Mô hình này cũng cung cấp cho việc tăng cường tính thường gặp của các dịch vụ của một công ty, vì các dịch vụ được phân phối theo cách đám mây công khai có thể truy cập ở bất kỳ thời gian nào từ bất kỳ máy nào với một kết nối mạng có sẵn
Bất chấp bối cảnh, một chủ đề thông dụng là dòng giá trị ngầm tới một doanh nghiệp Các đám mây công khai rất sạch có thể giúp một doanh nghiệp giảm các chi phí liên quan đến sở hữu phần mềm và các thành phần cơ sở hạ tầng trung tâm Kém trực tiếp hơn, dùng đám mây công khai có thể phân phối giá trị bằng cách cho phép một công ty phản ứng nhanh để thay đổi nhu cầu về dịch vụ của họ, cho phép các dịch vụ vươn tới các thị trường mới và cho phép các nguồn nhân lực có giá trị tập trung vào phân phối sáng chế nghiệp vụ, hơn là đơn giản phân phối cơ sở
hạ tầng kỹ thuật mà hỗ trợ doanh nghiệp
Về đầu trang
IBM và đám mây công khai
IBM là một nhà đóng góp tích cực trong đám mây công khai, cung cấp các giải pháp cho phép một công ty đạt tới các ứng dụng từ đám mây và nhận các ứng dụng người dùng cuối của họ bằng cách tận dụng một đám mây công khai Từ quan điểm một nhà cung cấp ứng dụng, IBM cung cấp IBM Lotus® Live, IBM Lotus Sametime® Unyte® và các công cụ phát triển phần mềm đặt trên một đám mây công khai Bộ công cụ này cho phép các người dùng gặp gỡ, thảo luận, hợp tác và sáng tạo tất cả bởi tác dụng đòn bẩy của các dịch vụ được cung cấp bởi đám mây Ngoài cung cấp các dịch vụ này, tầm nhìn Global Business Service của IBM giúp đỡ các tổ chức triển khai các dịch vụ mà thúc đẩy cung cấp đám mây công khai để mà phân phối các giá trị nhiều người muốn lấy
Trang 2Phần còn lại của bài này tập trung vào làm thế nào IBM cho phép bạn nhận các ứng dụng hiệu quả bằng cách tận dụng một cơ sở hạ tầng đám mây công khai Như đã đề cập ở trước, IBM đóng gói hàng loạt các đề xuất sản phẩm doanh nghiệp của họ dưới dạng Amazon Machine Images, bởi thế cho phép việc dùng phần mềm trên cơ sở hạ tầng Amazon EC2 thông dụng Các IBM AMI bao gồm:
IBM WebSphere Portal
IBM Lotus Web Content Management Standard Edition
IBM WebSphere sMash
IBM Informix® Dynamic Server Developer Edition 11.5
IBM DB2 Express-C 9.5
Bằng cách đánh dấu phần mềm này sẵn sàng dưới dạng các bản quyền phát triển miễn phí thông qua cơ sở hạ tầng Amazon EC2 IBM cũng có thể đạt tới một cộng đồng phục vụ hơn 400,000 người dùng và thu hút hơn 80% các nhà phát triển tận dụng các dịch vụ phát triển điện toán đám mây
Để thêm thông tin về quan điểm của IBM cho các nhà phát triển và điện toán đám mây, hãy thăm không gian developerWorks Cloud Computing (Điện toán đám mây) Bài viết này tập trung vào các năng lực Platform (nền tảng) như là một Service (dịch vụ) (PaaS) và Data (dữ liệu) như là một Service (dịch vụ) lần lượt của WebSphere sMash và DB2 Express-C AMIs
Về đầu trang
WebSphere sMash và DB2 Express-C
Một cách riêng rẽ, WebSphere sMash và DB2 Express-C là các công cụ mạnh mẽ cho các nhà phát triển Dùng WebSphere sMash, bạn có thể tạo các ứng dụng kiểu Web 2.0 dùng các công nghệ được sử dụng và các mẫu được biết đến rộng rãi như là DOJO, PHP, Groovy và các dịch vụ REST DB2 Express-C cung cấp kho dữ liệu hiệu quả, đáp ứng tốt và tin cậy cho dữ liệu doanh nghiệp và bao gồm cả khả năng quản lý thuần XML (pure XML) Tuy nhiên, một mức cao hơn của giá trị có thể được nhận ra khi các công nghệ này được kết hợp để giao các ứng dụng Web phong phú, phản ứng nhanh, hướng dữ liệu
Ứng dụng mẫu được bao gồm trong bài này minh họa một ứng dụng đặt chỗ trong nhà hàng để cung cấp khái niệm sơ lược các khả năng sẽ được cung cấp cùng với WebSphere sMash Zero Resource Model (ZRM) và một cơ sở dữ liệu DB2 Express-C Các mẫu cho ứng dụng này có thể
dễ dàng được mở rộng để giải quyết dữ liệu phức tạp nhất và các mối quan hệ dữ liệu The Zero Resource Model tích hợp với DB2 Express-C được tận dụng để cung cấp một kinh nghiệm tiền
kỳ (phần đầu của quá trình) phong phú được cung cấp sức mạnh bởi một hậu kỳ hạng nhẹ hiệu quả và dễ đáp ứng
IBM AMIs được cung cấp với một bản quyền miễn phí, nhưng nhớ là phải kết thúc các thể hiện khi hoàn thành Nếu không, bạn sẽ tiếp tục phải trả tiền thuê bao theo giờ của Amazon cho các thể hiện được đặt trên đó (hosting)
Trang 31 Cài đặt AMIs
Để dùng IBM AMIs, bạn phải thi hành các bước sau, điều kiện đầu tiên là:
a Cài đặt tài khoản Amazon Web Services (AWS) của riêng bạn Tài khoản này
được dùng để quản lý việc sử dụng EC2 của bạn
b Lấy và cấu hình WebSphere sMash AMI và DB2 Express-C AMI Khi bạn cấu
hình thể hiện DB2 Express-C, dùng các tên người dùng mặc định cho mục đích
minh họa Đừng tạo cơ sở dữ liệu, các chi tiết đó được mô tả trong phần tiếp theo
c Triển khai AMIs vào tài khoản AWS của bạn bằng các cung cấp theo chỉ dẫn
2 Tạo và kích hoạt cơ sở dữ liệu
Sau khi triển khai cả DB2 Express-C và WebSphere sMash AMIs vào EC2, cấu hình cơ
sở dữ liệu của thể hiện đang chạy DB2 Express-C của bạn Cơ sở dữ liệu này chứa các
bảng được tận dụng bởi ứng dụng của bạn
a Dùng SSH để đăng nhập và xác thực thể hiện DB2 AMI của bạn Sau khi bạn
đăng nhập vào, chuyển qua người dùng db2inst1 dùng lệnh su - db2inst1
b Tạo cơ sở dữ liệu cho ứng dụng dùng lệnh createDatabase Từ thư mục
/home/db2inst1/bin, nhập vào lệnh ./createDatabase RSTDB
Hình 1 Tạo cơ sở dữ liệu
c Dừng và khởi động lại dịch vụ DB2 để kích hoạt cơ sở dữ liệu mới của bạn
Chuyển lại người dùng root bằng lệnh su và chạy các lệnh rcdb2 stop và rcdb2
start
Trang 4Hình 2 Kích hoạt cơ sở dữ liệu
Sau khi bạn khởi động lại dịch vụ, cơ sở dữ liệu RSTDB được kích hoạt, và thể hiện DB2
Express-C được chạy trên cổng 50001 Cấu hình thể hiện DB2 Express-C của bạn giờ
đây đã hoàn thành ZRM trong WebSphere sMash được dùng để tích hợp với hậu kỳ, bởi
thế tất cả các bảng của bạn được cấu hình một cách tự động
3 Cài đặt ứng dụng
Sau khi bạn cài đặt thể hiện WebSphere sMash AMI, đăng nhập vào ứng dụng từ
http://<ec2_host>:8070/ Ở đây bạn sẽ tạo ứng dụng WebSphere sMash mà sẽ được
dùng ở ví dụ Để làm thế, hãy nhấn Create new application để tạo ứng dụng mẫu trong
khung (panel) bên trái của AppBuilder Khi được nhắc hãy nhập tên
RestaurantSeating Sau khi tạo ứng dụng, nhấn vào tên ứng dụng ở khung trung tâm
của console để bắt đầu thêm nội dung cho ứng dụng
4 Tác dụng đòn bẩy Zero Resource Model
ZRM hỗ trợ bởi WebSphere sMash được thiết kế để làm đơn giản triệt để quy trình cung
cấp truy cập kiểu REST tới nơi chứa dữ liệu phía sau Mô hình hỗ trợ một phương thức
cung cấp truy cập với ít mã và cấu hình Đơn giản hãy tạo một mô hình dữ liệu và trình
điều khiển tài nguyên mà được gọi để điều khiển các tương tác REST với dữ liệu Các
trình điều khiển dữ liệu chứa rất ít mã để xử lý dữ liệu vào, và ZRM hoàn toàn ẩn các
tương tác với cơ sở dữ liệu ở phía sau
a Để dùng ZRM dưới dạng ví dụ, tạo các mô hình tài nguyên cho dữ liệu của bạn
Các mô hình tài nguyên này định nghĩa định dạng dữ liệu của các tài nguyên
trong ứng dụng của bạn và được sử dụng bởi ZRM để cung cấp quyền truy cập tới
gian dữ liệu trong cơ sở dữ liệu Bạn nên đã đăng nhập vào AppBuilder, vì thế có
thể lựa chọn New file => Zero Resource Model in app/models => New form
Trang 5Hình 3 Tạo một mô hình tài nguyên mới trong AppBuilder
b Tạo một mô hình dữ liệu JSON cho mỗi thực thể Các mô hình JSON này định
nghĩa các thuộc tính cho mỗi tài nguyên của bạn Điều này bao gồm thông tin về
kiểu dữ liệu của thuộc tính cũng như các thông tin khác như là giá trị mặc định,
chiều dài dữ liệu, và v.v Bởi vì bạn đang tạo một hệ thống quản lý chỗ trong nhà
hàng, bạn sẽ cần phải tạo các mô hình tài nguyên cho bốn thực thể khác nhau:
Hàng đợi các khách
Các bàn của nhà hàng
Các chỗ ngồi
Các nhân viên hầu bàn
Trong WebSphere sMash, các mô hình này được khai báo dạng JSON Bạn có thể
dùng trình soạn thảo thiết kế trong AppBuilder, hoặc bạn có thể nhập trực tiếp các
khai báo JSON của các mô hình tài nguyên Trong cả hai trường hợp, bạn nên có
bốn tệp JSON được khai báo trong Ví dụ 1
Ví dụ 1 Các khai báo mô hình tài nguyên
// start patron.json (model for waiting customers)
{
"fields": {
Trang 6"name": {
"label": "Name",
"required": true,
"type": "string",
"description": "",
"default_value": "",
"max_length": 50
},
"capacity_requested": {
"label": "Number needed",
"required": true,
"type": "integer",
"description": "",
"default_value": ""
},
"seated": {
"label": "",
"required": true,
"type": "string",
"description": "",
"default_value": "false",
"max_length": 5
}
}
}
// end patron.json
// start rest_table.json (model for restaurant tables) {
"fields": {
"capacity": {
"label": "Capacity",
"required": true,
"type": "integer",
"description": "",
"default_value": ""
},
"table_type": {
"label": "Type",
"required": true,
"type": "string",
"description": "",
"default_value": "",
"max_length": 50
}
}
}
// end rest_table.json
// start waiter.json (model for waiters)
{
"fields": {
"name": {
"label": "Name",
"required": true,
"type": "string",
"description": "",
Trang 7"default_value": "",
"max_length": 50
}
}
}
// end waiter.json
// start seating.json (model for a seating in the restaurant) {
"fields": {
"table_id": {
"label": "Table Id",
"required": true,
"type": "integer",
"description": "",
"default_value": ""
},
"patron_name": {
"label": "Patron Name",
"required": true,
"type": "string",
"description": "",
"default_value": "",
"max_length": 50
},
"waiter_name": {
"label": "Waiter Name",
"required": true,
"type": "string",
"description": "",
"default_value": "",
"max_length": 50
}
}
}
// end seating.json
c Bạn có thể thiết lập các trình điều khiển tài nguyên của bạn bây giờ Các trình điều khiển tài nguyên cung cấp truy cập REST tới dữ liệu định nghĩa bởi các mô hình tài nguyên của bạn, và trong ví dụ này, chúng được triển khai bằng ngôn ngữ
Groovy Chọn New file => Resource handler trong app/resources để tạo bốn
trình điều khiển tài nguyên, mỗi cái cho mỗi mô hình tài nguyên Các trình điều khiển tài nguyên nên có tên giống như các mô hình tài nguyên nhưng phần mở
rộng tệp là groovy chứ không phải json Từ đây, chọn Resource handler trong
app/resources Có một phương thức onList, onRetrieve, onCreate, onUpdate, và onDelete trong mỗi trình điều khiển tài nguyên Mỗi phương thức tương ứng mới một phương thức HTTP GET, POST, PUT, và DELETE một cách tách biệt Ví dụ
2 hiển thị một ví dụ của trình điều khiển tài nguyên cho mô hình tài nguyên người hầu bàn
Ví dụ 2 waiter.groovy tệp
Trang 8def onList()
{
ZRM.delegate();
}
def onRetrieve()
{
ZRM.delegate();
}
def onCreate()
{
ZRM.delegate();
}
def onUpdate()
{
ZRM.delegate();
}
def onDelete()
{
ZRM.delegate();
}
d
e Khai báo groovy có trước có thể được mà đơn giản hơn bằng cách khai báo các nội dung toàn bộ của tệp trong một dòng đơn:ZRM.delegate() Không cần khai báo mỗi phương thức, nhưng làm như vậy cho phép bạn thêm các mã tùy chọn vào mỗi phương thức nếu cần
5 Tạo các bảng cơ sở dữ liệu
Sau khi bạn tạo cả các mô hình và trình điều khiển tài nguyên, bạn có thể dùng các công
cụ dòng lệnh và các tệp cấu hình trong WebSphere sMash để tạo các bảng cơ sở dữ liệu của riêng bạn
a Dùng SSH để đăng nhập vào thể hiện WebSphere sMash AMI và cập nhật tệp /home/smash/apps/RestaurantSeating/config/zero.config Thêm tên, địa điểm và cấu hình của gian dữ liệu phía sau của bạn
Ví dụ 3 Tích hợp ZRM và DB2 Express-C
/config/db/zero-resource = {
"class" : "com.ibm.db2.jcc.DB2SimpleDataSource",
"driverType" : 4,
"serverName" : "ec2-75-101-207-229.compute-1.amazonaws.com",
"portNumber" : 50001,
"databaseName" : "RSTDB",
"user" : "db2inst1",
"password" : "passw0rd"
}
Trang 9b
c Copy tệp db2cc.jar and db2cc_license_cu.jar vào thư viện ứng dụng WebSphere sMash Trong các bước trước, bạn đã cung cấp thông tin được yêu cầu cho ZRM, bao gồm tên lớp nguồn dữ liệu, vị trí cơ sở dữ liệu và thông tin truy xuất cơ sở dữ liệu Tiếp theo, vì bạn đang trỏ vào lớp nguồn dữ liệu
com.ibm.db2.jcc.DB2SimpleDataSource, bạn cần chắc rằng các thư viện DB2 phù hợp sẵn sàng cho WebSphere sMash Dùng một trình SCP để lấy các tệp /home/db2inst1/sqllib/java/db2cc.jar và
/home/db2inst1/sqllib/java/db2cc_license_cu.jar từ thể hiện DB2 Express-C AMIe Copy các tệp vào thư mục /home/smash/apps/RestaurantSeating/lib Chạy zero resolve từ thư mục /home/smash/apps/RestaurantSeating của thể hiện
WebSphere sMash để có các tệp JAR mới thêm vào classpath (đường dẫn tới lớp) ứng dụng
d Một cách tùy chọn, bây giờ bạn có thể định nghĩa các dữ liệu ban đầu của các bảng cơ sở dữ liệu của bạn Để tiết kiệm thời gian nhập dữ liệu sau khi tạo các bảng, bạn có thể dùng một tính năng định nghĩa dữ liệu ban đầu để sinh dữ liệu khi tạo các bảng Dữ liệu này được định nghĩa trong tệp initial_data.json, nằm trong thư mục app/models/fixtures ở trong ứng dụng Các điểm vào tệp là các thể hiện của các mô hình tài nguyên mà đã được định nghĩa trong các bước trước Để sinh ra các bảng của bạn và sinh dữ liệu ban đầu chạy lệnh zero model sync Kết quả là, các bảng được tạo trong thể hiện DB2 Express-C AMI của bạn, và bất kỳ
dữ liệu bạn đã định nghĩa trong tệp initial_data.json sẽ được chèn vào các bảng sau khi chúng được tạo
6 Tạo giao diện người dùng
Bây giờ bạn cần phải cho phép các người dùng hệ thống của bạn xem và tương tác với dữ liệu WebSphere sMash cung các các widget (trình ứng dụng nhỏ) DOJO mà truy cập dữ liệu được lưu tận dụng những tiện nghi trong ZRM Các widget này cung cấp các chức năng bên ngoài Bạn có thể đặt chúng ở bất kỳ đâu trong trang HTML của bạn, cung cấp các thông tin cấu hình cần thiết, và kết quả là một giao diện người dùng mà giao quyền truy cập tạo, đọc, cập nhật và xóa tới dữ liệu phía sau dùng các trình điều khiển tài
nguyên được tạo ra ở trước
a Định nghĩa một DataStore mà tương tác với một trình điều khiển tài nguyên ZRM
và định nghĩa một DataGrid mà tận dụng DataStore Trong hệ thống quản lý chỗ nhà hàng, các khách hàng cần có khả năng xem khách đang đợi hiện tại, thêm khách mới, và xem các chỗ hiện tại (Bạn có thể áp dụng các kỹ thuật tương tự như
dữ liệu chỗ ngồi của bạn hoặc bất kỳ dữ liệu nào quan trọng được cấu hình để dùng ZRM.)
Ví dụ 4 DataGrid và DataStore khách hàng
// patron DataStore
<span dojoType="zero.resource.DataStore" id="patronDataStore" jsId="patronDataStore"
contextRoot="./resources"
resourceCollection="patron">
Trang 10</span>
// patron DataGrid
<div dojoType="zero.grid.DataGrid"
id="patronDataGrid"
visibleFields="name,capacity_requested,id"
store="patronDataStore"
readonly="true"
style="width: 348px; height: 271px;">
</div>
b
c DataStore tham chiếu tới bộ sưu tập khách hàng (patron.json), và DataGrid tham chiếu tới DataStore Hình 4 cho thấy ví dụ của đầu ra
d
Hình 4 zero.grid.DataGrid khách hàng
e Để thêm vào DataGrid hiển thị dữ liệu của bạn, bạn có thể thêm một khách hàng mới hoặc ngồi vào chỗ một khách hàng đã đặt Dữ liệu mới có thể được thêm một cách đơn giản vào gian dữ liệu ở phía sau tận dụng ZRM (Xem mã mẫu về các biểu mẫu và các kiểu HTML được dùng để lấy thông tin trong tệp tải xuống được bao gồm trong bài viết này.)
f
Ví dụ 5 Thêm một dữ liệu khách hàng
function addPatron() {
dojo.xhrPost({
url: "resources/patron",
form: "addPatronForm",
load: function (data) {
hideAddPatron();