5 Jun, 2014

Supporting Managed Innovation in an Enterprise with WSO2 App Factory



What does it take to develop an application?

The answer is a text editor and a compiler. Similarly, we can argue that the only thing one would need to travel from Brisbane to Perth is his feet. Both are probably doable with the instruments mentioned, but it would take a tremendous amount of time and effort.


Why is it so hard to develop applications?

Applications are usually developed by many engineers and are used to support critical operations. Such applications may be accessed by a large number of users and need to be maintained for prolonged periods. Therefore, application developers have to address issues such as effective collaboration, lifecycle management, maintainability and scalability.

There are many tools to address the problems in application development. These include source control systems for sharing code among multiple developers, issue tracking systems for reporting and managing errors, automated test frameworks for maintaining code quality and continuous integration software for maintaining builds and cloud-based deployments for scalability, among others. However, the growing number of tools are a problem on its own. It has become increasingly difficult to setup a development environment before writing a single line of code. In addition, different teams may use different tools, making it even more complicated to maintain an environment. The same is true for deploying applications in clustered or cloud environments. Once deployed, a considerable effort has to be made to monitor the status of applications, users working on each application, and so on.

What if you can create a development environment with a few clicks on a web console? What if you can migrate an application from development to test to production with a few clicks? What if you can deploy an application in a cloud environment with a single click? This is the next generation of application development and fortunately it’s already here; we introduce to you WSO2 App Factory.


How does WSO2 App Factory help?

Let’s look at how WSO2 App Factory provides everything you need for enterprise application development from a single console. Firstly, it allows you to select an application type and create an application. For example, you can choose to create a web application or a JAX-WS service. Once an application is created, the app factory creates a GIT repository for the project and puts in the initial folder structure and maven build scripts. In addition, it adds sample source files, so that you can build and deploy the first version of the application without writing a single line of code. Now, all you have to do is to checkout the code to your local machine and start writing code. If you want everything to be in a cloud there is also an online editor integrated with the app factory.

Once your coding is done, you can simply commit it and the app factory will integrate it to the build using the configured continuous integration software (e.g. Jenkins). The app factory will automatically set up an issue tracking system for your project so that anyone with authorized access can report and work on errors.

There is also the problem of managing resources used by an application. Usually, any non-trivial application utilizes resources, such as databases, APIs, policies and so on. To add to this complexity, these resources have to be changed according to different lifecycle stages. For example, an application may use a test database during development and switch to a production database for deployment. WSO2 App Factory takes care of almost all the complexities, so the only thing you have to do is define the resources for each lifecycle stage. As an application is promoted through life cycle stages, it will automatically utilize the correct resources.

Once the development is done, you have to simply click the “Deploy” button in the app factory console to deploy the application in configured servers. Depending on the configuration, the application can be deployed in an internal cloud or in a public cloud such as Amazon EC2. Furthermore, the status of all deployed applications can be monitored by authorized users via the CXO dashboard of the app factory.

As you can see, WSO2 App Factory allows you to focus on actual application development by providing a readily available environment. Moreover, all components of the app factory can be installed in a cloud, thus providing a completely cloud-based environment. In short, you can have a development environment as a service!


Use case: xBank IT systems development

Now let’s consider a scenario where an IT system is developed for a bank and how WSO2 App Factory can help in this process. Let’s call it xBank. xBank offers many services, such as maintaining personal bank accounts, personal loans, home loans, credit cards, etc. and has many local and overseas branches. As usual, with any organization that utilizes IT, xBank also has many existing IT systems and databases. However, many new systems were planned to be developed to meet the demands of their new operations.

The xBank IT team has decided to use WSO2 App Factory for all their new IT projects. In order to handle possible load fluctuations, they want both development and deployment environments to be in a cloud. Therefore, the IT team installs app factory components in the Apache Stratos platform. WSO2 Application Server (WSO2 AS) is also installed in Stratos for application deployment. As a result, both the development and deployment environments can scale according to the load. This installation is shown in Figure 1.

Figure 1: Deployment of AppFactory for xBank

Now let’s assume that the personal banking department wants to develop a new system to manage all personal accounts of customers. As this is a backend application, it has to expose its functionality as an API. This system also has to use a database containing important information during the production deployment. However, during the development and testing stages, it has to use databases filled with sample data. Therefore, the owner of the application should create a new JAX-RS application and set up different databases for development, testing, and production as shown in Figure 2. Then the owner adds necessary members for the project and gives them appropriate authorization. That’s all it takes! A project for the new personal banking application is created.

Figure 2: Configuration of development, testing and production databases for the xBank personal banking application

Now developers can checkout the source and commence development. As this is a JAX-RS application, developers can create REST services for exposing features. Once a development of a particular version is done, the owner can create a release branch and promote it to testing and production. Once it is in production, the application will access the production database of the bank. When the application is deployed, REST services will be published in configured WSO2 AS instances.

Now let’s assume that the home loans team is also developing an application to provide a web interface for applying loans. They can simply start by creating a new web application in the app factory. The loan processing application can easily access account details of candidates through APIs provided by the personal banking application. In order to facilitate this, the loan processing application should be able to subscribe to the APIs published by the banking application. In the same way, if an overseas branch wants to develop a customized portal for their customers, they can also start with the same development environment provided by the app factory and access all authorized databases, APIs, etc.


Summary

WSO2 App Factory provides enterprises and developers with various benefits for rapid application development and deployment. These include minimal configuration, conformance, scalability and reusability. The time and effort put into developing an application will be reduced and the complexity of the process will be simplified. WSO2 App Factory allows your enterprise to become more efficient in its processes, thereby increasing your enterprise's agility and productivity.

If you would like to try this out and see how it works, click here to begin.

 

About Author

  • Chathura Ekanayake
  • Associate Director / Architect
  • WSO2