Đ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 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ọ).

pdf12 trang | Chia sẻ: lylyngoc | Ngày: 14/03/2015 | Lượt xem: 1107 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Đ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, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Đ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. Phầ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). 1. 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 . Hì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://: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. Hì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": { "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": "", "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 def 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" } b. 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"> // patron DataGrid <div dojoType="zero.grid.DataGrid" id="patronDataGrid" visibleFields="name,capacity_requested,id" store="patronDataStore" readonly="true" style="width: 348px; height: 271px;"> 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(); displayWaitingPatrons(); }, // Call this function if an error happened error: function (error) { console.error ('Error: ', error); } }); } g. h. Cho phép giao tiếp với các trình điều khiển tài nguyên ZRM dùng HTML và JavaScript™. Ví dụ trước dẫn đến kết quả trong một lời gọi tới trình điều khiển tài nguyên patron.groovy, cái mà ủy nhiệm cho ZRM để điều khiển sinh cơ sở dữ liệu DB2 với dữ liệu mới. Hình 5 mở rộng các khái niệm được mô tả trước để xác định việc biểu diễn và cập nhật thông tin về các đặt chỗ hiện tại. Dùng một vài mã HTML và JavaScript nhỏ hơn dẫn đến giao diện người dùng được chỉ ra trong Hình 5. Hình 5. Giao diện người dùng cho hệ thống chỗ ngồi nhà hàng Kết quả là một giao diện người dùng súc tích, hiệu ứng trực quan và có ý nghĩa mà cho phép người chủ điều khiển đầy đủ các khía cạnh liên quan đến chỗ ngồi trong nhà hàng.