Thực tế về điện toán đám mây nguồn mở, Phần 2: Phát triển với đám mây

Bạn có thể đã nghe câu nói "Viết một lần, chạy bất kỳ đâu". Nhưng nếu bạn muốn viết một ứng dụng chạy trong đám mây, bạn thực sự phải biết bạn đang làm gì. Đây là Phần 2 của loạt bài "Thực tế về điện toán đám mây nguồn mở", tìm hiểu cách viết một ứng dụng bằng PHP để chạy trên nền tảng điện toán đám mây Aptana. Tìm hiểu một số khác biệt quan trọng về thiết kế giữa một ứng dụng điện toán đám mây và một ứng dụng N tầng truyền thống. Các khái niệm được minh họa bằng một ứng dụng có vẻ đơn giản, sử dụng các công nghệ mã nguồn mở quen thuộc, khai thác những thế mạnh của điện toán đám mây.

Michael Galpin, Kiến trúc sư phần mềm, Ludi Labs

Michael Galpin đã phát triển phần mềm Java một cách chuyên nghiệp từ năm 1998. Ông hiện đang làm việc cho eBay. Ông đã có bằng về toán học của Viện Công nghệ California.



20 05 2011

Về loạt bài này

Trong loạt bài ba phần "Thực tế về điện toán đám mây nguồn mở" này, hãy tìm hiểu cách xác định xem liệu điện toán đám mây có thể giúp bạn không và làm thế nào để lập kế hoạch chiến lược điện toán đám mây của bạn. Phần1 trình bày các lợi ích của điện toán đám mây, các kiểu đám mây và những lựa chọn mức cao trong các nền tảng điện toán đám mây. Phần3 trình bày các phần khác của vòng đời với một ứng dụng được triển khai trên đám mây.

Trong bài này, hãy tìm hiểu cách viết một ứng dụng đơn giản bằng PHP để chạy trên các nền tảng điện toán đám mây Aptana. Tìm hiểu sự khác biệt về thiết kế giữa một ứng dụng đám mây và một ứng dụng N tầng truyền thống.


Các kiến trúc điện toán đám mây

Đo cắt phần mềm của bạn theo môi trường mà nó chạy trong đó là rất quan trọng nếu bạn muốn phần mềm ổn định, thực hiện tốt và mở rộng để đáp ứng yêu cầu đã đặt ra cho nó. Đây là một lý do quan trọng cho dù bạn sở hữu môi trường để phần mềm của bạn chạy trong đó hay bạn không sở hữu môi trường đó. Như bạn đã tìm hiểu trong Phần1, không phải tất cả các đám mây đều như nhau. Các kiểu điện toán đám mây khác nhau đòi hỏi có sự suy xét khác nhau. Bạn sẽ cần phải phân biệt giữa các nền tảng điện toán đám mây cơ bản và chuyên dụng.

Kiến trúc cho các nền tảng chuyên dụng

Các nền tảng chuyên dụng mức cao là điều tự nhiên nhất khi nói đến kiến trúc. Các nền tảng đó có nhiều điều mà bạn sẽ cần phải xem xét khi thiết kế một ứng dụng chạy trên những đám mây này. Tất nhiên, chúng sẽ mang lại những lợi ích duy nhất, bù đắp cho những hạn chế. Máy ứng dụng của Google (Google App Engine) là một ví dụ tốt.

Khi bạn tạo một ứng dụng cho Máy ứng dụng của Google, cái duy nhất mà bạn tạo là mã nguồn của ứng dụng và bất kỳ các tài sản tĩnh (ví dụ, các hình ảnh) nào mà nó cần. Bạn không có quyền kiểm soát máy chủ ứng dụng hoặc truy cập dữ liệu. Có một lý do chính đáng cho việc này: Các Máy ứng dụng (App Engine) cung cấp các giải pháp có khả năng mở rộng cao. Tuy nhiên, bạn cần phải hiểu được cơ sở hạ tầng mà các Máy ứng dụng cung cấp. Google cung cấp một API (Ngôn ngữ truy vấn Google - Google Query Language) để truy cập kho lưu trữ dữ liệu của Máy ứng dụng. API này rất giống với SQL một cách có chủ ý, bạn dễ dàng hơn khi bắt đầu sử dụng kho lưu trữ dữ liệu. Kho lưu trữ dữ liệu không phải là một cơ sở dữ liệu quan hệ; nó gần giống hơn với một hệ thống tệp đơn giản.

Truy cập đơn giản có chậm hơn một chút so với một truy vấn đơn giản (tìm một đối tượng bằng khóa chính) tới cơ sở dữ liệu. Các truy vấn quan hệ, chẳng hạn như nối bảng, cũng có thể làm được, nhưng chúng được thực hiện bằng nhiều truy vấn tuần tự. Các truy vấn này chậm hơn đáng kể so với một phép nối bảng trong cơ sở dữ liệu quan hệ, nhưng kết quả là sẽ khó tạo ra một truy vấn mang gánh nặng cho kho lưu trữ dữ liệu.

Để tận dụng ưu thế kho lưu trữ dữ liệu, người ta thường khuyên nên phi chuẩn hóa dữ liệu của bạn, cho phép dữ liệu liên quan được lưu trữ cùng với nhau và lấy ra cùng nhau. Ví dụ, hãy tưởng tượng việc lưu trữ thông tin người dùng mà mỗi người dùng có thể có vài số điện thoại. Đây là một mối quan hệ một-nhiều cổ điển và thường sẽ được mô hình hóa trong cơ sở dữ liệu dưới dạng một bảng người dùng và một bảng số điện thoại, trong đó bảng số điện thoại có chứa một khoá ngoài cho bảng người dùng. Tất nhiên bạn cũng có thể mô hình hóa theo cách này với kho lưu trữ dữ liệu của Google, nhưng sẽ hiệu quả hơn nếu đóng gói các số điện thoại như là một phần của người dùng (dưới dạng một danh sách hay một mảng số điện thoại). Một truy vấn duy nhất tới kho lưu trữ dữ liệu sẽ trả lại tất cả mọi thứ bạn cần.

Máy ứng dụng của Google không phải là nền tảng điện toán đám mây duy nhất sử dụng mô hình này. Một trong những nền tảng của Amazon, SimpleDB, cũng hoạt động theo cách giống hệt. Bạn có thể chạy MySQL, Postgres hoặc bất kỳ cơ sở dữ liệu nào trên EC2, nhưng SimpleDB rất dễ sử dụng và cung cấp những lợi ích về khả năng mở rộng nhất định (mở rộng theo chiều ngang dễ dàng hơn nhiều nếu về cơ bản bạn không cho phép nối bảng). Nền tảng Ning, một nền tảng chuyên dụng khác, cũng cung cấp một mẫu truy cập tương tự.

Bạn có thể gặt hái được nhiều lợi ích bằng cách sử dụng các nền tảng chuyên dụng, nhưng có nhiều đặc điểm bạn cần phải lưu ý khi thiết kế một ứng dụng sẽ chạy trên đó. Thường là đơn giản hơn nếu sử dụng một nền tảng điện toán đám mây cơ bản.

Kiến trúc cho các nền tảng cơ bản

Các nền tảng cơ bản, chẳng hạn như Amazon EC2 hoặc Joyent Accelerator, mang lại cho bạn rất nhiều quyền tự do để chạy bất kỳ phần mềm nào mà bạn muốn trên đám mây của mình. Có ít hạn chế hơn với kiến trúc của bạn. Nếu bạn đang kiến trúc cho một nền tảng cơ bản, bạn có thể tiếp cận nó gần như khi bạn đã sở hữu tất cả nền tảng của chính mình. Bạn sẽ thiết kế ứng dụng của mình như thế nào khi bạn sẽ chạy nó tại trung tâm dữ liệu riêng của bạn hoặc trên các máy chủ thuê từ một nhà cung cấp ở cùng địa điểm? Bạn có lẽ không cần phải thay đổi thiết kế đó nhiều nếu bạn muốn chạy các ứng dụng trên một nền tảng điện toán đám mây.

Bạn có thể chạy các ứng dụng Web trên các nền tảng cơ bản, đúng như bạn làm với một nền tảng chuyên dụng giống như Máy ứng dụng của Google, nhưng bạn có thể sử dụng bất kỳ máy chủ ứng dụng hoặc cơ sở dữ liệu nào mà bạn muốn. Tất nhiên, nhược điểm là bạn cần phải thiết lập, cài đặt, đặt cấu hình và quản lý tất cả các cơ sở hạ tầng này. Nền tảng điện toán đám mây sẽ không giúp bạn nhiều.

Cũng có một số nền mức trung gian. Nền tảng Aptana Cloud cung cấp nhiều tính linh hoạt, do nó được phân tầng ở bên trên của Accelerator Joyent. Aptana làm nhẹ bớt công việc của bạn bằng cách cung cấp một số tùy chọn cơ sở hạ tầng dựa trên nguồn mở để xây dựng các ứng dụng của bạn trên đó. Nó cũng có nhiều công cụ thú vị để đơn giản hóa quá trình triển khai. Chìa khóa thành công là sử dụng nhiều lựa chọn công nghệ nguồn mở.


Sử dụng nguồn mở

Với một nền tảng cơ bản, bạn có thể chọn máy chủ ứng dụng, cơ sở dữ liệu của bạn, v.v. Vậy bạn sẽ chọn cái gì? Nếu bạn đang xây dựng trung tâm dữ liệu riêng của mình, bạn sẽ muốn sử dụng các công nghệ nguồn mở. Với nền tảng đám mây cũng vậy. Bạn sẽ chọn hệ điều hành Linux® hay UNIX® máy chủ Web Apache với các mô đun thích hợp cho ngôn ngữ lập trình lựa chọn của bạn và cơ sở dữ liệu MySQL hoặc Postgres. Đây là những sự lựa chọn phổ biến và bạn có thể tìm một số tùy chọn cấu hình sẵn. Một tùy chọn thậm chí còn dễ hơn, đó là sử dụng Aptana Cloud.

Aptana Cloud

Aptana Cloud (Đám mây của Aptana) gồm nhiều tầng công nghệ nguồn mở nằm bên trên nền tảng Joyent Accelerator. Joyent sử dụng công nghệ ảo hóa Xen ở bên trên của hệ điều hành OpenSolaris, do đó, sự kết hợp Joyent và công nghệ nguồn mở do Aptana sử dụng là một nền tảng nguồn mở thực sự, thuần túy. Aptana sử dụng máy chủ Web Apache, máy chủ thư điện tử Postfix và cơ sở dữ liệu MySQL. Nó cung cấp trình cắm thêm Apache cho PHP và cho Jaxer, Jaxer là thùng chứa nguồn mở để sử dụng JavaScript phía máy chủ. Trong bài viết này, Aptana cũng cung cấp một phiên bản beta riêng tư cho Ruby on Rails trên Aptana Cloud.

Sử dụng Aptana Cloud rất đơn giản. Nền tảng Aptana được tích hợp trong sản phẩm chủ lực của nó là IDE Aptana Studio. Chỉ cần tải về Studio, sử dụng nó để tạo ra các ứng dụng của bạn, triển khai ứng dụng của bạn lên Aptana Cloud. Nếu bạn có công cụ ưa thích riêng của mình để xây dựng ứng dụng của bạn, ứng dụng đó cũng sẽ hoạt động. Chỉ cần nhập nó vào Aptana Studio và sử dụng Studio cho việc triển khai ứng dụng đó lên đám mây. Những phần sau đây xem xét việc xây dựng và triển khai một ứng dụng trong Aptana Cloud.


Xây dựng một ứng dụng

Ứng dụng mẫu trong bài viết này sử dụng PHP trên Aptana Cloud. Để sử dụng Aptana Studio phát triển ứng dụng của bạn, tất cả những thứ bạn cần làm là cài đặt trình cắm thêm PHP, như chỉ ra dưới đây.

Hình 1. Cài đặt trình cắm thêm PHP cho Aptana Studio
Cài đặt trình cắm thêm PHP cho Aptana Studio

Một khi trình cắm thêm (plug-in) được cài đặt, bạn có thể bắt đầu viết PHP. Nó là một IDE đầy đủ, do đó bạn có thể chạy ứng dụng PHP của bạn, gỡ lỗi cho nó, v.v. Trình cắm thêm cũng cung cấp một giao diện để tương tác với cơ sở dữ liệu.

Với ứng dụng mẫu, bạn sẽ tạo ra một blog tùy chỉnh. Đây là kiểu ứng dụng rất thích hợp cho một nền tảng đơn giản, như là Aptana Cloud. Bạn có thể bắt đầu ứng dụng này với tài nguyên tối thiểu và với chi phí thấp. Bạn có thể tăng thêm tài nguyên (mở rộng theo chiều thẳng đứng) khi ứng dụng ngày càng phổ biến hơn. Nhưng ngay cả một ứng dụng tối thiểu cũng là "khả bùng nổ” (burstable - nó sẽ tự động gia tăng sử dụng CPU để đáp ứng sự bùng nổ trong sử dụng). Nếu bạn cần phải duy trì một số lượng người dùng lớn, bạn sẽ cần nhiều máy chủ để mở rộng theo chiều ngang và bạn có thể cần phải sử dụng trực tiếp Joyent Accelerator để xử lý một kiến trúc tùy chỉnh.

Do ứng dụng ví dụ mẫu là một blog, nên bạn sẽ đi đường tắt. Ứng dụng dựa trên phần mềm viết blog của WordPress. Đây là một ứng dụng PHP thuần túy sử dụng cơ sở dữ liệu MySQL, làm cho nó rất phù hợp với Aptana Cloud. Ứng dụng này là nguồn mở, do đó, bạn chỉ cần tải mã về, tùy chỉnh nó và triển khai nó lên máy chủ của bạn. Trong trường hợp này, máy chủ thực sự là Aptana Cloud.

Một trong những nhiệm vụ đầu tiên cho bất kỳ ứng dụng WordPress nào là cấu hình nó bằng cách chỉnh sửa kịch bản lệnh wp-config.php. Việc này sẽ thiết lập quyền truy cập cơ sở dữ liệu của bạn và bảo đảm an toàn cookie. Liệt kê 1 cho thấy một tệp điển hình.

Liệt kê 1. Đặt cấu hình WordPress
<?php
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wpadmin');

/** MySQL database password */
define('DB_PASSWORD', 'your_password_here');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

/** More stuff omitted. */
?>

Có một vài điều quan trọng cần lưu ý ở đây. Nếu bạn đang phát triển trên máy trạm cục bộ của bạn, nhiều khả năng là bạn cũng có cơ sở dữ liệu MySQL của mình trên cùng máy đó. Bạn sẽ thiết lập các DB_HOST là localhost. Đây cũng chính là cách cài đặt mà bạn sẽ sử dụng trên Aptana Cloud. Cơ sở dữ liệu sẽ chạy trên cùng một máy là máy chủ ứng dụng của bạn. Bạn không cần phải thay đổi mã chạy trên máy trạm của bạn khi triển khai nó vào Aptana Cloud.

Một lý do làm cho WordPress rất phổ biến là nó có thể mở rộng. Có một số trình cắm thêm có sẵn dành cho nó. Ví dụ, giả sử công ty của bạn không chỉ muốn có một blog để tương tác với các khách hàng. Họ cũng muốn sử dụng Twitter để cho các khách hàng biết khi có đăng một bài blog mới. Bạn có thể sử dụng trình cắm thêm Các công cụ Twitter (Twitter Tools) cho WordPress để làm việc này. Trình cắm thêm này chỉ là một kịch bản lệnh PHP mà bạn tải về và sao chép vào thư mục con wp-content/plugins. Nếu nó không thực hiện chính xác những gì bạn muốn, thì bạn có thể sửa đổi hay viết mã PHP của riêng mình.

Bạn cũng có thể tùy chỉnh dáng vẻ và cảm nhận của WordPress bằng cách tạo ra một chủ đề kiểu dáng mới (một tập hợp các kịch bản lệnh PHP, các tệp CSS và các hình ảnh) và đặt mã vào trong thư mục con wp-content/themes. Một khi bạn đã tùy chỉnh xong mã của mình, đây là lúc triển khai lên Aptana Cloud.


Triển khai vào Aptana Cloud

Một trong những lợi ích lớn của Aptana là việc triển khai của nó. Để triển khai, chỉ cần chọn Aptana > Cloud > Deploy project (Triển khai dự án), như hình dưới đây.

Hình 2. Triển khai vào Aptana Cloud
Triển khai vào Aptana Cloud

Lần đầu tiên bạn triển khai một dự án vào Aptana Cloud, bạn sẽ được nhắc về một số thông tin đăng ký cơ bản. Bạn có thể triển khai vào Aptana Cloud miễn phí trong ba tuần, do đó bạn lần đầu tiên không phải nhập bất kỳ thông tin thanh toán nào. Một khi bạn đã nhập các thông tin cơ bản, Aptana sẽ thiết lập máy chủ ảo của bạn trên đám mây.

Hình 3. Cung cấp cho Aptana Cloud
Cung cấp cho Aptana Cloud

Sau khi trang Web của bạn đã được cung cấp và thiết lập, bạn đã sẵn sàng để triển khai mã của mình. Nhiều khả năng, bạn sẽ không chỉ sao chép mã từ máy trạm của mình vào đám mây mà muốn sử dụng phần mềm quản lý kiểm soát-nguồn. Một lần nữa, Aptana cung cấp phần mềm này cho bạn và sử dụng nguồn mở. Aptana sử dụng Subversion (ND: là một phần mềm mã nguồn mở dùng để quản lý và kiểm tra các phiên bản mã nguồn khác nhau trong quá trình phát triển phần mềm) và thiết lập một kho lưu trữ kiểm soát-nguồn trên đám mây. Khi bạn đã sẵn sàng triển khai mã của mình, bạn thực sự thêm nó vào Subversion.

Hình 4. Triển khai mã — Thêm vào Subversion
Triển khai mã -- Thêm vào Subversion

Một khi Aptana đã thêm mã của bạn vào Subversion và triển khai nó, bạn có thể sử dụng chức năng Smart Sync (Đồng bộ thông minh) của nó để cập nhật bất kỳ những thay đổi tăng thêm nào mà bạn tạo ra cho ứng dụng. Aptana cũng cung cấp một giao diện người dùng để thêm các thành viên trong nhóm vào ứng dụng đó sao cho những người khác có thể kéo các mã xuống từ Subversion và cùng sáng tạo. Khi có nhiều người làm việc trên một ứng dụng, nó có thể trở nên không ổn định. May mắn thay, Aptana tạo ra một trang dàn cảnh trên đám mây, cũng như trang sản xuất. Bạn có thể thử nghiệm những thay đổi trên trang dàn cảnh trước khi bắt đầu sản xuất.

Triển khai dữ liệu

Việc quản lý kiểm soát-nguồn rất tốt để triển khai mã trên đám mây, nhưng còn dữ liệu thì sao? Đối với WordPress, đầu tiên bạn cần cài đặt nó trên máy cục bộ, việc này làm cho WordPress đưa dữ liệu cấu hình vào trong cơ sở dữ liệu của nó. Khi bạn thêm các trình cắm thêm, các hình nền và các chỉnh sửa cấu hình khác, nhiều dữ liệu sẽ được ghi vào cơ sở dữ liệu. Đây là tính chất đặc thù cho các ứng dụng hướng dữ liệu. Cần có một số dữ liệu cấu hình hoặc dữ liệu khởi đầu. May mắn thay, điều này dễ triển khai trong đám mây với Aptana. Chỉ cần xả kho cơ sở dữ liệu của bạn bằng cách sử dụng lệnh mysqldump. Aptana có một số công cụ để quản lý cơ sở dữ liệu của bạn, bao gồm ứng dụng nguồn mở phpMyAdmin phổ biến. Bạn có thể truy cập ứng dụng này từ Aptana, như hình dưới đây.

Hình 5. Truy cập ứng dụng phpMyAdmin từ Aptana Studio
Truy cập ứng dụng phpMyAdmin từ Aptana Studio

Từ ứng dụng phpMyAdmin, bạn có thể tải lên tệp mà bạn đã tạo ra.

Hình 6. Tải lên tệp xả kho cơ sở dữ liệu MySQL
Tải lên tệp xả kho cơ sở dữ liệu

Bây giờ bạn có thể di chuyển tất cả dữ liệu do bạn tạo ra trên máy cục bộ vào cơ sở dữ liệu của bạn trong đám mây. Quá trình này chủ yếu có ích cho việc thiết lập ban đầu ứng dụng của bạn. Bạn cũng có thể tạo ra các kịch bản lệnh SQL cục bộ, rồi chạy chúng trên cơ sở dữ liệu dàn cảnh và cơ sở dữ liệu sản xuất của bạn, cũng giống như bạn đã làm với một ứng dụng đang chạy trên phần cứng riêng của bạn.


Tóm tắt

Việc thiết kế và phát triển các ứng dụng cho đám mây có thể rất khó khăn, tùy thuộc vào loại nền tảng điện toán đám mây mà bạn sử dụng. Tuy nhiên, đối với nhiều kiểu ứng dụng, việc sử dụng các công nghệ mã nguồn mở chuẩn hóa sẽ làm đơn giản đáng kể các nhiệm vụ của bạn. Aptana Cloud là biểu hiện hoàn hảo của cách tiếp cận này.

Trong bài này, bạn đã tìm hiểu cách Aptana làm cho việc phát triển ứng dụng dựa trên PHP và MySQL dễ dàng như thế nào và cách triển khai chúng trong đám mây. Bài viết tiếp theo trong loạt bài "Thực tế về điện toán đám mây nguồn mở" sẽ tìm hiểu các phần khác của vòng đời cho một ứng dụng được triển khai trên đám mây.

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=Nguồn mở
ArticleID=659996
ArticleTitle=Thực tế về điện toán đám mây nguồn mở, Phần 2: Phát triển với đám mây
publish-date=05202011