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 doc

7 319 0
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 doc

Đang tải... (xem toàn văn)

Thông tin tài liệu

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.  Viết các kịch bản lệnh trung lập-nền tảng và đặc trưng-nền tảng.  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ợ. Hãy xem xét các lĩnh vực này kỹ hơn. Khai báo sự hỗ trợ và các yêu cầu về nền tảng Tệp cấu hình của trình cắm thêm, config.json, có một phần requires (các yêu cầu) cho từng cá thể gói. Nếu một trình cắm thêm hỗ trợ nhiều nền tảng có cùng một tập các tệp, thì không cần khai báo nền tảng. Nếu không, như trong trường hợp của chúng tôi, có những khác biệt rất lớn giữa các tệp và các kịch bản lệnh của Linux và AIX, mệnh đề arch nên được dùng, cùng với các thuộc tính khác như bộ nhớ và CPU, để biểu thị định nghĩa gói bị hạn chế để hỗ trợ một nền tảng cụ thể. Như các kết quả cho thấy, gói của chúng tôi có hai định nghĩa, mỗi định nghĩa có các phầncác yêu cầu hệ thống độc lập. Thiết lập các tệp và các kịch bản lệnh cho nhiều nền tảng Cấu trúc thư mục trong trình cắm thêm có liên quan chặt chẽ đến định nghĩa gói. Để bảo trì dễ dàng hơn, hãy luôn xem xét việc sử dụng một tập các tệp và các kịch bản lệnh giống nhau cho nhiều nền tảng. Chúng tôi đã chọn biểu thị rõ platform (nền tảng) trong các tên thư mục của chúng tôi như được mô tả trong Phần 1, Thiết kế và phát triển. Thu thập đầu vào hỗ trợ trình cắm thêm cho nhiều nền tảng Giao diện người dùng cấu hình của trình cắm thêm được định nghĩa trong tệp config_meta.json của trình cắm thêm. Cách tiếp cận có thể khai báo được này giúp dễ dàng xây dựng giao diện người dùng và đồng thời làm cho việc hỗ trợ nhiều nền tảng bị hạn chế về tính linh hoạt nếu các yêu cầu khác nhau. Với danh sách các tệp được mô tả trong Phần 1, Đóng gói giải pháp cho Linux và một danh sách dài hơn nhiều cho AIX, về mặt tổng quát chúng tôi đã quyết định lấy một đầu vào của một tệp đóng gói có tất cả các tệp tiên quyết được nén vào một cấu trúc thư mục định sẵn cho từng trình cắm thêm chức năng của chúng tôi. Thiết kế này cho phép người quản trị đám mây thu gom vừa đủ các tệp dùng cho nền tảng đích trong khi các trình cắm thêm của chúng tôi hỗ trợ cả Linux lẫn AIX. Viết các kịch bản lệnh trung lập-nền tảng và đặc trưng-nền tảng Nguyên tắc là viết một tập các kịch bản lệnh giống nhau cho các nền tảng Linux và AIX bất cứ ở đâ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 Trong khi cài đặt ngăn xếp phần mềm theo yêu cầu của SugarCRM trên hình ảnh cơ sở, chúng tôi đã thấy rằng một số gói (RPM) không được kèm theo trong hình ảnh đó. Kết quả là, trình cắm thêm cần kèm theo và cài đặt lại thiếu các RPM này. Một giải pháp có thể là cung cấp một dịch vụ trong lúc kích hoạt để thỏa mãn tự động các phụ thuộc và cài đặt các gói còn thiếu. Việc thực hiện trình cắm thêm chỉ đơn giản là liệt kê các gói tiên quyết và không cần xử lý chúng. Một điều kiện lỗi mà chúng tôi đã gặp phải liên quan đến điều kiện chạy đua giữa hai vai trò. (Một điều kiện chạy đua xảy ra khi đầu ra hoặc kết quả của quá trình này không theo dự kiến và phụ thuộc rất nhiều vào trình tự hay thời gian của các sự kiện khác). Điều quan trọng cần lưu ý là các kịch bản lệnh vòng đời của các vai trò khác nhau được gọi song song; do đó, cần thận trọng để tránh xung đột khi các kịch bản lệnh quản lý tài nguyên chia sẻ. Trong một cá thể, chúng tôi đã thấy rằng một kịch bản lệnh của một vai trò đã dừng hoạt động Apache trong khi một kịch bản lệnh của vai trò khác đã khởi động Apache. Điều này dẫn đến hành vi bất thường ở nơi Apache thường không hoạt động đúng. Điều cần thiết là xác định các dịch vụ hoặc tài nguyên chia sẻ và thiết kế mã để quản lý chúng đúng đắn. Về đầu trang Các trình cắm thêm gỡ lỗi Trong khi phát triển các kịch bản lệnh vỏ, chúng tôi đã thấy rằng để đi qua chu kỳ chỉnh sửa kịch bản lệnh trong Eclipse, xây dựng trình cắm thêm, xóa trình cắm thêm trong IBM PureSystems, rồi triển khai lại là quá dài dòng. Ngoài ra, cần xóa và tạo lại máy ảo và các mẫu đang sử dụng trình cắm thêm. Trong thực tế, chúng tôi tận dụng sự hỗ trợ gỡ lỗi trong PDK (Bộ dụng cụ phát triển trình cắm thêm) để tiến hành phát triển kịch bản lệnh. Trước hết hãy thực hiện điều này bằng cách thêm tất cả các tạo phẩm cần thiết và các tệp kịch bản lệnh cơ sở vào trình cắm thêm đó. Chúng tôi đã triển khai mẫu có thành phần gỡ lỗi để tạo ra một môi trường có các tạo phẩm trong kho lưu trữ và kích hoạt các thư mục có chứa các tệp JSON. Sau đó, chúng tôi đã truy cập vào máy ảo và đã gọi riêng các kịch bản lệnh để phát triển và gỡ lỗi bổ sung. Các kịch bản lệnh đã được sao chép lại vào các dự án Eclipse. Về đầu trang Chạy một kịch bản lệnh vòng đời 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ụngcá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ẻ. Cơ chế kết buộc cuối cùng này cho phép bất cứ ai trong chúng tôi thay đổi và gỡ lỗi chỉ một trình cắm thêm mà không làm ảnh hưởng đến kiểu mẫu và các trình cắm thêm khác. Chu kỳ phát triển được rút ngắn là vô cùng có ích bởi vì một số các trình cắm thêm của chúng tôi chứa các tập tệp lớn và phải mất nhiều thời gian để nhập khẩu lại và chạy lại. Tức là, chúng tôi đã rơi vào một tình huống ở đó chúng tôi có thể không còn cấu hình hoặc xóa một trình cắm thêm được nhập khẩu riêng lẻ nữa nếu đã xóa kiểu mẫu chính trong IBM PureSystems. Kịch bản này có thể xảy ra khi một nhà phát triển cố gắng xóa một trình cắm thêm còn nhà phát triển khác đang ở trong quá trình làm mới kiểu mẫu đó. Khi kiểu mẫu chính được đưa trở lại, có thể hoàn toàn quản lý được trình cắm thêm gặp rắc rối. Các trình cắm thêm đóng gói kiểu mẫu không có vấn đề như vậy bởi vì chúng đến và đi cùng với kiểu mẫu đó. Chúng tôi đã đề nghị với nhóm sản phẩm IBM PureSystems cho phép xóa kiểu mẫu chỉ khi không có các trình cắm thêm phụ thuộc được nhập khẩu riêng lẻ; tính năng này sẽ được phân phối trong một bản phát hành tương lai. Về đầu trang Sử dụng các phiên bản để tăng tốc độ phát triển Mỗi kiểu mẫu có một phiên bản theo định dạng major.minor. Trong quá trình phát triển, đôi khi chúng tôi đã muốn triển khai và so sánh nhiều phiên bản của một kiểu mẫu hoặc chúng tôi chỉ đơn giản không muốn trải qua chu kỳ xóa hết kiểu mẫu. Chúng tôi đã thấy rằng nên sử dụng một phiên bản chính khác để xây dựng và cài đặt kiểu mẫu là rất thích hợp. Trình cắm thêm được đóng gói trong kiểu mẫu cũng cần có một phiên bản chính mới và cần tham khảo phiên bản kiểu mẫu mới. Ví dụ, nếu phiên bản kiểu mẫu hiện đang được cài đặt là 1.0.0.1 và phiên bản kiểu mẫu mới là 2.0.0.1, các trình cắm thêm nên có cấu hình như đoạn mã ví dụ mẫu sau đây trong tệp config.json: "name": "sugarcrm", "version": "2.0.0.2", "patterntypes": { "primary": { "sugarcrm": "2.0" } }, 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ụngdù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. . 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) . 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. Eclipse, xây dựng trình cắm thêm, xóa trình cắm thêm trong IBM PureSystems, rồi triển khai lại là quá dài dòng. Ngoài ra, cần xóa và tạo lại máy ảo và các mẫu đang sử dụng trình cắm thêm. Trong

Ngày đăng: 01/04/2014, 02:20

Tài liệu cùng người dùng

Tài liệu liên quan