Chuẩn bịđưalênHệthốngPureApplicationcủa IBM, Phần
2: Ứng dụngcủabạnđãsẵnsàngđểtrởthànhảo chưa?
Những lợi thế và những hạn chế của các ứngdụngảo
Một ứngdụngảo là một cách triển khai một ứngdụng JEE cùng với một bộ các quyết định chính
sách để xác định cách ứngdụng co giãn quy mô và sử dụng các tài nguyên của máy ảo Java
(Java™ Virtual Machine - JVM) như thế nào. Khi bạn triển khai một ứngdụng như là một ứng
dụng ảo, bạn cũng tận dụng lợi thế của một bộ các dịch vụ chia sẻ dựngsẵnđể xử lý các chi tiết
của các vấn đề, ví dụ như việc cân bằng tải và quản lý HttpSession.
Tuy nhiên, những lợi ích tự động hóa đó có kèm một giá phải trả. Cấu trúc liên kết củaứngdụng
của bạn (ví dụ, có bao nhiêu máy chủ ứngdụng đang chạy cùng một lúc, máy chủ nào xử lý kiểu
yêu cầu nào và v.v ) được HệthốngPureApplication chủ động quản lý. Ví dụ, điều này có nghĩa
là, bạn không thể chia tách ứngdụngcủa mình thành một tầng Web đang chạy các servlet và một
tầng EJB đang chạy các EJB từ xa. Đối với nhiều ứng dụng, điều này không phải là một vấn đề,
nhưng đối với các ứngdụng cũ hơn hoặc đãdựa vào việc đóng gói nhiều tầng hoặc dựa vào các
đặc tính của một cấu trúc liên kết ứngdụng đặc thù, thì điều này có thể thành vấn đề. Một phần
khác của cái giá phải trả là chỉ có một số mô hình lập trình nhất định nào đó được hỗ trợ. Đối với
những ứngdụng nào đòi hỏi tính linh hoạt nhiều hơn, HệthốngPureApplication cũng hỗ trợ các
hệ thống ảo.
Về đầu trang
Những lợi thế và những hạn chế của các hệthốngảo
Một hệthốngảo là một cơ chế tạo ra một khuôn mẫu hoặc một mẫu của toàn bộ cấu trúc liên kết
được xây dựng từ các ảnh ảo. Bạn có thể sử dụng các ảnh của IBM-provided Hypervisor Edition
(Ấn bản Siêu giám sát do IBM cung cấp) trong lúc xây dựng các hệthốngảocủa bạn, hoặc bạn
có thể xây dựng các ảnh riêng của mình bắt đầu từ một ảnh RHEL cơ sở bằng cách sử dụng công
cụ IBM Tivoli® ICON.
Một khả năng khác là tính năng "Bắt giữ và Mở rộng" (Capture and Extend) củaHệthống
PureApplication, cho phép bạn bắt đầu với một ảnh ảo và thêm phần mềm bổ sung vào ảnh đó
trước khi đóng gói lại để sử dụng sau này. Một lý do quan trọng khác trong việc xây dựng các hệ
thống ảo là bạn có thể thêm các kịch bản lệnh riêng củabạn vào hệthống ảo. Nếu bạn muốn triển
khai một ứngdụng vào một mẫu cấu trúc liên kết mà bạnđã tạo ra, bạn sẽ cần tạo kịch bản lệnh
cho việc triển khai đó để nó xảy ra như là một phầncủa quá trình khởi tạo cá thể trong triển khai
một cá thể củahệthốngảo vào phần cứng củaHệthống PureApplication.
Về đầu trang
Chọn cách tiếp cận đúng
Trong hầu hết trường hợp, việc chuyển một ứngdụnglênHệthốngPureApplication thực sự
không phải là một quá trình phức tạp. Tuy nhiên, điều mấu chốt để thực hiện quá trình di trú của
bạn là hiểu rằng bạn cần chọn chính xác một cách tiếp cận đúngđểđưaứngdụngcủabạnlênhệ
thống. HệthốngPureApplication hỗ trợ một số cách khác nhau để có thể triển khai ứngdụngcủa
bạn. Lựa chọn một cách sao cho dẫn đến lượng công việc ít nhất với lợi ích lớn nhất là quyết
định quan trọng nhất mà bạn có thể đưa ra trong quá trình di trú. Điều chúng ta đã thấy trong khi
đưa lên một số ứngdụng ISV hiện có là cách đơn giản nhất để bắt đầu việc này là chỉ cần hỏi
một loạt các câu hỏi sau:
1. Bạn đang xây dựng một ứngdụng mới phải không?
Lý do tại sao bạn cần đề cập đến câu hỏi này trước tiên rất đơn giản – bạn muốn tận dụng
lợi thế của cơ chế triển khai đơn giản nhất và dễ dàng nhất. Như bạnđã thấy ở trên, mô
hình triển khai đơn giản nhất do HệthốngPureApplication cung cấp là ứngdụng ảo. Nếu
bạn đang xây dựng một ứngdụng mới và có cơ hội tác động đến các lựa chọn công nghệ
và thiết kế được thực hiện trong ứng dụng, thì hãy chọn những công nghệ và thiết kế nào
làm cho một ứngdụng tương thích với một ứngdụng ảo.
Tuy nhiên, trong hầu hết các trường hợp, ứngdụng mà bạn đang xử lý hàng ngày không
phải là các ứngdụng làm mới từ đầu. Thay vào đó, bạn xử lý các ứngdụng hiện có, đã
được xây dựng và vẫn đang chạy trong một môi trường hiện có. Rồi bạn phải xem xét câu
hỏi tiếp theo.
2. Đây có phải là một ứngdụng Web không?
Đó là một câu hỏi có vẻ bề ngoài đơn giản đánh lừa. Điều chúng ta thực sự nghĩ đến khi
hỏi câu này là, "Có phải ứngdụng này chỉ nhận các yêu cầu HTTP hoặc HTTPS (http an
toàn) gửi đến không?" Định nghĩa này kết hợp một số mẫu khác nhau trong việc phát
triển ứng dụng. Định nghĩa này có thể muốn nói tới bất cứ mẫu ứngdụng nào sau đây:
o Một ứngdụng cung cấp các dịch vụ RESTful cho một giao diện người dùng được
viết bằng các công nghệ Javascript và AJAX.
o Một nhà cung cấp Các dịch vụ Web đang thực hiện các dịch vụ SOAP cho các
máy khách bên ngoài trên Internet.
o Một ứngdụng Web cổ điển được xây dựng bằng các servlet và các JSP.
Tuy nhiên, định nghĩa này không bao gồm một số kiểu ứng dụng: ví dụ, ứngdụng khách-
chủ Java, sử dụng máy khách Java phong phú (thick) kết nối thông qua RMI hay
RMI/IIOP tới các EJB chạy ở mặt sau, không được coi là một ứngdụng web khi sử dụng
định nghĩa này. Những suy xét này cũng đưa chúng ta đến câu hỏi tiếp theo.
3. Bạn có sử dụng các EJB từ xa không?
Các EJB là một phần hữu ích của mô hình lập trình JEE hầu như ngay từ lúc khởi đầu của
nó. Tuy nhiên, lợi ích của các EJB từ xa phải cân đối lại do phải đánh đổi bằng độ phức
tạp của cấu trúc liên kết ứngdụngcủa bạn. Các máy chủ ứngdụngcủabạn phải xử lý cả
hai, lưu lượng HTTP gửi đến các servlet, các JSP, các dịch vụ Web của bạn, cũng như cả
lưu lượng RMI/IIOP gửi đến từ các máy khách EJB. Thông thường, điều này được thực
hiện thông qua việc xây dựng hai tầng máy chủ ứng dụng; một tầng được dành riêng để
xử lý lưu lượng HTTP và một tầng khác được dành riêng để xử lý lưu lượng RMI. Như là
một phầncủa quá trình đơn giản hóa, sử dụng các ứngdụng ảo, bạn phải từ bỏ một số các
tùy chọn cấu trúc liên kết này. Vì vậy, như chúng ta đã thảo luận ở trên, nếu bạn cần các
EJB từ xa, hãy bám chặt lựa chọn sử dụng các hệthống ảo, ở đây có sẵn các tùy chọn cấu
trúc liên kết này cho bạn sử dụng.
4. Ứngdụngcủabạn có được đóng gói theo một cách tiêu chuẩn không?
Một lần nữa, đây là một câu hỏi có vẻ bề ngoài đơn giản đánh lừa. Dùng thuật ngữ "theo
một cách tiêu chuẩn", chúng ta muốn nói là ứngdụng có được đóng gói dưới dạng một
tệp EAR, một tệp WAR, một tệp lưu trữ ZIP hoặc một EBA (OSGi Enterprise Bundle
Archive - Lưu trữ gói doanh nghiệp OSGi) hay không? Bạn thấy, mặc dù tiêu chuẩn JEE
là đóng gói các ứngdụngthành các tệp EAR hoặc WAR và tiêu chuẩn OSGi đã giới
thiệu các kiểu lưu trữ EBA, nhưng nhiều ứngdụng vẫn không được đóng gói theo cách
đó - thay vào đó, chúng được gửi đi dưới dạng cấu trúc thư mục "đã bung ra". Mặc dù
cấu trúc đó có thể làm việc với các máy chủ đơn giản như Tomcat, việc thực hiện đóng
gói theo cách không chuẩn làm rắc rối thêm cho bạn khi di chuyển đến các máy chủ JEE
mới, ví dụ như các máy chủ hỗ trợ các ứngdụng ảo. Vì vậy, nếu câu trả lời củabạn là
không, thì hãy đóng gói lại ứngdụngcủabạn theo một trong các định dạng tiêu chuẩn
này. Tương tự như vậy, có rất nhiều chiến lược đóng gói khác trong WebSphere®
Application Server (Máy chủ ứngdụng WebSphere) mà có thể bạn muốn sử dụng; ví dụ,
máy chủ đã liên kết với các thư viện chia sẻ. Một lần nữa, để đơn giản hóa mô hình,
những cách đóng gói này không được sử dụng trong các ứngdụng ảo. Nếu bạn không thể
tránh được việc sử dụng các cách tiếp cận này, thì hãy xem xét việc sử dụng các hệthống
ảo để thay thế.
5. Ứngdụngcủabạn có đang sử dụng các mô hình lập trình JEE tiêu chuẩn không?
Đã có một thành ngữ nói rằng "Một trong những điều thú vị về các tiêu chuẩn là có quá
nhiều tiêu chuẩnđể chọn." Thật không may, điều đó hoàn toàn đúng khi bạn đang nói về
các mô hình lập trình. Các API mới được giới thiệu với một nhịp độ nhanh và qui trình
của cộng đồng Java bị ngập chìm với các JSR tồn đọng, hoặc không bao giờ được phê
duyệt hoặc không bao giờ đạt được sự chấp nhận rộng rãi đủ để chính thức trởthành một
phần của tiêu chuẩn JEE. Một lần nữa, vấn đề là với các ứngdụng ảo, bạn cần giữ cho
mọi thứ đơn giản. Vì thế, bạn phải hạn chế bộ các API được hỗ trợ ở mức có thể quản lý
được. Do đó, nếu ứngdụngcủabạn chỉ sử dụng các API tiêu chuẩn từ JEE5, J2EE1.4,
1.3 hoặc 1.2, OSGi, JPA, JAX-RPC, JAX-WS và JAX-RS, thì bạn sẽ yên tâm.
Mặt khác, nếu bạn đang viết chương trình ở một mức JEE mới hơn (chẳng hạn như JEE
6) hoặc bạn đang sử dụng một số API khó hiểu từ sâu bên trong lòng của JCP, thì ứng
dụng củabạn có thể sẽ không làm việc như một ứngdụng ảo. Tuy nhiên, cách tiếp cận
của IBM là để cung cấp sự hỗ trợ cho các API mới hơn thông qua Các gói tính năng
(Feature Packs). Vì vậy, nếu bạn đang lập kế hoạch cho một mức API mới, có thể bạn
cần xem xét việc xây dựng một hệthốngảo bằng cách sử dụng WebSphere Application
Server V8 (Phiên bản V8 của Máy chủ ứngdụng WebSphere) và kết hợp Gói tính năng
(và hỗ trợ cho API đó) khi nó trở nên có sẵn.
6. Ứngdụng này hiện có đang chạy được trên Phiên bản 7 hay Phiên bản 8 của
WebSphere Application Server không?
Đây là một câu hỏi mềm, nhưng là một câu hỏi quan trọng. Có một vài câu trả lời khác
nhau cho câu hỏi này mà bạn cần xem xét. Thậm chí nếu câu trả lời củabạn cho câu hỏi
này là "có", nhưng bạn rơi vào một trong các thể loại trước đây, đãđề cập khi nói về mô
hình lập trình, đóng gói theo tiêu chuẩn hoặc sử dụng các EJB từ xa, thì quyết định của
bạn đã được chọn rồi - ứngdụngcủabạn không thể là một ứngdụng ảo. Tuy nhiên, nếu
bạn trả lời "không", có thể bạn vẫn có khả năng chạy như một ứngdụng ảo. Nếu ứng
dụng củabạn tuân thủ đúng như đã trả lời các câu hỏi về mô hình lập trình và về đóng gói
ở trên, thì mọi thứ có thể vẫn còn tốt. Tuy nhiên, nếu ứngdụngcủabạn đang chạy trên
một phiên bản WebSphere Application Server cũ hơn nhiều hoặc trên một máy chủ ứng
dụng khác, thì trước hết bạn có thể phải hoàn thành nỗ lực di trú trước khi bạn có thể di
chuyển tới hoặc một ứngdụngảo hoặc một hệthống ảo.
7. Ứngdụngcủabạn có yêu cầu bất kỳ các sản phẩm họ WebSphere nào như
WebSphere Portal Server (Máy chủ cổng WebSphere) hoặc WebSphere Process
Server (Máy chủ xử lý quy trình WebSphere) không?
Như chúng ta đã mô tả ở trên, cách tiếp cận ứngdụngảo là một cách tiếp cận được nhằm
vào việc xây dựng các ứngdụng Web. Nếu kiểu ứngdụngcủabạn (hoặc "tải làm việc"
nếu bạn muốn sử dụng thuật ngữ đó) không phải là một ứngdụng Web, thì cách tiếp cận
ứng dụngảo hiện tại không phải là một cách tiếp cận đúng dành cho bạn. Lưu ý rằng đây
là tuyên bố có tính thời điểm. Theo thời gian, các kiểu tải làm việc mới sẽ được thêm vào
IBM Workload Deployer và Hệthống PureApplication. Vì vậy, ở một số thời điểm, ngay
cả khi bạn có một ứngdụng quản lý qui trình nghiệp vụ, bạn có thể tận dụng lợi thế của
các mức tự động hóa cao hơn mà các ứngdụngảo cung cấp cho các ứngdụng Web hiện
nay. Tuy nhiên, vào lúc này, nếu bạn yêu cầu bất kỳ sản phẩm nào trong các sản phẩm
này, bạn cần phải xây dựng một hệthốngảo kết hợp các sản phẩm của Hypervisor
Edition (Ấn bản Siêu giám sát) của IBM được phân phối như là một phầncủa danh mục
trực tuyến cho HệthốngPureApplication hoặc Workload Deployer của IBM.
8. Ứngdụngcủabạnđãsẵnsàngđể tận dụng lợi thế của việc quản lý phiên làm việc
với WebSphere Extreme Scale (Mở rộng quy mô rất lớn của WebSphere) chưa?
Cũng như với nhiều câu hỏi trước đó, có rất nhiều thứ được gói trong câu này. Về cơ bản,
trước tiên bạn phải xem xét việc sử dụng API HttpSession của mình. Nhiều ứngdụng
được viết theo một cách hoàn toàn không trạng thái và không hềdùng API HttpSession tí
nào - những ứngdụng đó hoàn toàn phù hợp với các ứngdụng ảo. Mặt khác, nếu bạn
hiện đang sử dụng HttpSessions trong ứngdụngcủa mình, thì bạn phải suy nghĩ một chút
về cách bạn sử dụng chúng.
Trước hết, có phải tất cả các nội dung HttpSession củabạn được khai báo là
java.io.Serializable hay không? Nếu không, thì bạn có một vấn đề. Với các ứngdụng ảo,
mô hình mà các chính sách mở rộng tuân theo là các cá thể máy chủ ứngdụng có thể
được tạo ra động và bị phá hủy khi cần để xử lý tải làm việc mà ứngdụng đang thực hiện
vào bất cứ lúc nào. Nếu bạn giả định rằng máy chủ củabạn tồn tại lâu dài và bộ nhớ của
nó là một kho lưu trữ "an toàn" cho thông tin về phiên làm việc, thì bạn sẽ bị bất ngờ lúng
túng nếu bạn cố gắng thực hiện một ứngdụng ảo.
Tương tự như vậy, nếu các phiên làm việc củabạn rất lớn (hàng trăm MB), thì bạn có thể
bị bất ngờ bởi thời gian cần thiết để tải một phiên làm việc qua mạng từ lưới WebSphere
Extreme Scale. Mặt khác, nếu bạn có các phiên làm việc nhỏ, đã tuần tự hóa hóa hoàn
toàn, tuân thủ các cách thực hành HttpSession tốt nhất, thì bạn có thể sử dụng các ứng
dụng ảo.
9. Ứngdụngcủabạn có sử dụng một sản phẩm bảo mật bên ngoài hay không hoặc nó
có sử dụng các API bảo mật đặc biệt như các trình cắm thêm TAI (Trust
Authentication Interceptors – Các trình chặn xác thực tin cậy) hoặc JAAS hay
không?
Cuối cùng, một trong những thứ cần xem xét là những yêu cầu bảo mật nào được đặt ra
với ứngdụngcủa bạn. Nếu ứngdụngcủabạn không có các yêu cầu bảo mật hoặc đơn
giản chỉ sử dụng bảo mật WebSphere và nó cũng sử dụng một trong những đăng ký
người dùng được hỗ trợ (TDS, Microsoft® Active Directory), thì bạn có thể triển khai
thực hiện hệthốngcủabạn như một ứngdụng ảo. Mặt khác, nếu bạn sử dụng một sản
phẩm bảo mật riêng biệt như Tivoli Authentication Manager (Trình quản lý xác thực
Tivoli) hoặc một trong những sản phẩm đối thủ của nó hoặc bất kỳ trong số các tính năng
Bảo mật WebSphere đặc biệt nào như JAAS hoặc các TAI, thì bạn cần lập kế hoạch xây
dựng một hệthống ảo.
Về đầu trang
Chọn cách tiếp cận đúng ở đúng thời điểm
Một điều quan trọng cần xem xét là các ứngdụng có các vòng đời, và một mô hình triển khai
duy nhất không thể duy trì cho toàn bộ vòng đời củaứng dụng. Ví dụ, bạn có thể muốn triển khai
một ứngdụng trong môi trường phát triển và thử nghiệm của mình như một ứngdụngảođể có
một mô hình đơn giản nhất và để chắc chắn rằng bạn bắt giữ chính xác các thông số cấu hình
(như chính sách JVM) trong những môi trường đó. Tuy nhiên, bạn có thể muốn triển khai ứng
dụng đó trong sản xuất như một hệthốngảođể thiết lập môi trường tối ưu hóa cao nhất cho ứng
dụng này. Tương tự như vậy, bạn có thể có một ứngdụng hiện có đã được triển khai như một hệ
thống ảo hiện nay, nhưng trong các phiên bản mới nhất củaứng dụng, bạn có thể làm theo hướng
thay đổi mã của nó để làm cho nó tương thích với việc triển khai như một ứngdụng ảo.
Về đầu trang
Lập kế hoạch cho tương lai
Điều tốt nhất mà bạn có thể làm trong khi lập kế hoạch về ứngdụngcủabạnđã hay chưa sẵn
sàng thành các ứngdụngảo chỉ đơn giản là mất thời gian để lập kế hoạch cho qui trình này. May
mắn thay, IBM sẵnsàng giúp bạn trong suốt qui trình này. Quá trình PureExperience có một vài
bước để khai triển tiếp các câu hỏi mà chúng ta đã đặt ra bằng cách hỏi thêm một số câu hỏi nữa
đi vào từng lĩnh vực ấy. Thông qua quá trình hỏi và trả lời này, Chuyên gia kỹ thuật phía khách
của IBM (IBM Client Technical Professional) có thể giúp bạn hiểu mô hình triển khai nào đáp
ứng tốt nhất cho ứngdụng cụ thể của bạn. Tương tự như vậy, IBM Software Services for
WebSphere (Các dịch vụ phần mềm với WebSphere của IBM) sẵnsàngtrợ giúp với các dịch vụ
di trú ứngdụng và các dịch vụ khác để giúp bạn chọn dùngHệthống PureApplication. Hãy liên
hệ với đại diện bán hàng của IBM củabạnđể được trợ giúp thêm và để bắt đầu!
. Chuẩn bị đưa lên Hệ thống PureApplication của IBM, Phần
2: Ứng dụng của bạn đã sẵn sàng để trở thành ảo chưa?
Những lợi thế và những hạn chế của. hiểu rằng bạn cần chọn chính xác một cách tiếp cận đúng để đưa ứng dụng của bạn lên hệ
thống. Hệ thống PureApplication hỗ trợ một số cách khác nhau để có