Today, cloud computing is bringing application development, business, and system operations closer together. This means that software developers need to better understand business process and system operations better than before. It also means that business stakeholders and operations staff have to consume more custom software.
The promise of cloud computing is that centralization, standardization, and automation will simplify user experience and reduce costs. However, achieving these benefits requires a new mindset, one in which the developer must take into account business processes and systems operations in order to build and deploy the most effective cloud application.
The scope of this article is intentionally broad to cover these aspects of application development and operation giving examples of Rational tools than can help in the process.
One of the most interesting aspects of cloud computing is that it enables a new level of tooling and collaboration. It enables reuse of work products, especially images, by teams of people. For example, you can have an operating system expert set up a based operating system image, a software developer add an image of a software product on top of it, and an enterprise user make use of the image, taking snapshots of images suitable for his enterprise's needs. This article focuses on how you can use this tooling to develop applications on the cloud.
Public cloud business scenarios
Let's start by discussing the scope of some of the use cases that drive cloud computing:
- There are many advantages of cloud computing that may be more important for individual use cases.
- Virtualization of infrastructure also opens a number of new possibilities and new kinds of IT assets that are not used at all in traditional computing.
- Operation in a public Internet environment offers new collaboration possibilities while at the same time, introduces new security challenges.
A number of actors collaborate together in cloud use cases:
- The cloud service developer develops software and other assets for consumption on the cloud.
- The cloud service consumer requests cloud resources and approves business expenditure. Cloud service consumers might include users, administrators, and business managers.
- The cloud provider providers a cloud service to consumers.
Consider a proof of concept (POC) use case. Enterprises usually create proofs of concept or pilot studies of new technologies before committing to use them. External IT consultants are often hired to do this and they are typically under a lot of pressure to deliver a challenging amount of capability in a short period of time. Usually, if the consultant does not have prior experience in this area, he will have trouble delivering the needed information.
Assets that can be used from job to job are critical. The cloud can help make this easier by allowing saved images to be reused directly and to allow consultants and enterprise users to share the same network space easily. It is a lot easier than having the consultant carry around physical machines, installing everything on her laptop, or attempting to install all the software on site at the enterprise in a short period of time.
A use case diagram for this scenario is shown in Figure 1.
Figure 1. Use case diagram for a proof of concept on the cloud
Working in a public cloud environment with support for user administration is critical in order to allow the enterprise to add an account for the consultant. Alternatively, the consultant can use his account space and simply allow access via a network protocol, such as HTTP.
If the enterprise approves the proof of concept, then it may want to use the POC long term. It can move the POC to the enterprise's private network by saving an image and starting up an instance on the virtualization LAN.
Table 1 compares a traditional proof of concept and a proof of concept on the cloud.
Table 1. Comparison of POCs in a traditional setting and on the cloud
|Consultant travels to customer site||Consultant works over the Internet|
|Customer gives the consultant access to enterprise network subject to an approval workflow||Customer gives consultant access to cloud with account or specific virtual machines with cryptographic keys|
|Procure hardware for pilot||Create an instance with the self-service interface|
|Consultant does it all herself||Consultant pulls in experts for high availability, performance, security, etc for a few hours as needed|
|Consultant cannot connect his laptop to the enterprise network. He must only use tools that the customer makes available||Customer can use her favorite application life cycle management tools on own laptop or available on the cloud|
|Consultant installs everything from scratch||Consultant starts up instances from pre-built images|
|Server is repurposed after completion||Server instances are saves as images and running instances are deleted|
The primary advantages of the cloud for this use case are elastic scalability, access from the Internet, and ability to save and reuse projects assets.
IBM SmartCloud Enterprise background
IBM SmartCloud Enterprise is a public Infrastructure as a Service cloud (IaaS), a unique public cloud offering that is suitable for enterprises. The cloud enables users to create and manage x86 virtual machines with Linux® and Windows® operating systems and manage related resources, including images, storage volumes, and IP addresses.
The difference IBM's cloud makes is that it includes a broad range of services and products, self-service abilities, and delegated administration models that enable collaboration, enterprise suitable business support services, and a large catalog of virtual machine images created by the image development center of excellence. (When you include the IBM PureSystems™ family of products and corresponding services, you engage even more proven expertise in configuration management and deployment in the form of pre-built, best practices virtual patterns.)
The SmartCloud Enterprise REST API is the fundamental way to programmatically communicate with SmartCloud Enterprise. It includes many capabilities, including the self-service user interface to manage instances, images, storage, and IP addresses. For convenience, a command-line API and Java™ API client are also provided which wrap the REST services. The Java API client and command-line tool require downloads which are freely available to registered users in the asset catalog. The command-line is convenient for speeding up operations for power users, but if you need to create an application that interprets the output from the API then you need to write a program.
You can use the IBM SmartCloud Enterprise API to add additional capability or integrate cloud management into your other applications. For Java® programmers, the most convenient option will be the Java API. Developers in other languages can use the REST API.
The way that most tools integrate with the cloud is through the APIs.
Cloud project tasks and tools, functionalities, and deliverables
This section describes application life cycle management (ALM) tools and their connection to cloud computing. A recent trend is to integrate these tools with the cloud environment. That way they can be run on the cloud, leverage the cloud in some way, or be used to develop applications for the cloud, all within the cloud environment space.
ALM tools help plan, design, collaborate, develop, test, deliver, and maintain software projects. When you scale up to multi-person software projects with build artifacts to deploy into application servers, you're going to discover you need some tools to help. The types of tools we're talking about include the following:
- Requirements management tools: Document and track functional and non-functional requirements. An example is Rational Requirements Composer.
- Planning tools: Plan the time and resources needed for a project and help you track the execution of that project. Examples are Microsoft Project and IBM Rational Team Concert.
- Source code repositories: Manage code centrally. Examples are the open source tool CVS and Subversion and commercial tools such as Microsoft Visual Source Safe and IBM Rational Team Concert.
- Integrated development environments (IDEs): Edit and debug source code. Examples are the open source Eclipse IDE and commercial tools IBM Rational Application Developer and Microsoft Visual Studio.
- Testing tools: Assist in execution and tracking of functional, performance, integration, globalization, and regression testing.
- Defect tracking systems: Track defects.
- Ticket tracking systems: Used for customer support. In open source and cloud projects these are being replaced by forums in many cases.
As a project becomes larger than a single person the most fundamental need is probably the need to share source code in a central repository. Concurrent Versions System (CVS) is an open source, source code management system that's been popular for many years. It is scalable and can be conveniently used from within integrated development environments using plug-ins. More recently, some improved open source, source code management systems, notably Subversion, have begun to complete with and replace CVS. A commercial alternative with considerably more functionality than these is IBM Rational Team Concert (RTC). The main impact of cloud computing on source code management tools is that they can be conveniently run on the cloud.
After you get the source code into a central repository, you need to build it into deployable artifacts. This can be done with open source build tools such as Ant or Maven. Maven has a somewhat broader set of capabilities considering a wider range of life cycle events. A commercial build server is IBM Rational Build Forge that provides an even more robust set of features. A Build Forge image is available in the IBM Cloud in the enterprise catalog.
Beyond source code compilation, you should attempt to automate unit testing, deployment to the runtime systems, and functional testing. As your application includes more components, such as a relational database, application server, and Hadoop, this becomes a more challenging task. One of the new developments in this type of tool, in particular in Build Forge, is that it can automatically set up and tear down composite environments on the cloud.
For quality code development, development, and ideally developers, should fully test their own code and testers to verify that it is working properly. Unit testing is where this begins. Junit is a simple and useful tool to drive unit tests and can give helpful reports; however, it can be difficult to do unit tests when the code integrates with more different systems. Mock objects can be used to represent these dependencies. The open source EasyMock tool is very useful for this.
Functional verification testing means testing that verifies that the code can execute all the different functions that it is supposed to in an operational environment. This can be done manually by observing different screens in a web browser. Ideally, it should be automated by recording the steps that the user takes. IBM Rational Functional Tester (RFT) is a commercial product that can be used to do this.
Cloud is enabling a different set of deliverables for proofs of concept, pilots, beta programs, and consulting projects. In traditional environments, enterprise network constraints (especially security), have often required consultants to work with tools that they are not familiar with. This can result in a tendency towards written reports documenting deployment steps and best practices that are not easily consumable by customers.
In other situations the consultant is left in a permanent support position long after the project has "finished." Cloud is enabling a different set of deliverables, including virtual machine images, deployment topology models, and software bundles, as shown in Table 2.
Table 2. Comparison of traditional and cloud project artifacts
|Software installation program (time consuming to develop)||Virtual machine image (click a button to capture an instance)|
|Written reports summarizing deployment steps||Deployment topology models, automation scripts|
|User documentation written from scratch||Reuse documentation from standard images|
|Configuration files in miscellaneous locations||Add asset to cloud catalog|
|Difficult support process||Support through remote access to cloud|
Catalog document management with Rational Asset Manager
A document management system manages files so that they can be stored in a central location for convenient access, indexing, and searching. Modern document management systems let users add their own comments about the documents and have Web 2.0 features like tagging and ratings. They support role-based access management for the management of the documents and workflows can be placed around documents to ensure that they are reviewed and approved before publishing.
In the IBM SmartCloud Enterprise the document management is done by IBM Rational Asset Manager (RAM). This is especially appropriate because most of the documents in the cloud are virtual machine images which themselves are software assets. Rational Asset Manager is standard IBM product that you can use also in your own projects. There is an entry for Rational Asset Manager in the image catalog that allows you to start up your own server.
All the images in the catalog of SmartCloud Enterprise have image assets that have public visibility. When you save a virtual machine as an image in SmartCloud Enterprise, a image asset will be created. You can add documents, such as "getting started" and screen shots to help your image users and Rational Asset Manager supports a forum that lets your users ask questions.
Initially, your image asset will have private visibility. That is, it will only be visible to you. However, you can also make it visible to the other members of your enterprise.
Rational Asset Manager also supports other types of documents, such as text documents. Most of the support documents for SmartCloud Enterprise are stored as Rational Asset Manager documents assets. When creating a new document in Rational Asset Manager you see this screen shown in Figure 2.
Figure 2. Creating a document in Rational Asset Manager
You can add a name, short description, long description, and attach files. You can configure an approval workflow to automatically be enforced prior to making the document visible to others. An example step in the approval workflow is shown in Figure 3.
Figure 3. Review of a document submitted to Rational Asset Manager
In this case, there are two steps: Claim review and then accept/reject the document.
An end-to-end development scenario
Now we'll show you how to set up Rational Software Architect on the cloud and save the virtual machine as an image that can be used as a standard development environment. In other words, we'll demonstrate how to use Rational tools and SmartCloud Enterprise in an end-to-end development scenario.
Rational Software Architect is an integrated development environment for Java, J2EE, Web 2.0, and other platforms. SmartCloud Enterprise has images for Rational Application Developer in the catalog. Also, Rational Application Developer has a cloud plug-in that lets you provision and integrate with servers, such as WebSphere® Application Server on the cloud. This lets you achieve a scenario like this:
- Find the Rational Application Developer Virtual Image in the catalog.
- Select the virtual machine properties.
- Set the connection to the virtual desktop with the NX Client.
- Start Rational Application Developer on the remote desktop.
- Add the new WebSphere cloud server.
- Set cloud credentials.
- Request a virtual machine for WebSphere on cloud.
First, find Rational Software Architect in the catalog and provision an instance.
Login to Rational Software Architect remotely using the NX Client. The NX remote desktop technology relies on an NX Server and an NX Client. The NX Server is available in commercial from NoMachine or open source distributions. Some images on SmartCloud Enterprise use the FreeNX open source package. The NX Server is responsible for user authentication and session activation. A third component is the NX Node. The
nxservice and related commands are not daemons, but rather are activated by the SSH server.
Configuration files are usually in the directory /etc/nxserver, which also includes the keys needed for authentication. If you have trouble, a useful setting is
NX_LOG_LEVEL in the node.cfg file. You might set it to
Server-Client communication. The location of log file is also configured in node.cfg with a default setting of /var/log/nxserver.log.
The NX Client can be freely downloaded from the NoMachine website. After installing, import and save your SSH key (unconverted by PuTTY) and set the IP or host name of your virtual machine in the Server field. The configuration screen is shown in Figure 4.
Figure 4. NX Client Connection Wizard
The client configuration user interface lets you choose a desktop such as KDE or Gnome. This can be a source of errors and can be worth trying out a different value if you have trouble establishing a session after authentication. The client configuration and session files are stored in the user's .nx directory (C:\Documents and Settings\Administrator\.nx on Windows). In case of errors, check the session directory, also under .nx.
When you have imported the key and entered the host name or IP address, login with your user name and password. Figure 5 shows the Rational Software Architect Desktop on SmartCloud Enterprise via an NX Client Remote Session.
Figure 5. Rational Software Architect Desktop on SmartCloud Enterprise via an NX Client Remote Session
You can download the Rational Team Concert and Rational Asset Manager clients from jazz.net and use the Install Manager to install it.
After you have installed them, save the image. The final step to enable the image to be used as a standard development client is to change the visibility from private to enterprise in the SmartCloud Enterprise self-service user interface. This is shown in Figure 6.
Figure 6. Shared visibility for the Rational Software Architect image
Now you are ready for the rest of the development team to start using the standard development environment.
In addition to source code management, Rational Team Concert is a full-featured development collaboration tool, supporting Agile project management, a build server, and defect management. A Rational Team Concert image is available in the SmartCloud Enterprise catalog. Rational Team Concert supports browser, Eclipse, and Microsoft Visual Studio clients. Rational Team Concert allows for different roles, such as project administrator, project lead, and project team member, to support multiple projects and teams with delegated administration.
To try out Rational Team Concert:
- Search for it in the catalog and then click the Start an instance of your image link. To access the web user interface, use the URL https://hostname/jazz/web/.
- You are prompted for the administrative password that you entered when provisioning the virtual machine instance.
- Once you have logged in, a message is displayed to perform the Jazz Team Server setup. Follow the Fast Path.
- There are two embedded licenses for developers and can be assigned during setup process. Select the Tomcat User Database for the user registry.
- Navigate to the Project Management Area. Initially, there are no projects. Follow the
link to the Project Area Management section. You should see something similar to Figure 7.
Figure 7. Rational Team Concert Project Areas Management section
- Click Create Project Area. Enter a name, summary, and description for the project.
- Click the Deploy predefined process templates link.
- Add users to Rational Team Concert using the User Management section, as shown in Figure 8. After you have created users, add them to the project.
Figure 8. Screenshot of User Management section in Rational Team Concert
- To configure email settings in Rational Team Concert:
- Set up the email server, then, navigate to Server > Configuration > E-mail Settings and enter values for the email server, as shown in Figure 9.
Figure 9. Rational Team Concert E-mail Settings configuration
- Set Enable E-mail Notification to true.
localhostfor the SMTP server. For the E-Mail From Address, use the fully qualified domain name of the server as the last part of the email address, for example, email@example.com.
- Click Save.
- Set up the email server, then, navigate to Server > Configuration > E-mail Settings and enter values for the email server, as shown in Figure 9.
- To add a user:
- Navigate to Project Management > Project Name.
- Under the Members header add the user to the project. To
generate an invitation, hover over the line containing the member and click
the icon Invite to Join Team, which is only visible when you
hover over it. You should see the Invite to Join Team window in Figure 10.
Figure 10. Rational Team Concert team member invitation
The web user interface is useful for many purposes, but you should use the Rational Team Concert Eclipse client as a developer or to administer Rational Team Concert.
We hope that by showing you how to widen the scope of your development process with the help of application life cycle management tools, you can realize the benefits of centralization, standardization, and automation that the cloud environment can deliver to your development efforts.
For more resources on the topics in this article, see:
- Rational Software Architect product page or IBM Rational Software Architect, Version 8.0 InfoCenter.
- Rational Team Concert product page.
For more on how to perform tasks in the IBM Cloud, visit these resources:
- Up and download files from a Windows instance.
- Install IIS web server on Windows 2008 R2.
- Create an IBM Cloud instance with the Linux command line.
- Create an IBM Cloud instance with the Windows command line.
- Extend your corporate network with the IBM Cloud.
- High availability apps in the IBM Cloud.
- Parameterize cloud images for custom instances on the fly.
- Windows-targeted approaches to IBM Cloud provisioning.
- Deploy products using rapid deployment service.
- Integrate your authentication policy using a proxy.
- Configure the Linux Logical Volume Manager.
- Deploy a complex topology using a deployment utility tool.
- Provision and configure an instance that spans a public and private VLAN.
- Secure IBM Cloud access for Android devices.
- Recover data in IBM SmartCloud Enterprise.
- Secure virtual machine instances in the cloud.
- In the developerWorks cloud developer resources, discover and share knowledge and experience of application and services developers building their projects for cloud deployment.
- Find out how to access IBM SmartCloud Enterprise.
Get products and technologies
- Download Rational Team Concert from developerWorks or Jazz.net.
- Download Rational Software Architect from developerWorks.
- See the product images available for IBM SmartCloud Enterprise.
- Join a cloud computing group on developerWorks.
- Read all the great cloud blogs on developerWorks.
- Join the developerWorks community, a professional network and unified set of community tools for connecting, sharing, and collaborating.