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 2
Trong Phần 1 của loạt bài này, các 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 dịch vụ độc lập, trên IBM PureSystems. SugarCRM là một ứng dụng PHP đòi hỏi ngăn
xếp LAMP (Linux®, Apache, MySQL, PHP). LAMP không được IBM PureSystems hỗ trợ bên
ngoài hộp, do đó, nhóm này đã 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 IBM
AIX® và Linux cơ sở. Bài này đề cập đến các bài học thu được từ dự án đó.
Nó rất có ích, nhưng cũng không nhất thiết phải đọc Phần 1 trước khi tiếp tục với bài này.
Các bài học thu được từ việc phát triển một trình cắm thêm cho ứng dụng SugarCRM hiện có
của bên thứ ba trình bày các chủ đề sau:
Hỗ trợ nhiều nền tảng.
Quản lý MySQL và DB2.
Phát triển các kịch bản lệnh.
Gỡ lỗi các trình cắm thêm.
Chạy một kịch bản lệnh vòng đời.
Xóa một trình cắm thêm không thể xóa được.
Nhập khẩu các trình cắm thêm riêng lẻ so với các trình cắm thêm đóng gói.
Sử dụng các phiên bản để tăng tốc độ phát triển.
Xử lý các mã nhị phân lớn.
Mở rộng hình ảnh cơ sở.
Hỗ trợ nhiều nền tảng
Các trình cắm thêm IBM PureSystems về bản chất là trung lập về nền tảng. Các nhà phát triển
trình cắm thêm phải thiết kế một kế hoạch thực hiện để hỗ trợ nhiều nền tảng trong các giai đoạn
khác nhau của vòng đời trình cắm thêm và ứng dụng. Nếu không, việc phát triển, bảo trì và gỡ
lỗi đang diễn ra có thể trở nên rất khó khăn hơn là nhanh chóng.
Các lĩnh vực sau đây đặc biệt quan trọng cho dự án của chúng tôi:
Khai báo sự hỗ trợ và các yêu cầu về nền tảng.
Thiết lập các tệp và các kịch bản lệnh cho nhiều nền tảng.
Thu thập đầu vào hỗ trợ trình cắm thêm cho nhiều nền tảng.
đâu có thể. Cuối cùng chúng tôi đã viết hai tập do các quá trình để dựng lên và chạy PHP khác
nhau đáng kể.
Tuy nhiên, chúng tôi đã hiểu được ý nghĩa quan trọng của việc biết rõ các hạn chế nền tảng về
các lệnh và các kịch bản lệnh. Ví dụ, trong AIX, dòng đầu tiên của một kịch bản lệnh vỏ (shell)
nên là #!/bin/sh hoặc #!/bin/ksh chứ không phải là #!/bin/bash và nên sử dụng tar ngay
sau gunzip vì lệnh tar không có tùy chọn -z.
Quản lý các nền tảng có hỗ trợ so với các nền tảng không hỗ trợ
Nền tảng đích ban đầu để triển khai đám mây của chúng tôi là System p (Hệ thống p); tuy nhiên,
vì rất nhiều lý do logic và lập lịch biểu, chúng tôi đã thấy nó cũng cần hỗ trợ cho cả System x
(Hệ thống x) nữa.
Một mẫu ứng dụng ảo là độc lập về nền tảng; do đó nhu cầu hỗ trợ cho nhiều nền tảng không ảnh
hưởng đến các khía cạnh mô hình hóa, nhưng nó tác động đến việc thực hiện trình cắm thêm vì
nó yêu cầu trình cắm thêm cung cấp sự hỗ trợ đầy đủ cho tất cả các nền tảng.
Trong trường hợp của chúng tôi, không thể trình bày đầy đủ ma trận hỗ trợ do tài nguyên bị hạn
chế của chúng tôi. Sự hạn chế này không để lộ ra nguy cơ về một trải nghiệm người dùng không
mong muốn khi một mẫu bị hỏng không thể triển khai được trong một nền tảng không hỗ trợ.
Cách giải quyết hiện tại của chúng tôi cho tình huống này là cung cấp các khuôn mẫu có một tên
gắn liền với nền tảng có hỗ trợ, ví dụ, "SugarCRM với DB2 trên AIX".
Về đầu trang
Quản lý MySQL và DB2
Về mặt kỹ thuật, MySQL và DB2 đều thỏa mãn cùng một mục đích của một cơ sở dữ liệu tầng
sau cho các ứng dụng SugarCRM. Chúng tôi đã sử dụng các khuôn mẫu Velocity tương tự để mô
hình hóa và chuyển đổi để rút ngắn thời gian phát triển của chúng mình. Tuy nhiên, các khía
cạnh sở hữu phần mềm đã gây ra một tác động lớn đến cấu trúc liên kết được hỗ trợ và việc thực
hiện trong giải pháp của chúng tôi. IBM sở hữu DB2, do đó đương nhiên chúng tôi đã thiết kế
các giải pháp của mình để tích hợp với các trình cắm thêm DB2 bên ngoài hộp, như đã mô tả
trong Phần 1, Sử dụng lại các trình cắm thêm hiện có.
Ngược lại, chúng tôi đã áp dụng cách tiếp cận ghép lỏng để hỗ trợ MySQL hiện có.
Về đầu trang
Phát triển kịch bản lệnh
Khi phát triển các kịch bản lệnh vòng đời Python, nhà phát triển phải chú ý tới các sự kiện vòng
đời khởi động chạy mỗi kịch bản lệnh. Một số kịch bản lệnh chỉ được chạy một lần trong toàn bộ
vòng đời của một máy ảo và những kịch bản lệnh khác được thực hiện trong nhiều sự kiện vòng
đời.
Ví dụ, kịch bản lệnh install.py chỉ chạy một lần để khởi tạo trong khi kịch bản lệnh configure.py,
start.py và stop.py cũng đều được gọi mỗi khi khởi động lại máy ảo.
Chúng tôi đã có một yêu cầu cụ thể để thực hiện cài đặt SugarCRM trong kịch bản lệnh
changed.py của trình cắm thêm liên kết cơ sở dữ liệu sau khi tất cả Apache, PHP và cơ sở dữ liệu
được cấu hình đúng. Kịch bản lệnh install (cài đặt) sẽ chỉ được chạy một lần để thiết lập và cấu
hình các nội dung SugarCRM, chứ không chạy mỗi khi gọi kịch bản lệnh changed.py để khởi
động lại từng máy ảo.
Một thuộc tính role (vai trò) có thể được giới thiệu trong Python để cho biết tình trạng cài đặt.
Trong kịch bản lệnh changed.py, chúng tôi kiểm tra sự tồn tại của một tệp cố định do SugarCRM
tạo ra ở cuối quá trình cài đặt để bảo đảm không chạy quá trình này nhiều lần.
Có thể tìm thấy các thông tin chi tiết về các kịch bản lệnh vòng đời trong Hướng dẫn phát triển
trình cắm thêm và Trung tâm Thông tin của bộ triển khai tải làm việc của IBM.
Về đầu trang
Xóa một trình cắm thêm không thể xóa được
Trong quá trình phát triển, chúng tôi thường phải đối mặt với một tình huống là không thể xóa
được một trình cắm thêm trong IBM PureSystems vì một số phần tử của trình cắm thêm vẫn còn
đang sử dụng. Trong khi một thông báo lỗi chỉ nói đơn giản là trình cắm thêm đang sử dụng và
không cung cấp thông tin về ở đâu hoặc như thế nào, chúng tôi đã thấy rằng việc tiến hành xóa
hết các cá thể ứng dụng, các mẫu ứng dụng và các khuôn mẫu ứng dụng đã triển khai có liên
quan đến trình cắm thêm đó thường loại bỏ được lỗi này.
Về đầu trang
Nhập khẩu các trình cắm thêm riêng lẻ so với các trình cắm thêm đóng gói
Mặc dù cuối cùng chúng tôi đã đóng gói tất cả các trình cắm thêm của mình vào một kiểu mẫu,
chúng tôi đã biết rõ rằng để nhập khẩu các trình cắm thêm riêng lẻ vào IBM PureSystems trong
quá trình phát triển là hiệu quả và kịp thời hơn. Kiểu mẫu chính vẫn phải được nhập khẩu riêng
rẽ sao cho có thể cấu hình và chạy các trình cắm thêm riêng lẻ.
Kỹ thuật này không chỉ hỗ trợ xác minh nhanh chóng cách thực hiện kiểu mẫu mới, mà nó còn
cho phép nhiều nhà phát triển chia sẻ môi trường IBM PureSystems giống nhau.
Về đầu trang
Xử lý các mã nhị phân lớn
Do lý do cấp phép được mô tả trước đây, chúng tôi phải đóng gói một số phần mềm tách rời khỏi
trình cắm thêm và tải chúng lên khi trình cắm thêm được triển khai. Bước này được thực hiện chỉ
một lần trong kịch bản bình thường; tuy nhiên, trong khi phát triển trình cắm thêm, việc tải lên
lặp lại các tệp nhị phân lớn có dung lượng 500MB có thể bị cấm, đặc biệt là với một mạng có tốc
độ chậm.
Một kỹ thuật được được nhóm phát triển trình cắm thêm sử dụng là dùng một biến thể của quá
trình xây dựng cho phép tải các tệp nhị phân riêng rẽ với các trình cắm thêm. Điều này là có thể
với một môi trường phát triển nội bộ. Nhóm phát triển trình cắm thêm đang làm việc để cung cấp
khả năng này cho tất cả các nhà phát triển trình cắm thêm.
Về đầu trang
Mở rộng hình ảnh cơ sở
Để cung cấp một tập phần mềm tiên quyết cho một ứng dụng, một sự trao đổi thường được tính
đến là liệu có nên cài đặt phần mềm đó trên hình ảnh cơ sở hay kèm theo phần mềm đó như là
một phần của hình ảnh cơ sở không. Bởi vì IBM PureSystems cho phép người dùng mở rộng
hình ảnh cơ sở, nên chúng tôi xem xét việc tạo ra một hình ảnh cơ sở mới với các RPM cần thiết
cho SugarCRM. Điều này làm đơn giản nỗ lực phát triển ban đầu cũng như nỗ lực bảo trì trong
tương lai do trình cắm thêm sẽ được cách ly khỏi những thay đổi trong hình ảnh cơ sở.
Tuy nhiên, vì một hình ảnh cơ sở được tùy chỉnh như vậy thường là phổ biến cho tất cả các mẫu,
nên không rõ liệu cách tiếp cận này có khả thi trong thực tế không. Hóa ra là một số tính linh
hoạt trong khi kết hợp hình ảnh cơ sở, có lẽ cùng chung với một công cụ xây dựng hình ảnh như
ICON, bổ sung các khả năng mới trong thiết kế trình cắm thêm. Nói chung, việc sử dụng một
hình ảnh cơ sở sẽ dễ dàng hơn cho khách hàng. Việc bổ sung khả năng này đòi hỏi phải cân nhắc
cẩn thận.