Giới thiệu Spring Roo, Phần 4: Phát triển ứng dụng nhanh trong đám mây với Spring Roo và Cloud Foundry

Đưa việc phát triển Roo nhanh chóng tiến một bước xa hơn bằng cách tạo các ứng dụng làm việc trong đám mây với Cloud Foundry, dự án nền tảng mở đầu tiên là một dịch vụ được VMWare tạo ra. Tìm hiểu thêm về môi trường và sau đó triển khai ứng dụng vào Cloud Foundry bằng cách sử dụng trình vỏ Roo.

Shekhar Gulati, Nhà tư vấn cao cấp, Xebia

Shekhar Gulati là một nhà tư vấn Java làm việc với Xebia India. Ông có sáu năm kinh nghiệm làm việc trong lĩnh vực Java. Ông có nhiều kinh nghiệm trong các dự án danh mục Spring, ví dụ như Spring, Spring-WS, Spring Roo, v.v. Các mối quan tâm của ông là Spring, cơ sở dữ liệu NoSQL, Hadoop, khung công tác RAD như Spring Roo, điện toán đám mây (chủ yếu là các dịch vụ PaaS như Google App Engine, CloudFoundry, OpenShift), Hadoop. Ông là một tác giả năng động viết bài cho các trang Javalobby, Developer.com, IBM developerWorks và blog riêng của ông tại http://whyjava.wordpress.com/. Bạn có thể theo dõi ông trên twitter @ http://twitter.com/#!/shekhargulati.



06 11 2012

Trong Phần 1Phần 2 của loạt bài về Spring Roo, chúng ta đã xây dựng một ứng dụng doanh nghiệp đủ tính năng bằng cách sử dụng Spring Roo. Vào thời điểm đó, tôi đã dự định viết một bài về Spring Roo và tích hợp Nền tảng là một sự dịch vụ (PaaS) của Google App Engine (Công cụ ứng dụng Google). Spring Roo cung cấp sự hỗ trợ để xây dựng các ứng dụng web có thể được triển khai trên Google App Engine, nhưng đã có các vấn đề và các hạn chế làm cho khó triển khai ứng dụng mà chúng ta đã xây dựng trước đây. Tôi đã quyết định trì hoãn bài viết đó cho đến khi cải thiện được sự hỗ trợ tích hợp Spring Roo/Google App. Bài này giới thiệu Cloud Foundry (nền tảng mở là một dịch vụ) và cách sử dụng nó để triển khai một ứng dụng mẫu ví dụ. Trước khi thảo luận về Cloud Foundry, chúng ta hãy dành một chút thời gian và bàn về nền tảng là một dịch vụ.

Nền tảng là một dịch vụ là gì?

Nền tảng là một dịch vụ (PaaS) là một trong các tầng của Điện toán đám mây. Các tầng khác bao gồm phần mềm là một dịch vụ (SaaS) và cơ sở hạ tầng là một dịch vụ (IaaS). PaaS ở giữa SaaS và IaaS, cung cấp sự trừu tượng hóa trên cơ sở hạ tầng và cung cấp một nền tảng điện toán và một ngăn xếp giải pháp.

Hình 1. Nền tảng là một dịch vụ: Trung tâm chiến lược của kiến trúc điện toán-đám mây
Biểu đồ hiển thị cách cơ sở hạ tầng ứng dụng (PaaS) đặt ở giữa cơ sở hạ tầng hệ thống (IaaS) và các ứng dụng (SaaS).

PaaS phù hợp với cả doanh nghiệp lẫn các nhà phát triển chuyên nghiệp. Các nhà phát triển kinh doanh, những người không viết mã, có thể sử dụng các nền tảng như WaveMaker để phát triển các ứng dụng của họ với các thành phần kéo và thả còn các nhà phát triển chuyên nghiệp có thể sử dụng các nền tảng như Google App Engine để xây dựng và triển khai các ứng dụng web. PaaS cung cấp các phương tiện để hỗ trợ các vòng đời từ đầu đến cuối về xây dựng và phân phối các ứng dụng và các dịch vụ web. Một số các nhà cung cấp dịch vụ PaaS chủ yếu là Google App Engine cho Java™ và Python, Microsoft® Azure cho .Net và Java và Force.com.

Đến năm 2010, PaaS vẫn chưa phát triển ở tốc độ tương tự như SaaS và IaaS, có thể là do những hạn chế bị áp đặt bởi các giải pháp PaaS hiện có. Chúng ta hãy xem xét các vấn đề với PaaS hiện có, mà các nền tảng PaaS thế hệ kế tiếp như Cloud Foundry cần giải quyết các vấn đề đó.

Các vấn đề với các giải pháp PaaS hiện có

  • Sự lệ thuộc vào Nhà cung cấp (thiếu tính di động đám mây): Đã không cung cấp tùy chọn nào cho một nhà phát triển hoặc một tổ chức để di chuyển từ một đám mây này sang một đám mây khác. Ví dụ, nếu một nhà phát triển đã chọn Google App Engine, sau đó họ vẫn phải tiếp tục dùng Google App Engine trừ khi ứng dụng bị xóa bằng giao diện điều khiển Google App Engine và các ứng dụng hiện có được sửa đổi theo nhà cung cấp dịch vụ đám mây mới. Sau đó ứng dụng này phải được triển khai ở đó.
  • Chỉ dành cho triển khai vào đám mây công cộng: Hầu hết các giải pháp PaaS hiện có chỉ nhắm vào đám mây công cộng, dẫn đến nhiều doanh nghiệp không di chuyển sang PaaS. Có rất nhiều doanh nghiệp sẽ không bao giờ di chuyển sang đám mây công cộng và họ đã không được cung cấp sự lựa chọn nào khác để thiết lập đám mây riêng trên cơ sở hạ tầng của họ hoặc sử dụng một sự kết hợp của các đám mây riêng và công cộng.
  • Cách suy nghĩ trì trệ: Các nhà phát triển phải thay đổi cách suy nghĩ của họ để xây dựng các ứng dụng trên đám mây công cộng. Trước đây, Google App Engine đã không cung cấp tùy chọn về các cơ sở dữ liệu quan hệ. Ứng dụng phải được mã hóa dựa vào BigTable, mà nó đòi hỏi một sự thay đổi về cách suy nghĩ trước khi việc xây dựng bắt đầu và có một đường cong học tập được liên kết với nó. Nhà phát triển có thể lấy một tệp WAR của ứng dụng và triển khai vào đám mây mà không cần bất kỳ sửa đổi nào.
  • Hỗ trợ cho các khung công tác xuống cấp: Hiện nay, các nhà lập trình Java sử dụng các khung công tác và hầu như 100% sự hỗ trợ của khung công tác đều mở đầu khó khăn khi viết các ứng dụng. Việc sử dụng Google App Engine để xây dựng một ứng dụng đơn giản bằng cách sử dụng bất kỳ khung công tác phổ biến nào như Spring hoặc Struts đã đòi hỏi một số nỗ lực rất lớn trước khi sử dụng khung công tác đó.
  • Gắn chặt vào một môi trường cụ thể: Dịch vụ PaaS hiện có bị gắn chặt vào các môi trường cụ thể chẳng hạn như Java và Python khi sử dụng BigTable như là phần phụ trợ cho Google App Engine, .Net và Java khi sử dụng cơ sở dữ liệu SQL Azure với Microsoft Azure hoặc Java với Amazon Beanstalk. Việc sử dụng bất kỳ các PaaS này cần phải tồn tại được chỉ trong môi trường đó.
  • Không có nguồn mở: Không có các giải pháp PaaS hiện có nào là nguồn mở, làm cho các nhà phát triển khó phân nhánh mã và bổ sung sự hỗ trợ cho các tính năng mới để chia sẻ với cộng đồng. Một yếu tố hấp dẫn của Cloud Foundry là tính chất nguồn mở của nó, cho phép các nhà phát triển bên ngoài tổ chức mẹ có được một vai trò quan trọng trong sự thành công của nó.

2011 - năm của PaaS

Gartner đã nói rằng năm 2011 sẽ là năm của nền tảng là một dịch vụ. Điều này là do số lượng lớn các dịch vụ PaaS mới sẽ được các nhà cung cấp phần mềm doanh nghiệp hàng đầu giới thiệu. Một số dịch vụ PaaS được khởi chạy năm nay là Cloud Foundry của VMWare, OpenShift của RedHat, CloudBees và DotCloud. (Xem phần Tài nguyên để biết thêm thông tin về tất cả các dịch vụ này). Các dịch vụ PaaS mới không bị hạn chế vào một ngôn ngữ hoặc khung công tác duy nhất nào. Bây giờ PaaS thực sự đang trở thành một nền tảng hỗ trợ xây dựng các ứng dụng bằng cách sử dụng nhiều ngôn ngữ và khung công tác. Các dịch vụ PaaS như Cloud Foundry đã đạt tới mức tiếp theo trên con đường hỗ trợ nhiều đám mây, mà chúng ta sẽ thảo luận sau trong bài này. Những thay đổi này cũng sẽ thúc đẩy các giải pháp PaaS hiện có trở thành nhiều-khung công tác. Phần sau sẽ tập trung vào Cloud Foundry, vì phần còn lại của các dịch vụ PaaS không nằm trong phạm vi của bài này.


Cloud Foundry là gì?

Vào tháng 4 năm 2011, VMware đã tiết lộ một nền tảng mở là một dịch vụ gọi là Cloud Foundry. Cloud Foundry là dịch vụ nhiều-ngôn ngữ, nhiều-khung công tác, nhiều-ứng dụng và nền tảng nguồn mở nhiều-đám mây. Nó đang cố gắng giải quyết tất cả các vấn đề được liệt kê trước đây cho các giải pháp PaaS hiện có. Các nhà phát triển và các tổ chức có thể sử dụng Cloud Foundry như là đích triển khai, đó là, triển khai một đám mây công cộng do Cloud Foundry cung cấp, hoặc có thể sử dụng nó như là một tầng cho phép triển khai theo một sự lựa chọn đám mây, cả công cộng lẫn riêng tư. Ba đặc điểm chính của Cloud Foundry là:

  1. Lựa chọn ở tất cả các tầng: Trong một phạm vi riêng lẻ, Cloud Foundry là một tùy chọn cung cấp-PaaS. Các lựa chọn được cung cấp cho các nhà phát triển không bị giới hạn vào các ngôn ngữ lập trình, nhưng tồn tại ở tất cả các tầng (các dịch vụ và đám mây). Cloud Foundry được mô tả tốt nhất bằng biểu đồ trong Hình 2.
    Hình 2. Các lựa chọn Cloud Foundry
    Ảnh chụp màn hình hiển thị mối quan hệ hình tam giác giữa các nền tảng ứng dụng, các giao diện dịch vụ và các giao diện nhà cung cấp đám mây

    Trong Hình 2 bạn có thể thấy các lựa chọn ở tất cả ba đỉnh của một tam giác. Đỉnh đầu tiên dành cho các ngôn ngữ/thời gian chạy và các khung công tác. Hiện nay, Cloud Foundry hỗ trợ các ngôn ngữ Java, Groovy, Scala, Ruby và Node.js. Các khung công tác được hỗ trợ cho các ngôn ngữ này là Rails3, Grails, Node, Sinatra, Lift và Spring. Đỉnh thứ hai tương ứng với các dịch vụ ứng dụng cho các dịch vụ có sẵn, dùng ngay được như MySQL (Relational Database - Cơ sở dữ liệu quan hệ), Redis (Kho dữ liệu giá trị khóa) và MongoDB (kho dữ liệu tài liệu). Sự hỗ trợ cho RabbitMQ và các dịch vụ khác sẽ có sớm. Cloud Foundry đang cung cấp cho các nhà phát triển sự lựa chọn để làm việc với các cơ sở dữ liệu SQL hoặc NoSQL. Các cơ sở dữ liệu đó, bị giới hạn theo MySQL và Java, không phải tìm hiểu bất cứ thứ gì mới và có thể sử dụng kiến thức hiện có để xây dựng một ứng dụng hoặc triển khai một ứng dụng hiện có. Đỉnh thứ ba cho thấy sự lựa chọn các đám mây. Cloud Foundry có thể được triển khai trên một đám mây công cộng như một đám mây hiện có sẵn trên cloudfoundry.com hoặc bằng cách triển khai Cloud Foundry trên IaaS như Amazon EC2. Bạn cũng có thể tải về và triển khai Cloud Foundry trên đám mây riêng của tổ chức của bạn hoặc một nhà phát triển có thể cài đặt Cloud Foundry trên một máy tính xách tay để sử dụng một đám mây vi mô hay đám mây của nhà phát triển.

  2. Nguồn mở: Cloud Foundry là một dự án mã nguồn mở có sẵn trên Github (xem phần Tài nguyên). Các nhà phát triển có thể phân nhánh dự án Cloud Foundry, bổ sung sự hỗ trợ cho các tính năng mới hoặc sửa chữa các vấn đề hiện có và đóng góp trở lại cho dự án. Một công ty có tên là ActiveState đã xây dựng nền tảng đám mây riêng của mình cho Python và Perl trên Cloud Foundry (xem phần Tài nguyên). Điều này chỉ có thể thực hiện được do Cloud Foundry là một dự án nguồn mở và các nhà phát triển có thể bổ sung nhiều dịch vụ hơn hoặc hỗ trợ ngôn ngữ cho nó.
  3. Tính di động của đám mây: Vì Cloud Foundry là một dự án mã nguồn mở, nên các nhà phát triển hoặc các tổ chức có quyền tự do chạy Cloud Foundry ở bất cứ nơi nào họ muốn. RightScale đã cho thấy rằng Cloud Foundry có thể chạy trên Amazon EC2 (xem phần Tài nguyên). Các nhà phát triển hoặc các tổ chức, không muốn sử dụng đám mây công cộng Cloud Foundry mặc định, có thể chuyển sang một dịch vụ đám mây khác của Cloud Foundry.

Bắt đầu với Cloud Foundry

Đám mây công cộng Cloud Foundry được cung cấp là một dịch vụ miễn phí tại http://www.cloudfoundry.com/. Dịch vụ này hiện đang là bản beta. Những ai chưa có giấy phép Cloud Foundry sẽ phải đăng ký một tài khoản trước khi bắt đầu với đám mây công cộng Cloud Foundry. Để nhận được giấy phép của Cloud Foundry thường mất vài ngày. Đám mây công cộng này hiện đang chạy trên hệ điều hành đám mây VMWare vSphere. Để bắt đầu trước khi nhận được giấy phép, hãy thiết lập một đám mây trên một máy tính cá nhân bằng cách tải về và cài đặt Cloud Foundry.

Khi nhận được giấy phép Cloud Foundry, có ba cách để tương tác với nó. Tất cả các máy khách tương tác với API REST đều được Cloud Foundry trưng ra. Các dịch vụ web REST này là tải dữ liệu (payload) json đơn giản trên giao thức HTTP.

  1. Máy khách dòng lệnh VMC (VMC Command-line client): VMC là một ruby gem cung cấp truy cập vào Cloud Foundry thông qua dòng lệnh. (ND: ruby gem là chương trình dùng để quản lý (cài đặt, bỏ cài đặt, cập nhật...) các thư viện cho Ruby). Nó được sử dụng để triển khai các ứng dụng đã tạo ra bằng cách sử dụng tất cả các ngôn ngữ. Hãy tải nó từ http://rubygems.org/gems/vmc.
  2. Bộ dụng cụ Spring Source (Spring Eclipse IDE hoặc STS): STS là chế độ thứ hai để kết nối với Cloud Foundry. STS là một IDE dựa trên Eclipse được đóng gói kèm theo nhiều goodies của Spring. Để tìm hiểu thêm về STS, hãy tham khảo một thẻ tham khảo thú vị được công bố trên dzone. Việc cài đặt một trình cắm thêm là cần thiết để truy cập Cloud Foundry. Từ bên trong IDE, bạn có thể thực hiện tất cả việc xây dựng, kiểm tra và triển khai vào một đám mây. Điều đó thực sự thú vị! Hãy đọc thêm về nó từ một blog của nhóm SpringSource.
  3. Phần bổ sung Cloud Foundry của Spring Roo: Ứng dụng này có thể được triển khai từ bên trong trình vỏ Roo bằng cách sử dụng phần bổ sung Cloud Foundry của Spring Roo. Đối với những người hâm mộ trình vỏ Roo, phần bổ sung này có nghĩa là chúng ta có thể xây dựng và triển khai từ bên trong trình vỏ Roo. Trình vỏ Roo còn cung cấp một lợi thế khác là hoàn thành bằng phím tab. Thêm một vài chữ cái vào lệnh đó và nhấn phím tab và trình vỏ Roo sẽ hoàn thành lệnh đó.

Bây giờ chúng ta hãy thảo luận cách các nhà phát triển Java có thể truy cập Cloud Foundry qua Spring Roo. Chúng ta sẽ triển khai ứng dụng đã tạo ra trong hai bài đầu tiên với Cloud Foundry.


Tích hợp Cloud Foundry của Spring Roo

Spring Roo cung cấp sự hỗ trợ cho Cloud Foundry dưới dạng một phần bổ sung. Các phần bổ sung là một cơ chế mà theo đó Spring Roo cung cấp sự hỗ trợ cho các tính năng mới.

Các điều kiện tiên quyết

Để triển khai ứng dụng đầu tiên của bạn với Spring Roo trên Cloud Foundry, hãy làm theo các bước sau:

  1. Nếu Spring Roo chưa được cài đặt trên máy tính của bạn, xin vui lòng tham khảo bài Phần 1 để bắt đầu với Spring Roo. Tôi đang sử dụng phiên bản mới nhất của bản phát hành 1.1.5 của Spring Roo (Spring Roo 1.1.5.RELEASE).
  2. Tải về mã nguồn của ứng dụng hội nghị, xem phần Tải về. Đây là một ứng dụng giống như ứng dụng được phát triển trong hai bài đầu tiên. Ứng dụng này hiện đang sử dụng HSQLDB làm cơ sở dữ liệu. Chúng ta sẽ chuyển ứng dụng này sang cơ sở dữ liệu MySQL sau.

Triển khai ứng dụng HSQLDB đơn giản trên Cloud Foundry

Khi môi trường phát triển đã sẵn sàng, hãy triển khai ứng dụng hội nghị. Ứng dụng hội nghị đã tải về sử dụng HSQLDB làm cơ sở dữ liệu của nó. Để triển khai ứng dụng này vào Cloud Foundry, hãy làm theo các bước sau:

  1. Giải nén tệp conference.zip đến một vị trí phù hợp.
  2. Từ dòng lệnh, chuyển đến vị trí nơi conference.zip đã được giải nén.
  3. Xây dựng dự án bằng cách gõ lệnh mvn clean install trên dòng lệnh.
  4. Khi đã ở trong thư mục conference, thực hiện lệnh Roo để tải trình vỏ.
  5. Trước khi triển khai ứng dụng trên Cloud Foundry, hãy cài đặt phần bổ sung Cloud Foundry, mà phần bổ sung này sẽ cung cấp các lệnh để thực hiện các hoạt động trên Cloud Foundry. Để cài đặt phần bổ sung Cloud Foundry, hãy gõ các lệnh sau vào trình vỏ Roo:
        roo> pgp automatic trust 
    
        roo> addon install bundle --bundleSymbolicName 
            org.springframework.roo.addon.cloud.foundry;1.1.5.RELEASE

    Lệnh đầu tiên nói cho Spring Roo biết để tự động dựa vào tất cả các khóa pgp sao cho tất cả các phần bổ sung cần thiết được cài đặt mà không cần phải dựa vào các khóa tin cậy riêng. Lệnh thứ hai cài đặt phần bổ sung Cloud Foundry phiên bản 1.1.5 RELEASE. Lệnh này sẽ mất vài phút để hoàn thành, do đó xin hãy kiên nhẫn chờ đợi.

  6. Sau khi cài đặt xong phần bổ sung, cần đăng nhập vào Cloud Foundry trước khi có thể thực hiện các hoạt động. Để đăng nhập vào Cloud Foundry, hãy gõ lệnh sau vào trình vỏ Roo:
         roo> cloud foundry login --email shekhargulati84@gmail.com --password ******
            --cloudControllerUrl http://api.cloudfoundry.com

    Lệnh đăng nhập cloud foundry có ba tùy chọn – email (thư điện tử), password (mật khẩu) và cloudControllerUrl. Trong số này, email và password là bắt buộc. Giá trị cloudControllerUrl mặc định cho đám mây công cộng Cloud Foundry tại địa chỉ http://api.cloudfoundry.com. Để triển khai đám mây vi mô hay đám mây ở bất cứ nơi nào khác, cần phải trỏ đến URL đó.

  7. Để xem tất cả các lệnh có sẵn để truy cập Cloud Foundry, hãy viết cloud foundry và nhấn phím tab để thấy tất cả các lệnh.
        roo> cloud foundry <Press Tab>                                                   
    
            cloud foundry bind       cloud foundry clear      cloud foundry create     
     
            cloud foundry delete     cloud foundry deploy     cloud foundry files 
    
            cloud foundry info       cloud foundry list       cloud foundry login      
    
            cloud foundry map        cloud foundry restart    cloud foundry start 
    
            cloud foundry stop       cloud foundry unbind     cloud foundry unmap      
     
            cloud foundry update     cloud foundry view
  8. Để xem thông tin liên quan đến cá thể Cloud Foundry của bạn, hãy gõ lệnh info như được hiển thị dưới đây. Lệnh này hiển thị thông tin về việc sử dụng bộ nhớ, số lượng các ứng dụng được triển khai trên Cloud Foundry và số lượng dịch vụ đang chạy. Nó cũng cho thấy các giá trị được cấp phát tối đa, đó là, bộ nhớ tối đa là 2GB.
        roo> cloud foundry info 
            
    	   VMware's Cloud Application Platform 
    	   For support visit support@cloudfoundry.com 
    
    	   Target:     http://api.cloudfoundry.com (0.999) 
    
    	   User:     shekhargulati84@gmail.com 
    	   Usage:     Memory (0MB of 2048MB total) 
    	   Services (0 of 16 total) 
    	   Apps (0 of 20 total)
  9. Tiếp theo, hãy triển khai ứng dụng bằng cách gõ lệnh cloud foundry deploy (triển khai cloud foundry). Lệnh này đòi hỏi hai thuộc tính AppName (Tên ứng dụng) và path (đường dẫn). Thuộc tính AppName biểu diễn tên của ứng dụng và thuộc tính path biểu diễn đường dẫn đến tệp WAR. Không cần phải nhập đường dẫn. Chỉ cần nhấn phím tab sau đường dẫn và Spring Roo sẽ tìm ra đường dẫn đó cho bạn. Có ba thuộc tính không bắt buộc – instances (các cá thể), memory (bộ nhớ) và các url. Theo mặc định, chỉ có một cá thể của ứng dụng được khởi chạy, nhưng có thể triển khai nhiều cá thể của ứng dụng bằng cách chỉ rõ ứng dụng đó khi sử dụng thuộc tính instances. Bộ nhớ mặc định được cấp cho một cá thể bằng 256MB. Để thay đổi thuộc tính này, hãy sử dụng thuộc tính memory tại thời điểm triển khai. Có thể sử dụng thuộc tính các URL để quy định các URL được ánh xạ tới ứng dụng. Theo mặc định URL sẽ là <Application Name>. Cloudfoundry.com, có nghĩa là conference.cloudfoundry.com với ứng dụng của chúng ta. Hãy gõ lệnh sau để triển khai ứng dụng hội nghị.
        roo> cloud foundry deploy
             --appName conference --path /target/conference-0.1.0.BUILD-SNAPSHOT.war

    Thuộc tính path có thể có giá trị CREATE, mà giá trị này sẽ phụ thuộc vào liệu dự án đã được xây dựng bằng cách sử dụng Maven chưa. Nếu dự án đã được xây dựng, như trong trường hợp của tôi, bạn sẽ thấy đường dẫn của tệp war. Nếu không, bạn thấy sẽ CREATE, mà đầu tiên nó sẽ xây dựng dự án và sau đó triển khai ứng dụng.

  10. Ứng dụng triển khai vẫn chưa khởi động. Khởi động ứng dụng bằng cách sử dụng lệnh start (khởi động) như dưới đây.
    	cloud foundry start app --appName conference
  11. Bạn có thể xem ứng dụng đang chạy ở http://conference.cloudfoundry.com/

Chuyển sang sản xuất: Thay thế HSQLDB bằng cơ sở dữ liệu MySQL

Thật dễ chuyển đổi từ HSQLDB cho một môi trường cục bộ sang cơ sở dữ liệu MySQL trong sản xuất. Đầu tiên, thay đổi kho lưu trữ tồn tại bền vững từ HSQLDB sang MySQL bằng cách sử dụng trình vỏ Roo và sau đó tạo ra một dịch vụ MySQL bằng cách sử dụng phần bổ sung Cloud Foundry và kết buộc dịch vụ này với ứng dụng. Không cần thay đổi mã; thay đổi duy nhất sẽ xảy ra ở cấu hình. Thậm chí không cần có cơ sở dữ liệu MySQL trên máy tính này do việc kiểm tra được thực hiện trực tiếp trên đám mây. Cloud Foundry cảm thấy nhẹ như đang phát triển trên một máy tính của nhà phát triển nội bộ.

  1. Mở trình vỏ Roo và thay đổi kho lưu trữ tồn tại bền vững từ HSQDB sang MySQL bằng cách gõ lệnh sau trên trình vỏ.
        persistence setup --database MYSQL --provider HIBERNATE

    Lệnh này sẽ cập nhật pom.xml, database.properties, persistence.xml để trỏ đến cấu hình liên quan MySQL.

  2. Mở một dòng lệnh khác và thực hiện lệnh mvn clean install -Dmaven.test.skip=true trong thư mục gốc. Xin lưu ý rằng tôi đang bỏ qua các bài kiểm tra vì tôi không có cơ sở dữ liệu MySQL cho các ứng dụng hội nghị của mình.
  3. Sau khi xây dựng thành công, ứng dụng đã sẵn sàng để được triển khai. Tuy nhiên, trước khi triển khai, xin vui lòng xóa ứng dụng để chúng ta có thể tạo ra một dịch vụ MySQL cho ứng dụng của mình và triển khai lại một ứng dụng mới. Không cần xóa ứng dụng mỗi khi bạn thực hiện các thay đổi vì bạn cũng có thể sử dụng lệnh cập nhật để cập nhật việc triển khai.
        cloud foundry delete app --appName conference
  4. Bây giờ chúng ta sẽ triển khai tệp war vừa mới được tạo ra của mình, có cấu hình đặc trưng MySQL.
    	cloud foundry deploy --appName conference --path 
            /target/conference-0.1.0.BUILD-	SNAPSHOT.war --memory 512MB
  5. Lệnh trên đã triển khai ứng dụng nhưng cá thể ứng dụng vẫn chưa khởi động. Vì vậy, trước khi chúng ta khởi động ứng dụng, chúng ta cần tạo ra một dịch vụ MySQL và gắn nó vào dịch vụ của mình. Để tạo ra một dịch vụ mới, chúng ta sẽ sử dụng lệnh dịch vụ tạo Cloud Foundry và sẽ cung cấp cho nó ServiceName (Tên dịch vụ) và serviceType (Kiểu dịch vụ). ServiceType có thể là MySQL, MongoDB, hoặc Redis.
    	cloud foundry create service --serviceName conference-db --serviceType mysql

    Sau khi tạo dịch vụ chúng ta có thể kết buộc dịch vụ bằng cách sử dụng lệnh bind service (kết buộc dịch vụ). Lệnh bind service bảo đảm rằng phụ thuộc của nguồn dữ liệu MySQL được đáp ứng trong đám mây. Việc này cũng được gọi là nội xạ phụ thuộc trong đám mây.

    	cloud foundry bind service --appName conference --serviceName conference-db

    Chúng ta cũng có thể tránh không dùng lệnh bind service bằng cách quy định thuộc tính appName của lệnh create service.
    	cloud foundry create service --serviceName conference-db --serviceType mysql
         	--appName conference
  6. Bây giờ bạn có thể khởi động ứng dụng hội nghị bằng lệnh start. Ứng dụng sẽ có sẵn tại http://conference.cloudfoundry.com/
    	cloud foundry start app --appName conference
  7. Cuối cùng, xem danh sách các ứng dụng và các dịch vụ bằng cách thực hiện các lệnh list apps (danh sách các ứng dụng) và list services (danh sách các dịch vụ) của Cloud Foundry như sau.
    roo> cloud foundry list apps                     
    
    ================================= Applications ================================= 
    
    Name        Status    Instances   Services        URLs 
    ----        ------    ---------   --------        ---- 
    conference  STARTED   1           conference-db   conference.cloudfoundry.com 
    
    
    roo> cloud foundry list services 
    
    ================== System Services =================== 
    
    Service     Version     Description 
    -------     -------     ----------- 
    mongodb     1.8         MongoDB NoSQL store 
    redis       2.2         Redis key-value store service 
    mysql       5.1         MySQL database service 
    
    
    
    = Provisioned Services = 
    
    Name              Service 
    ----              ------- 
    conference-db     mysql

Kết luận

Trong bài này, chúng ta đã định nghĩa Cloud Foundry và nó khác với các dịch vụ PaaS khác như thế nào. Việc tích hợp Cloud Foundry với Spring Roo cung cấp một môi trường phát triển ứng dụng nhanh cho các nhà phát triển để xây dựng và triển khai các ứng dụng Spring từ trình vỏ Roo. Bài này đã thảo luận việc tạo một dịch vụ MySQL và kết buộc nó vào một ứng dụng.

Trong bài sau, chúng ta sẽ xem xét các dịch vụ Cloud Foundry khác như Redis và MongoDB.


Tải về

Mô tảTênKích thước
Mã ví dụconference.zip---

Tài nguyên

Học tập

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

  • Cloud Foundry có sẵn thông qua Github.
  • Đánh giá các sản phẩm phần mềm IBM, từ các bản tải về dùng thử đến các sản phẩm lưu trữ đám mây trên máy chủ, bạn có thể đổi mới dự án phát triển nguồn mở tiếp theo của mình bằng cách sử dụng phần mềm đặc biệt dành cho các nhà phát triển.

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ở, Công nghệ Java
ArticleID=844672
ArticleTitle=Giới thiệu Spring Roo, Phần 4: Phát triển ứng dụng nhanh trong đám mây với Spring Roo và Cloud Foundry
publish-date=11062012