Triển khai các ứng dụng mới trên IBM PureSystems bằng các trình cắm thêm, Phần 1

Các lý do thiết kế & các nỗ lực phát triển để chạy một giải pháp SugarCRM thế giới thực

Giới thiệu về IBM® PureSystems™ -- một họ hệ thống đám mây chuyên gia, mức doanh nghiệp, tích hợp có chứa các ứng dụng, các dịch vụ, phần cứng và thậm chí ý kiến về chuyên môn (được chuyển giao dưới dạng các mẫu thực hành tốt nhất) -- đưa điện toán đám mây lên những đỉnh cao mới. Một cách để chuẩn bị một ứng dụng sử dụng IBM PureSystems là tạo thủ công một trình cắm thêm, một cầu nối giữa gói ứng dụng và hệ thống. Trong bài này, các tác giả, những chuyên gia trong nhóm các phòng thí nghiệm IBM Cloud (Đám mây của IBM), mô tả những nỗ lực phát triển để chạy SugarCRM, một ứng dụng của nhà cung cấp phần mềm độc lập, trên IBM PureSystems (Các hệ thống Pure của IBM).

Chin Huang, Kiến trúc sư các giải pháp đám mây, IBM

Chin Huang là một kiến trúc sư các giải pháp đám mây chuyên về kiến trúc phần mềm và Công nghệ thông tin. Kinh nghiệm chuyên môn của ông là về phát triển các giải pháp tiên tiến, bao gồm nền tảng IaaS, tích hợp SaaS, đám mây phân tích, các dịch vụ web và các trình cắm thêm IWD. Chin là nhà tư vấn giải pháp điện toán đám mây có chứng chỉ và là tác giả của hơn 10 tài liệu kỹ thuật. Ông sống và làm việc tại Thung lũng Silicon, California.



Ton Ngo, Kiến trúc sư các giải pháp đám mây, IBM

Ton Ngo là một kiến trúc sư các giải pháp đám mây và nhà phát triển cấp cao tại Phòng thí nghiệm Thung lũng Silicon của IBM tại San Jose, California. Gần đây, ông là kiến trúc sư về Đám mây điện toán hiệu năng cao (High Performance Computing Cloud) đại diện cho trường Đại học Công nghệ Nanyang, Singapore và Đám mây phát triển và thử nghiệm (Test and Development Cloud) đại diện cho Ngân hàng Hoàng gia của Canada. Trước đây ông đã là một nhà nghiên cứu tại Trung tâm nghiên cứu Watson T.J. của IBM và Trung tâm nghiên cứu Almaden trong 17 năm và đã xuất bản nhiều tài liệu về một loạt các đề tài.



09 07 2012

Giới thiệu về IBM PureSystems — một họ hệ thống đám mây chuyên gia, mức doanh nghiệp, tích hợp có chứa các ứng dụng, các dịch vụ, phần cứng và thậm chí ý kiến về chuyên môn (được chuyển giao dưới dạng các mẫu thực hành tốt nhất) — đưa điện toán đám mây lên những đỉnh cao mới. Một cách để chuẩn bị một ứng dụng sử dụng IBM PureSystems là tạo thủ công một trình cắm thêm, một cầu nối giữa gói ứng dụng và hệ thống.

Trong loạt bài hai phần này, các tác giả trình bày các lý do thiết kế, các nỗ lực phát triển và các bài học đã thu được từ dự án này. Phần 1 mô tả các nỗ lực phát triển để chạy SugarCRM, một ứng dụng của nhà cung cấp phần mềm độc lập, trên IBM PureSystems. SugarCRM là một ứng dụng PHP đòi hỏi chồng ứng dụng LAMP (Linux®, Apache, MySQL, PHP). LAMP không được IBM PureSystems hỗ trợ bên ngoài hộp, do đó, nhóm nghiên cứu đã phát triển một kiểu mẫu mới và một tập các trình cắm thêm hỗ trợ cho việc mô hình hóa, triển khai và hoạt động của ứng dụng trên đỉnh của hình ảnh AIX của IBM và Linux cơ sở. Phần 2 tập trung vào các bài học đã thu được từ dự án này.

IBM PureSystems quản lý toàn bộ vòng đời của một ứng dụng. Chúng tôi đã bắt đầu bằng cách đạt được sự hiểu biết sâu sắc về SugarCRM bằng cách thảo luận với các chuyên gia về chủ đề IBM PureSystems tại IBM, tổ chức hội thảo với các ISV (Nhà cung cấp phần mềm độc lập) và trải nghiệm với ứng dụng. Chúng tôi cũng đã phải xem xét các vấn đề cấp phép vì có liên quan đến phần mềm của nhà cung cấp và nguồn mở. Các cơ sở dữ liệu được hỗ trợ bao gồm MySQL và IBM DB2®, đem lại lợi thế hơn cho IBM. Việc hiểu toàn bộ bức tranh sẽ cho phép chúng tôi bố trí kiến trúc của các trình cắm thêm và định nghĩa cách IBM PureSystems hỗ trợ mỗi vòng đời của SugarCRM.

Trong khi mô hình hóa ứng dụng, các trình cắm thêm cho phép người dùng kéo và thả một hộp SugarCRM và kết nối với một hộp cơ sở dữ liệu, có thể là MySQL hoặc DB2. MySQL được mô hình hóa như một máy chủ hiện có, trong khi DB2 có thể là một máy chủ mới hoặc máy chủ hiện có.

Khi người sử dụng triển khai mẫu ứng dụng SugarCRM vào đám mây, các kịch bản lệnh của trình cắm thêm tự động hóa việc cài đặt và việc cấu hình tất cả phần mềm trung gian và các ứng dụng. Các kịch bản lệnh tương tác với IBM PureSystems để thu được thông tin triển khai và đưa ra cập nhật trạng thái.

Sau khi đã triển khai ứng dụng, các trình cắm thêm cho phép người dùng bắt đầu và dừng dịch vụ Apache và xem các bản ghi nhật ký từ SugarCRM.

Từ dự án này chúng tôi đã thu được kinh nghiệm quý báu từ sự hiểu biết không chỉ về phát triển trình cắm thêm mà còn về quá trình tư duy khi chạy một ứng dụng trong đám mây. Trong quá trình phát triển, chúng tôi thảo luận thường xuyên với nhóm phát triển trình cắm thêm IBM PureSystems về hướng dẫn của họ và cung cấp thông tin phản hồi về Bộ dụng cụ Phát triển trình cắm thêm (PDK - Plug-in Development Kit). Một số thông tin phản hồi của chúng tôi đã dẫn đến các mục công việc mới cho nhóm phát triển và các cách thực hành mới tốt nhất. Chúng tôi cũng đã hỏi ý kiến nhóm sản phẩm để bảo đảm thiết kế của chúng tôi phù hợp với định hướng chiến lược của IBM.

Xác định thách thức

SugarCRM là một nhà cung cấp phần mềm độc lập (ISV), cung cấp các giải pháp quản lý quan hệ khách hàng. Các thế mạnh của giải pháp SugarCRM gồm một trải nghiệm người dùng trực quan và một nền tảng nguồn mở rất linh hoạt. Giải pháp này có sẵn trong bốn phiên bản và có thể được triển khai trên trang web, được công ty lưu trữ trên máy chủ hay trong đám mây.

SugarCRM là gì

Giải pháp SugarCRM là một ứng dụng PHP thường chạy trên một chồng LAMP (Linux, Apache, MySQL, PHP). Phần mềm hỗ trợ bổ sung được sử dụng để cải thiện hiệu năng, ví dụ như Alternative PHP Cache (APC - Bộ nhớ đệm PHP thay thế) và triển khai rộng ra là memcache.

IBM PureSystems không cung cấp sự hỗ trợ chồng LAMP như là một phần thiết lập ban đầu. Nhóm các phòng thí nghiệm đám mây đã phát triển sự hỗ trợ cần thiết để chạy sugarCRM trên IBM PureSystems.

Định nghĩa kịch bản kinh doanh

Bước đầu tiên là để gắn kết các mục tiêu kinh doanh và các giải pháp kỹ thuật. Chúng tôi đã xác định các kịch bản kinh doanh sau để hỗ trợ trải nghiệm từ đầu đến cuối, từ hỗ trợ đến chạy một ứng dụng, cho một khách hàng IBM PureSystems, người muốn chạy ứng dụng SugarCRM.

  • Chạy phần mềm nguồn mở và SugarCRM trong IBM PureSystems.
  • Mô hình hóa và cấu hình các ứng dụng SugarCRM.
  • Triển khai và chạy ứng dụng SugarCRM trong đám mây IBM PureSystems.
  • Quản lý vòng đời của các cá thể đang chạy SugarCRM.
  • Hỗ trợ hai cơ sở dữ liệu như các kho dữ liệu: MySQL và DB2.

Định nghĩa kiến trúc của trình cắm thêm

Để định nghĩa kiến trúc của trình cắm thêm, hãy xem xét kỹ hơn về các cấu trúc liên kết SugarCRM điển hình, các lý do thiết kế và các vấn đề cấp phép có thể ảnh hưởng đến sự phát triển công nghệ.

SugarCRM là một ứng dụng PHP

ISV đã khuyến cáo ngăn xếp phần mềm cho System x và System p được tóm tắt trong Bảng 1:

Bảng 1. Chồng phần mềm được đề nghị cho SugarCRM
System x (Hệ thống x)System p (Hệ thống y)
Red Hat Enterprise Linux 5AIX 7.1
Apache 2.2Apache 2.2
PHP 5.3 với các phần mở rộng bắt buộcPHP 5.3 với các phần mở rộng bắt buộc
APC 3.1APC 3.1
MySQL 5.1DB2 9.7

Nhóm phát triển về SugarCRM đã chỉ ra rằng cấu trúc liên kết điển hình là một máy chủ Apache duy nhất được nối đến một máy chủ cơ sở dữ liệu, như trong Hình 1.

Hình 1. Cấu trúc liên kết của máy chủ duy nhất
Cấu trúc liên kết của máy chủ duy nhất

Ít phổ biến hơn là một công nghệ cụm xử lý một lượng người dùng lớn hơn bằng cách mở rộng thêm số lượng các máy chủ Apache, như trong Hình 2.

Hình 2. Cấu trúc liên kết cụm
Cấu trúc liên kết cụm

Trong trường hợp này, SugarCRM sử dụng memcache làm trình quản lý phiên và nginx làm bộ cân bằng tải. Vì ứng dụng viết vào lại thư mục cục bộ nơi Apache lưu trữ các tệp và dữ liệu PHP, nên các máy chủ Apache phải chia sẻ cùng một thư mục cục bộ; điều này được thực hiện bằng cách lưu trữ thư mục này trên một máy chủ NFS. Hệ thống tệp chia sẻ cũng giúp nâng cấp lên phiên bản SugarCRM mới vì nó cho phép tất cả các máy chủ được nâng cấp cùng một lúc.

Các lý do thiết kế

Một khái niệm quan trọng trong IBM PureSystems là cung cấp cho người dùng một cái nhìn về ứng dụng là trung tâm của đám mây, để cho người dùng có thể tập trung vào ứng dụng và bỏ qua cơ sở hạ tầng bên dưới. IBM PureSystems quản lý ba khía cạnh của một ứng dụng: mô hình hóa, triển khai và hoạt động. Có thể có một số lượng lớn các kịch bản tham gia vào ba khía cạnh này. Dưới đây là các lý do mà chúng tôi đã sử dụng khi thực hiện lựa chọn của mình:

  • Trong khi IBM PureSystems có thể hỗ trợ một cấu trúc liên kết cụm cho SugarCRM bằng cách sử dụng chính sách mở rộng quy mô, thì chúng tôi hạn chế phạm vi của dự án theo một cấu trúc liên kết máy chủ duy nhất.
  • Mặc dù MySQL thường được sử dụng chung cho cơ sở dữ liệu theo các cách triển khai điển hình, chúng tôi muốn tập trung vào DB2 trong khi cung cấp MySQL. Điều này đã được làm bằng cách cho phép người dùng mô hình hóa DB2 hoặc như là một cá thể mới hoặc như là một cá thể hiện có, nhưng MySQL chỉ được hỗ trợ như là một cá thể hiện có.
  • Ngăn xếp phần mềm Apache/PHP là một nền tảng phổ biến cho máy chủ web nguồn mở, do đó có thể sử dụng lại một bộ sưu tập các trình cắm thêm mới đang hỗ trợ ngăn xếp này theo các cam kết khác. Suy nghĩ ban đầu của chúng tôi là mô hình hóa ngăn xếp này như là một thành phần độc lập và SugarCRM như là một thành phần riêng lẻ được liên kết với nó để cho phép chúng tôi nhanh chóng bổ sung sự hỗ trợ cho một ứng dụng PHP mới. Chúng tôi đã có lo lắng là một mẫu ứng dụng như thế sẽ không phù hợp tốt với cách tiếp cận ứng dụng là trung tâm bởi vì nó trưng ra phần ngăn xếp phần mềm của cơ sở hạ tầng, vì thế chúng tôi quyết định mô hình hóa ứng dụng SugarCRM và hỗ trợ đầy đủ cho ngăn xếp phần mềm như là một thành phần riêng lẻ.
  • Cấu hình cho SugarCRM tương đối đơn giản và chỉ liên quan đến một tập nhỏ các tham số. Chúng tôi đã chọn một tập con các tham số để trưng ra với thành phần SugarCRM.
  • Tập các tham số đầy đủ để cấu hình cơ sở dữ liệu còn quan trọng hơn: Chúng tôi đã chỉ trưng ra các tham số liên quan đến SugarCRM và thiết lập các tham số còn lại theo giá trị mặc định. Tập các tham số là giống hệt nhau đối với DB2 và MySQL, mặc dù chúng thuộc về các thành phần khác nhau.

Các vấn đề cấp phép

Thông thường các vấn đề cấp phép không có nhiều ý nghĩa trong thiết kế công nghệ, nhưng do một số tải làm việc của ISV có thể yêu cầu phần mềm không phải của IBM, nên bạn phải quản lý tốt việc cấp phép cho phần mềm và phần mềm trung gian. Chúng tôi đã quyết định chọn các cách tiếp cận sau:

  • Đóng gói phần mềm trong các trình cắm thêm. Mã nguồn hoặc các mã nhị phân của phần mềm được kèm theo trong tệp zip của trình cắm thêm và trở nên có sẵn để sử dụng khi chạy kiểu mẫu và trình cắm thêm trong giao diện quản trị của IBM PureSystems. Trong quá trình hỗ trợ cho kiểu mẫu này, người quản trị đám mây xem xét và chấp nhận các thỏa thuận cấp phép phần mềm. Cách tiếp cận phần mềm đóng gói này làm cho phần mềm được tích hợp chặt chẽ với các quá trình hỗ trợ và phát triển trình cắm thêm.
  • Để cho người quản trị đám mây cung cấp mã nguồn hoặc các mã nhị phân của phần mềm trong khi hỗ trợ cho trình cắm thêm. Các trình cắm thêm sẽ được nhập khẩu vào IBM PureSystems cùng với gói kiểu mẫu và ở trạng thái "không chạy" (disabled). Người quản trị đám mây thu thập phần mềm cần thiết tiếp sau các thủ tục cấp phép điển hình, rồi sử dụng tùy chọn cấu hình cho các trình cắm thêm riêng lẻ trong giao diện quản trị của IBM PureSystems. Kết quả là, trình cắm thêm đã chạy và các tệp phần mềm vẫn tiếp tục tồn tại trong kho lưu trữ của IBM PureSystems. Trong trường hợp này, quá trình thỏa thuận về giấy phép phần mềm được thực hiện bên ngoài môi trường IBM PureSystems.
  • Xây dựng mã nguồn hoặc các mã nhị phân của phần mềm thành hình ảnh hệ điều hành cơ sở. Các thỏa thuận giấy phép cần phải được người quản trị đám mây chấp nhận khi bổ sung máy ảo vào danh mục của IBM PureSystems. Vì hình ảnh hệ điều hành cơ sở như nhau được chia sẻ trên nhiều kiểu mẫu và các trình cắm thêm, nên cách tiếp cận này làm việc với phần mềm chung cho toàn bộ miền IBM PureSystems tốt hơn so với phần mềm đặc trưng của trình cắm thêm.

Ứng dụng SugarCRM phụ thuộc vào một số phần mềm nguồn mở và phần mềm của bên thứ ba, vì vậy chúng tôi quyết định đóng gói các tệp SugarCRM vào các trình cắm thêm của mình và lấy mã nguồn hoặc các mã nhị phân của phần mềm, mã nguồn mở của IBM, làm đầu vào của người quản trị đám mây trong lúc hỗ trợ trình cắm thêm.


Thiết kế và phát triển

Trình tự của các phần nhỏ dưới đây biểu diễn luồng thiết kế và các quá trình thực hiện của chúng tôi khi phát triển các trình cắm thêm SugarCRM.

Thiết kế giải pháp

Quyết định thiết kế giải pháp chủ chốt là để xác định các vai trò và các trách nhiệm của các trình cắm thêm. Chúng tôi chủ yếu xem xét hai cách tiếp cận:

  • Thứ nhất là để phát triển một tập các trình cắm thêm tổng quát để hỗ trợ cho Apache, PHP và kết nối cơ sở dữ liệu và áp dụng SugarCRM làm một đầu vào cho các trình cắm thêm. Đây là cách linh hoạt hơn để thiết kế và phân phối các khả năng PHP đa năng thực sự, có thể mở rộng các khả năng đó cho các ứng dụng PHP khác theo cách tương tự.
  • Thứ hai là để thiết kế và thực hiện PHP đặc trưng SugarCRM và các trình cắm thêm cơ sở dữ liệu để bảo đảm các ứng dụng SugarCRM có đủ chức năng. Thiết kế lấy ứng dụng làm trung tâm rất thích hợp với khái niệm ứng dụng ảo và làm cho dễ xác định quyền sở hữu và các trách nhiệm của các trình cắm thêm giữa tất cả các bên liên quan.

Dựa vào bản chất động cao trong cấu hình PHP, chúng tôi chọn thiết kế lấy ứng dụng làm trung tâm (có nghĩa là, được thiết kế cho SugarCRM) làm giải pháp hỗ trợ trực tiếp; ý định của chúng tôi là xem xét lại cách tiếp cận có thể sử dụng lại và tổng quát hơn bằng cách thực hiện mã mô đun. Căn cứ vào các hướng dẫn tương tác của trình cắm thêm IBM PureSystems trong Hướng dẫn phát triển trình cắm thêm (Plug-in Development Guide), ba trình cắm thêm của chúng tôi được thiết kế với các trách nhiệm riêng.

  • Trình cắm thêm SugarCRM
    • Định nghĩa và thu gom đầu vào của người dùng để cài đặt SugarCRM.
    • Cài đặt các gói hệ điều hành cần thiết.
    • Cài đặt và cấu hình phần mềm cần thiết gồm cả Apache, PHP và APC.
    • Sao chép và chuẩn bị gói phần mềm Doanh nghiệp SugarCRM (SugarCRM Enterprise).
    • Cung cấp giám sát bản ghi nhật ký SugarCRM.
    • Hỗ trợ các hoạt động thời gian chạy cơ bản.
  • Trình cắm thêm liên kết DB2
    • Định nghĩa và thu gom đầu vào của người dùng cho một cá thể DB2 hiện có.
    • Hỗ trợ một cá thể DB2 mới trong cùng một mẫu ứng dụng như SugarCRM.
    • Cài đặt và cấu hình phần mềm cần thiết gồm cả ứng dụng khách chủ dữ liệu của IBM và phần mở rộng PHP của IBM DB2.
    • Cấu hình lại PHP để làm việc với DB2.
    • Cài đặt và cấu hình SugarCRM Enterprise với DB2 như là cơ sở dữ liệu tầng sau.
  • Trình cắm thêm liên kết MySQL
    • Định nghĩa và thu gom đầu vào của người dùng cho một cá thể MySQL hiện có.
    • Cài đặt và cấu hình phần mềm cần thiết gồm có các gói MySQL phía máy khách.
    • Cấu hình lại PHP để làm việc với MySQL.
    • Cài đặt và cấu hình SugarCRM Enterprise với MySQL như là cơ sở dữ liệu tầng sau.

Do tính chất nguồn mở của Apache và PHP, một quyết định quan trọng khác đối với chúng tôi là liệu có nên đóng gói các mã nhị phân của phần mềm bên thứ ba hoặc có nên xây dựng phần mềm tiên quyết đang chạy không. Chúng tôi đã quyết định xây dựng từ các nguồn do người dùng cung cấp để có khả năng mở rộng và có khả năng linh hoạt hơn.

Đóng gói giải pháp

Căn cứ vào các quyết định thiết kế và các lý do cấp phép, giải pháp hỗ trợ cho SugarCRM được đóng gói thành nhiều tệp, được dùng để chạy các kịch bản kinh doanh trong IBM PureSystems.

Tệp trình cắm thêm chính là gói kiểu mẫu có chứa định nghĩa kiểu mẫu và 4 trình cắm thêm. Tệp này có mã Java™, cấu hình JSON, Python và các kịch bản lệnh vỏ (shell) mà chúng tôi đã phát triển để hỗ trợ mô hình hóa, triển khai và hoạt động của ứng dụng SugarCRM. Tên tệp là sugarcrm-1.0.0.0.tgz.

Bảng 2. Các nội dung của gói kiểu mẫu SugarCRM
Tên tệpThư mục con trong TGZMô tả
sugarcrm-1.0.0.0.tgzĐịnh nghĩa kiểu mẫu SugarCRM cho phiên bản 1.0.0.0.
sugarcrm-1.0.0.2.tgzpluginsTrình cắm thêm SugarCRM hỗ trợ kết nối Apache, PHP, APC và Ấn bản SugarCRM Enterprise v6.4.0.
sugarcrmdb2-1.0.0.2.tgzpluginsTrình cắm thêm liên kết SugarCRM DB2 hỗ trợ kết nối SugarCRM tới DB2.
sugarcrmmysql-1.0.0.2.tgzpluginsTrình cắm thêm liên kết SugarCRM DB2 hỗ trợ kết nối SugarCRM với MySQL.
sugarcrm-samples-1.0.0.2.tgzpluginsTrình cắm thêm sample (ví dụ mẫu) của SugarCRM cung cấp các khuôn mẫu và các mẫu ứng dụng ví dụ mẫu.

Hãy chuyển đến trang web SugarCRM để tải về các tệp các giải pháp đóng gói nói trên.

Các tệp khác là các tệp hỗ trợ trình cắm thêm có chứa các sản phẩm và các nguồn của bên thứ ba có thể tải về miễn phí. Những người quản trị đám mây có thể chọn xây dựng các gói riêng của mình hoặc tải về các gói dựng sẵn rồi cấu hình các trình cắm thêm riêng lẻ trong giao diện người dùng IBM PureSystems. Vì một trong những nền tảng đầu tiên được hỗ trợ trong IBM PureSystems là Linux, nên các chi tiết về các tệp hỗ trợ cho Linux được mô tả dưới đây.

Bảng 3. Các nội dung của gói hỗ trợ trình cắm thêm SugarCRM (SugarLinux.tgz)
Tên tệpThư mục con trong TGZNguồnMô tả
autoconf-latest.tgzLinux\SOURCEShttp://www.gnu.org/software/autoconf/Một công cụ do PHPize yêu cầu để biên dịch các phần mở rộng PHP
httpd-2.2.21.tgzLinux\SOURCEShttp://httpd.apache.org/download.cgiGói nguồn Apache
PHP-5.3.8.tgzLinux\SOURCEShttp://www.PHP.net/Gói nguồn PHP
APC-3.1.9.tgzLinux\SOURCEShttp://pecl.PHP.net/package/APCGói nguồn APC
Bảng 4. Các nội dung của gói hỗ trợ trình cắm thêm liên kết DB2 (DB2LinkLinux.tgz)
Tên tệpThư mục con trong TGZNguồnMô tả
ibm_data_server_client_linuxx64_v97.tar.gzLinux\Productshttp://www-01.ibm.com/support/docview.wss?rs=4020&uid=swg21385217Phiên bản 9.7 của ứng dụng khách chủ dữ liệu của IBM, được dùng để xây dựng phần mở rộng DB2
ibm_db2-1.9.2.tgzLinux\SOURCEShttp://pecl.PHP.net/package/ibm_db2Nguồn cho phần mở rộng PHP "ibm_db2"
Bảng 5. Các nội dung của gói hỗ trợ trình cắm thêm liên kết MySQL (MySQLLinkLinux.tgz)
Tên tệpThư mục con trong TGZNguồnMô tả
mysql-shared-compat-5.0.92-1.rhel5.x86_64.rpmLinux\RPMShttp://dev.mysql.com/downloads/mysql/5.0.html#downloadsRPM cần thiết cho PHP với tùy chọn MySQL
mysql-devel-5.0.77-4.el5_4.2.x86_64.rpmLinux\RPMShttp://dev.mysql.com/downloads/mysql/5.0.html#downloadsRPM cần thiết cho PHP với tùy chọn MySQL

Sử dụng PDK làm một điểm khởi đầu

Có thể cấu trúc một trình cắm thêm như một dự án Eclipse, do đó hãy sử dụng một nền tảng mạnh mẽ và linh hoạt để phát triển. Tuy nhiên, tổ chức nội bộ của trình cắm thêm không theo một tập hợp các quy tắc và các quy ước chặt chẽ để có thể xây dựng nó thành các gói đúng định dạng và để các hệ thống con IBM PureSystems xử lý nó. Chúng tôi đã thấy rằng một công cụ phát triển là cần thiết trong hai vùng: Bắt đầu và gỡ lỗi. Đến cuối bài này, PDK (Bộ dụng cụ phát triển Trình cắm thêm) sẽ có sẵn là một phần của IBM PureSystems dưới dạng một tệp ZIP để bạn có thể tải về từ trang chủ.

PDK giúp bạn bắt đầu bằng cách cung cấp một tập ví dụ mẫu có hai trình cắm thêm thành phần và một trình cắm thêm liên kết. Chúng tôi đã sử dụng các trình cắm thêm ví dụ mẫu làm một ví dụ học tập và cũng làm một điểm khởi đầu để phát triển bằng cách sửa đổi các ví dụ mẫu đó. Các quy tắc và quy ước ngầm định có thể gây khó khăn cho việc theo dõi trong quá trình phát triển và các lỗi kết quả thường lộ ra theo cách khó hiểu trong thời gian chạy, gây khó khăn cho việc gỡ lỗi. Nếu có các vi phạm về những quy tắc này, nhiều khả năng sẽ phát hiện ra các lỗi như vậy trong quá trình xây dựng.

PDK cũng giúp gỡ lỗi thông qua một trình cắm thêm gỡ lỗi (debug). Thành phần này có thể được kéo và thả vào bất kỳ mẫu ứng dụng ảo nào. Nó cung cấp hai kỹ thuật gỡ lỗi:

  1. Người dùng có thể triển khai mẫu ứng dụng mà không cần thực sự triển khai các máy ảo vào đám mây, sao cho có thể kiểm tra tạo phẩm cấu trúc liên kết. Điều này có thể có ích trong giai đoạn phát triển ban đầu khi mã vẫn chưa chạy được và người dùng có thể tránh được chu kỳ triển khai một máy ảo kéo dài.
  2. Sau khi đã triển khai mẫu ứng dụng vào đám mây, các tệp được sử dụng trong quá trình kích hoạt được duy trì trong máy ảo để cho người dùng có thể đăng nhập và gỡ lỗi. Điều này rất có ích trong giai đoạn phát triển cuối cùng để gỡ lỗi các kịch bản lệnh vỏ và Python.

Sử dụng kiểu mẫu

Một kiểu mẫu là một bộ sưu tập các trình cắm thêm xác định một giải pháp và cấu trúc liên kết cụ thể. Trong một môi trường phát triển, một kiểu mẫu xuất hiện như một dự án. Nhà phát triển có thể xác định tên, phiên bản, mô tả và các thỏa thuận cấp phép trong tệp patterntype.json và sử dụng kịch bản lệnh xây dựng do PDK cung cấp để tạo ra các tệp gói kiểu mẫu.

Chúng tôi đóng gói 3 trình cắm thêm chức năng và một trình cắm thêm samples (các ví dụ mẫu) trong tệp kiểu mẫu SugarCRM. Một quản trị viên đám mây chỉ cần nhập khẩu kiểu mẫu đó, chạy nó và sử dụng các tệp TGZ được mô tả trong phần Đóng gói giải pháp để kích hoạt các trình cắm thêm chức năng này. Chạy trình cắm thêm samples khi chạy kiểu mẫu vì nó không đòi hỏi cấu hình.

Phát triển mô hình ứng dụng

Các thành phần, các liên kết, các chính sách và các tham số đầu vào của người dùng có kết hợp với một trình cắm thêm được mô hình hóa trong tệp appmodel/metadata.json. Căn cứ vào các quyết định mô hình hóa được mô tả trong phần Các lý do thiết kế, chúng tôi đã xây dựng trình cắm thêm SugarCRM là các trình cắm thêm cơ sở dữ liệu và các trình cắm thêm chỉ có thành phần để hỗ trợ cả hai các thành phần lẫn các liên kết.

  • Thuộc tính id (mã định danh) của thành phần hoặc liên kết phải là duy nhất và được dùng làm tên thành phần trong quá trình chuyển đổi.
  • Thuộc tính type (kiểu) xác định thành phần, liên kết hoặc chính sách.
  • Cũng có thể quy định khía cạnh đồ họa của thành phần, chẳng hạn như image (hình ảnh) và thumbnail (hình ảnh thu nhỏ).

Cách tiếp cận khai báo cho phép trình xây dựng ứng dụng IBM PureSystems tương tác với tất cả các trình cắm thêm, thu gom đầu vào của người dùng và lưu giữ lâu bền mô hình ứng dụng như một tài liệu JSON trong kho lưu trữ.

Đoạn mã JSON cho thấy cách chúng tôi đã định nghĩa một thành phần và một liên kết trong cùng một tệp metadata.json.

{
	"id":"xDB2",
	"type":"component",
 	"thumbnail"  : "appmodel/images/thumbnail/existing_DB2_thumb.png",
	"image"      : "appmodel/images/existing_DB2.png"
}
{
        "id":"SugarCRMDB2",
	"type":"link",
	"source":[
            "SugarCRM"
	],
	"target":[
            "DB2",
            "xDB2"
	]
}

Như đã minh họa trong Hình 3, người dùng có thể chọn một thành phần SugarCRM và một trong hai thành phần cơ sở dữ liệu được hỗ trợ, DB2 và MySQL.

Hình 3. Bảng thành phần
Bảng thành phần

Người dùng điền các tham số cần thiết cho mỗi thành phần (Hình 4 và 5) và sau đó chỉ cần kéo và kết nối hai thành phần. Thành phần DB2 có thể là một máy chủ mới hoặc một máy chủ hiện có, trong khi thành phần MySQL chỉ được hỗ trợ như là một máy chủ hiện có.

Hình 4. Các tham số SugarCRM
Các tham số SugarCRM
Hình 5. Các tham số thành phần cơ sở dữ liệu
Các tham số thành phần cơ sở dữ liệu

Hình 6 cho thấy một mẫu ví dụ với SugarCRM và DB2 hiện có. Để cho thuận tiện, trong kiểu mẫu cho SugarCRM có kèm theo một số khuôn mẫu được tạo sẵn.

Hình 6. Mẫu ví dụ với SugarCRM và DB2
Mẫu ví dụ với SugarCRM và DB2

Triển khai các bộ chuyển đổi

Một trong những nhiệm vụ quan trọng về phát triển trình cắm thêm là triển khai các bộ chuyển đổi. Tất cả các trình cắm thêm cung cấp các bộ chuyển đổi để chuyển đổi một thành phần, liên kết hoặc chính sách trong mô hình ứng dụng thành một đoạn tài liệu cấu trúc liên kết có thể được dùng để triển khai khung công tác IBM PureSystems. Mô hình ứng dụng và tài liệu cấu trúc liên kết là hai tài liệu JSON.

Có hai cách để triển khai một bộ chuyển đổi:

  • Đối với các mô hình đơn giản, IBM PureSystems có một lớp TemplateTransform cho phép nhà phát triển trình cắm thêm viết các bộ chuyển đổi như là một khuôn mẫu dựa trên JSON khi sử dụng Công cụ tốc độ của Apache (Apache Velocity Engine). Do đó, nhà phát triển có thể phát triển trực quan hơn bằng cách sử dụng các macro JSON và Velocity.
  • Đối với các mô hình phức tạp hơn, nhà phát triển viết một công cụ Java mở rộng lớp TopologyProvider để xây dựng một đối tượng JSON của cấu trúc liên kết động và linh hoạt hơn bằng mã Java.

Chúng tôi chọn cách tiếp cận khuôn mẫu cho các trình cắm thêm cơ sở dữ liệu của mình, vì phép chuyển đổi này tương đối đơn giản. Mỗi thành phần và liên kết cơ sở dữ liệu có sẵn đều có một khuôn mẫu. Đoạn mã của khuôn mẫu này cho thấy việc chuyển đổi tham số cho một cơ sở dữ liệu DB2 có sẵn.

#set( $db_type = $provider.componentName.substring(1) )
{
    "name"  : "xDB2",
    "type"  : "xDB2",
    "parms" : {
        "db_type"     : "$db_type",
        "db_name"     : "$attributes.db_name",
        "db_hostname" : "$attributes.db_hostname",
        "db_port"     : "$attributes.db_port",
        "user"        : "$attributes.user",
        "password"    : "$attributes.password",
        "service"     : "$prefix"
    }
}

Việc chuyển đổi thành phần SugarCRM đòi hỏi nhiều chức năng hơn, vì vậy chúng tôi đã phát triển bộ chuyển đổi bằng cách sử dụng một công cụ Java.

Việc sử dụng các khuôn mẫu Velocity hoặc mã Java được khai báo trong các tệp XML trong thư mục OSGi-INF. Đoạn mã XML này cho thấy việc sử dụng một khuôn mẫu là, templates/xdb2_component.vm làm bộ chuyển đổi.

<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="xDB2">
 <implementation class="com.ibm.maestro.model.transform.template.TemplateTransformer"/>
	<service>
		<provide interface="com.ibm.maestro.model.transform.TopologyProvider"/>
	</service>
 <property name="component.template" type="String" value="templates/xdb2_component.vm"/>
</scr:component>

Các tài liệu thành phần, OSGI-INF/*.xml, phải được liệt kê trong tệp bản kê META-INF/MANIFEST.MF. Tệp bản kê này cho thấy hai tài liệu thành phần được sử dụng cho trình cắm thêm liên kết DB2.

Service-Component: OSGI-INF/SugarCRMDB2Transform.xml,OSGI-INF/xDB2Transform.xml

Các kịch bản lệnh tự động hóa

Tập hợp các trình cắm thêm để hỗ trợ SugarCRM gồm có các thành phần sau:

  1. DB2 hiện có: Biểu diễn một máy chủ DB2 hiện có và thực hiện cấu hình cần thiết, chẳng hạn như khởi tạo cơ sở dữ liệu cho SugarCRM.
  2. MySQL hiện có: Biểu diễn một máy chủ MySQL hiện có và thực hiện cấu hình cần thiết, ví dụ như khởi tạo cơ sở dữ liệu cho SugarCRM.
  3. Liên kết DB2: Biểu diễn sự phụ thuộc giữa các thành phần của SugarCRM và DB2 và thực hiện cấu hình cuối cùng khi cả hai máy chủ SugarCRM và DB2 đã sẵn sàng. Liên kết này bao gồm việc truyền địa chỉ IP của máy chủ DB2 đến máy chủ SugarCRM.
  4. Liên kết MySQL: Biểu diễn sự phụ thuộc giữa các thành phần của SugarCRM và MySQL và thực hiện cấu hình cuối cùng khi cả máy chủ SugarCRM và MySQL đã sẵn sàng. Liên kết này bao gồm việc truyền địa chỉ IP của máy chủ MySQL đến máy chủ SugarCRM.

Để triển khai thực tế, chúng tôi đã thiết lập mã cho các trình cắm thêm này như các dự án Eclipse sau đây:

  1. Thành phần SugarCRM là một dự án duy nhất.
  2. Thành phần và liên kết DB2 hiện có là một dự án kết hợp.
  3. Thành phần và liên kết MySQL hiện có là một dự án kết hợp.

Hướng dẫn phát triển trình cắm thêm (Plug-in Development Guide) mô tả một cấu trúc được xác định rõ cho một dự án Eclipse mà việc triển khai trình cắm thêm phải tuân theo. Hình 7 và 8 cho thấy cách bố trí bên trong của ba dự án Eclipse, tập trung vào thư mục plug-in (trình cắm thêm) lưu trữ mã của chúng tôi.

Hình 7. Triển khai trình cắm thêm cho SugarCRM
Triển khai trình cắm thêm cho SugarCRM
Hình 8. Triển khai trình cắm thêm cho DB2 và MySQL
Triển khai trình cắm thêm cho DB2 và MySQL

Các tệp được đánh dấu màu đỏ là các điểm nhập vào cho IBM PureSystems: Chúng chứa mã Python để cài đặt và cấu hình phần mềm. Các tên và các vị trí của chúng được cố định sao cho công cụ kích hoạt có thể gọi chúng trong lúc triển khai.

Trình tự tiêu chuẩn là:

  1. install.py
  2. configure.py
  3. start.py

Các kịch bản lệnh còn lại sẽ hỗ trợ các kịch bản lệnh được gọi từ các kịch bản lệnh chính. Các tệp mã nhị phân có thể được đóng gói với trình cắm thêm có trong thư mục files (các tệp) và chúng được đặt trong các thư mục Linux và AIX riêng. Tương tự như vậy, các kịch bản lệnh cũng được đặt trong các thư mục Linux và AIX riêng.

Trong một số cách triển khai, các kịch bản lệnh là một nguồn đơn; điều đó có nghĩa là chúng được viết để chạy trên cả nền tảng Linux lẫn AIX. Trong trường hợp của mình, chúng tôi thấy rằng việc triển khai khác nhau quá nhiều giữa hai nền tảng, vì vậy chúng tôi cho rằng việc duy trì chúng một cách riêng biệt sẽ dễ quản lý hơn.

Lưu ý cách thiết lập mã cho thành phần và liên kết trong cùng một trình cắm thêm trong Hình 8.

Để có thể sử dụng tốt hơn, chúng tôi đã thêm một trình cắm thêm samples (các ví dụ mẫu) có các mẫu và các khuôn mẫu ứng dụng dựng sẵn làm một dự án Eclipse riêng biệt. Các mẫu kèm theo giúp những người dùng cuối nhanh chóng nhận được một mẫu dễ dùng và các khuôn mẫu cho phép triển khai nhanh chóng.

Hình 9 cho thấy một màn hình triển khai khuôn mẫu với đầu vào người dùng đơn giản.

Hình 9. Triển khai ứng dụng SugarCRM khi sử dụng khuôn mẫu
Triển khai ứng dụng SugarCRM khi sử dụng khuôn mẫu

Chúng tôi đã sử dụng tính năng xuất khẩu ứng dụng IBM PureSystems để thu gom siêu dữ liệu và đã đặt các tệp giải nén vào thư mục /plug-in/applications như trong Hình 10.

Hình 10. Cấu trúc trình cắm thêm với Samples
Cấu trúc trình cắm thêm với Samples

Sử dụng lại các trình cắm thêm hiện có

Trong trường hợp triển khai một máy chủ DB2 mới cùng với nút SugarCRM trong cùng một mẫu ứng dụng, chúng tôi muốn sử dụng các khả năng trình cắm thêm IBM PureSystems DB2 càng nhiều càng tốt. Khi làm việc với các nhóm phát triển IBM PureSystems, chúng tôi đã xác định và đã khớp lại hai tính năng mới:

  • Khả năng sử dụng lại các trình cắm thêm hiện có theo các kiểu mẫu tùy chỉnh mới.
  • Khả năng mở rộng các tính năng trình cắm thêm và các cấu hình cơ sở dữ liệu.

Sử dụng lại các trình cắm thêm hiện có theo các kiểu mẫu tùy chỉnh mới
Chúng tôi muốn kèm theo một thành phần DB2 mới khi mô hình hóa ứng dụng và cấu hình một máy chủ DB2 mới để làm việc với SugarCRM trong quá trình triển khai ứng dụng. Với các khả năng của sản phẩm hiện nay, điều này là không thể vì các trình cắm thêm DB2 được định nghĩa và được tải vào IBM PureSystems để làm việc với các kiểu mẫu đã biết như là dbaaswebapp.

Chúng tôi đã yêu cầu một tính năng mới để cho phép một trình cắm thêm tùy chỉnh chỉ ra mối liên hệ bao hàm của các kiểu mẫu hiện có và do đó của các trình cắm thêm, trong định nghĩa trình cắm thêm. Tính năng links (các liên kết) của IBM PureSystems đã được phát triển để có thể khai báo một mệnh đề "links" trong một tệp config.json của các trình cắm thêm và khung công tác sẽ dùng các trình cắm thêm liên kết như thể chúng được kết hợp thông qua khai báo kiểu mẫu thứ cấp.

Đây hoá ra là một tính năng sản phẩm có ích và tổng quát, cho phép có thể sử dụng lại các trình cắm thêm của tất cả các kiểu mẫu một cách thích hợp.

Mở rộng các tính năng trình cắm thêm DB2 và các cấu hình cơ sở dữ liệu
Hai trong số các yêu cầu cài đặt SugarCRM là:

  • Khả năng tìm kiếm toàn văn bản của máy chủ cơ sở dữ liệu. DB2 có tìm kiếm toàn văn bản như là một tính năng bổ sung mà theo mặc định không được chạy tính năng này trong lúc triển khai mẫu ứng dụng ảo của IBM PureSystems khi sử dụng các trình cắm thêm DB2.
  • Một cấu hình cơ sở dữ liệu tùy chỉnh trong vùng bộ đệm và vùng bảng.

Để bảo đảm cơ sở dữ liệu được cung cấp của mẫu ứng dụng ảo đáp ứng tất cả các yêu cầu, chúng tôi đã định nghĩa rõ các điểm mở rộng thích hợp với nhóm phát triển trình cắm thêm DB2. Một tính năng sản phẩm mới là tiêu chuẩn tải làm việc của cơ sở dữ liệu tùy chỉnh được xây dựng và chuyển giao. Nó cho phép những người dùng cuối tạo ra một tiêu chuẩn tải làm việc của cơ sở dữ liệu mới bao gồm một tệp gói kịch bản lệnh với các kịch bản lệnh tùy chỉnh được chạy tại mỗi điểm mở rộng. Có thể sử dụng tiêu chuẩn tải làm việc của cơ sở dữ liệu tùy chỉnh cho cấu hình DB2 trong một mẫu ứng dụng ảo.

Để làm điều này, chúng tôi đã tùy chỉnh và đã đóng gói các kịch bản lệnh sau:

  • tune_inst.sh: Tùy chỉnh cá thể DB2 sau khi nó được cài đặt và được khởi động lần đầu.
  • tune_db.sh: Tùy chỉnh cấu hình cơ sở dữ liệu sau khi nó được tạo ra.
  • post_start_inst.sh: Bắt đầu tìm kiếm toàn văn bản mỗi khi DB2 được khởi động (lại).

Với hai tính năng mới được phát triển này, chúng tôi đã hoàn thành thắng lợi những mục tiêu của mình về sử dụng lại các trình cắm thêm DB2 để hỗ trợ cho SugarCRM.


Kết luận

Trong bài này, chúng tôi đã trình bày những lý do thiết kế mà nhóm phát triển của chúng tôi đã sử dụng làm khuôn mẫu để hướng dẫn chúng ta trong việc tạo ra một trình cắm thêm để cho phép giải pháp SUGARCRM hiện có triển khai trên IBM PureSystems. Chúng tôi cũng đã đưa bạn đi qua các nỗ lực phát triển của mình:

  • Phát triển ba trình cắm thêm để chạy SugarCRM.
  • Đóng gói các trình cắm thêm.
  • Sử dụng các ví dụ mẫu trong PDK (Bộ dung cụ phát triển trình cắm thêm) làm một điểm khởi đầu (và đặc biệt là để gỡ lỗi các trình cắm thêm của chúng tôi).
  • Định nghĩa một kiểu mẫu và mô hình ứng dụng cho các trình cắm thêm của chúng tôi (để làm cho chúng có thể triển khai nhanh chóng).
  • Triển khai thực hiện các bộ chuyển đổi, có thể sử dụng "các công cụ", chuyển đổi các đoạn mô hình ứng dụng thành một đoạn tài liệu cấu trúc liên kết, để triển khai IBM PureSystems.
  • Xây dựng các kịch bản lệnh để tự động hóa các nhiệm vụ thực hiện và triển khai.
  • Xây dựng hai tính năng của trình cắm thêm sử dụng lại-kiểu-mẫu và cấu hình-cơ sở dữ liệu để đáp ứng các yêu cầu của giải pháp SugarCRM.

Nhưng đó chưa phải là tất cả. Phần 2 mô tả chi tiết các bài học mà chúng tôi đã thu được khi phát triển trình cắm thêm cho SugarCRM.

Lời cảm ơn

Chúng tôi muốn gửi lời cảm ơn tới những người ủng hộ chính cho dự án này:

  • Willy Chiu, Larry Hsiung, Thomas Truong, Jeffrey Coveyduc, Kai Young, Nauman Fakhar, Chris Kiernan, Raymond Wong trong nhóm HiPODS và các phòng thí nghiệm đám mây.
  • Steve Ims, Lin Sun, Ted Kirby trong nhóm phát triển IBM Workload Deployer.
  • Ning Wang, Qi Rong Wang trong nhóm phát triển Cơ sở dữ liệu là một Dịch vụ của IBM.
  • Nasser Momtaheni, Joseph Peterson, Rodney Johnson trong nhóm IBM Innovation Center
  • Stas Malyshev của SugarCRM

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=824574
ArticleTitle=Triển khai các ứng dụng mới trên IBM PureSystems bằng các trình cắm thêm, Phần 1
publish-date=07092012