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

Các bài học thu được từ một dự á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. Phần 1 mô tả các nỗ lực phát triển để chạy SugarCRM trên IBM PureSystems (Các hệ thông Pure của IBM). Bài này tập trung vào các bài học thu được từ những nỗ lực đó.

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

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ần và cá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".


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ó.


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.


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.


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.


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.


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.


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.


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.


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.


Kết luận

Trong bài này và Phần 1, chúng tôi đã trình bày các lý do thiết kế mà nhóm của chúng tôi đã sử dụng làm một khuôn mẫu để hướng dẫn chúng tôi 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ó được triển khai trên IBM PureSystems; chúng tôi cũng đã đưa bạn qua các nỗ lực phát triển mà chúng tôi đã làm; và chúng tôi đã mô tả chi tiết các bài học mà chúng tôi đã thu được từ dự án này.

Chúng tôi hy vọng các kinh nghiệm thực hành của mình có thể giúp cho việc viết các trình cắm thêm IBM PureSystems dùng cho các ứng dụng hiện có sẽ dễ dàng hơn nhiều cho bạn.

Sau khi thử nghiệm thành công các trường hợp sử dụng, chúng tôi đã tuyên bố rằng giải pháp SugarCRM "sẵn sàng chạy trên IBM PureSystems". Bên cạnh việc thu được kinh nghiệm quý báu trong việc phát triển các trình cắm thêm phức tạp, chúng tôi tin rằng dự án của chúng tôi đã đạt được những kết quả đáng kể sau đây:

  • Chuyển giao thành công mẫu ứng dụng đầu tiên trên IBM PureSystems dựa trên một ngăn xếp phần mềm không chuẩn. Điều này sẽ góp phần vào sự thành công của cả hai IBM PureSystems và SugarCRM bằng cách cho phép một ISV quan trọng cung cấp phần mềm của họ như là một phần của danh mục IBM PureSystems.
  • Chứng minh rõ ràng là IBM PureSystems không bị hạn chế vào các mẫu ứng dụng được cung cấp ngoài hộp. Bằng cách phát triển các trình cắm thêm mới, có thể tích hợp các ứng dụng mới của các khách hàng và các ISV để sử dụng sức mạnh của IBM PureSystems.
  • Vận dụng nghiêm ngặt sự hỗ trợ phát triển trình cắm thêm trong IBM PureSystems. Sự hỗ trợ này phải mạnh mẽ để xây dựng một danh mục các mẫu ứng dụng phong phú. Bằng cách trưng ra khung công tác của trình cắm thêm cho các kịch bản khác với tập phần mềm IBM hiện có, chúng tôi đã giúp nhóm phát triển IBM PureSystems xác định các lĩnh vực cần cải tiến và nỗ lực này đã dẫn đến rất nhiều tính năng mới sẽ giúp cho việc phát triển trong tương lai.

IBM PureSystems mang lại tiềm năng để gia tăng đáng kể năng suất trong đám mây nhờ cho phép những người dùng tập trung vào các mẫu ứng dụng của họ chứ không cần bận tâm đến cơ sở hạ tầng bên dưới. Chúng tôi tin rằng sự sinh sôi nảy nở của các trình cắm thêm mới sẽ bảo đảm sự thành công của IBM PureSystems khi cung cấp cho những người dùng một tập các lựa chọn phong phú về các mẫu ứng dụng.

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=824575
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 2
publish-date=07092012