2014/06/06
6 Jun, 2014

Nurturing Applications in a Connected Enterprise With WSO2 App Factory

  • Dimuthu Leelarathne
  • Architect - WSO2
Archived Content
This article is provided for historical perspective only, and may not reflect current conditions. Please refer to relevant product page for more up-to-date product information and resources.

What is WSO2 App Factory?

It is a platform that provides overall support to an application. It is a shared, elastic, multi-tenanted, self-service platform as a service (PaaS) that helps multiple product teams to collaboratively develop and share enterprise applications. APIs, tools, and infrastructure services, such as databases, used to create apps can be seamlessly connected with WSO2 App Factory.


How does WSO2 App Factory work?

App Factory supports applications from its inception to retirement. This means application development, hosting and complete application lifecycle management (ALM).

It is especially designed to support the app development stage by providing all the tools and infrastructure required for developers. Firstly, you need a team of developers and testers who will develop the app. App Factory provides you with team management facilities. You can then create the infrastructure instantly using the app factory. App Factory seamlessly integrate with Software Development Lifecycle Toolset (SDLC). This toolset contains the code repository, the continuous integration system, and the issue tracking system among others.

Figure 1

Figure 2 illustrates the plug-ins that that have been written.

Figure 2


Streamlined governed application lifecycle management (ALM)

Now that you have developed the application, AF will deploy it automatically. You can easily move your app between the different environments. Since you need to test your app after development, you can seamlessly move it from the dev environment to the test environment with just a click of a button. If you want to enforce governance or policies, there are extensible points for you to include human tasks, as explained in Figure 3.

Figure 3


Nurturing apps in a connected business

Once the testing has been completed, the app needs to go into production. Once the app has been deployed, it will create an environment as depicted in Figure 4.

Figure 4

As described App Factory will seamlessly integrate with your SDLC toolset. It will provide you with developed dashboards and API and app stores. You can also deploy this into an elastically scaling cloud. This would bring together your app developers, your employees who use internal apps and connectors, and your partners who consume your external apps. External developers could also use the app factory to develop applications for internal and external use.

It creates a vast ecosystem for your applications for varied purposes and meet any business requirements. Aimed to drive innovation, WSO2 App Factory is an important part of a connected business because it connects people and systems in order to nurture applications.


Enterprise benefits

There are 4 key benefits to your enterprise by deploying app factory in-house.

  • Productivity and innovation - The app factory can be used to increase productivity and drive innovation because it offers immense freedom to the developer
  • Enterprise agility - It allows your enterprise to become extremely agile because everything is automated; once governance is put in place it enforces policies
  • Governance - Even though you implement automation, it doesn’t mean that you give complete freedom without any control
  • Monitoring - The app factory comes with a fantastic set of dashboards that allows you to completely monitor the system. All of these points have extensibility where you can extend and customize according to your organization’s needs

Productivity and innovation

Self-service nature

WSO2 App Factory uses the cloud theory of self-service. You can create an application for yourself. When you click the ‘Create Application’ button the underlying infrastructure will be ready and automatically provisioned. When you add the team members they will also be automatically provisioned to the bill system, the issue tracker, the continuous integration system, and so on. It gives your developers an integrated developer experience.

Instant response from infrastructure

The app factory enables continuous building, integration, testing, and deployment. The moment you commit something your code will be built in the Jenkins (or any other build system that you integrate), tested, and deployed into the environment. It gives the developer a pre-composed set of applications. When you’re using the app factory, there is a pre-configured structure for each app type it supports. The skeleton is available for your use.

Integrated developer experience

We provide a great set of tools for the integrated developer experience. The app factory has a developer studio perspective. When you use this perspective, all the apps that you are a part of will be automatically shown. You can examine the apps, write code, and commit it. This commit will then trigger a continuous build.

Increased visibility and re-usability

Another advantage is that the app factory comes with its own API store and app store. You can create apps using APIs and publish the APIs to the API store and the apps to an app store. These stores give you visibility, therefore when you want to create something, rather than writing it from scratch, you can go to the store and look for the APIs that are already available for the task. It would significantly increase productivity because it promotes reuse without having to re-invent the build.

Collaboration

The app factory ships with a social component that gives developers a forum through which they can communicate with each other. It enhances collaboration between developers.


Enterprise agility

Agility means to respond to a change in the environment in a time-effective manner.

There are certain things that hinder agility in an application lifecycle. If you put rigid procedures and resist change, your enterprise cannot achieve agility. Usually when there is a manual process it’s hard to become agile, therefore increased automation should be the way forward. As the number of apps increase in a large enterprise, you would need to be able to manage them while also being responsive. WSO2 App Factory helps you to do just that.

Responsive IT

When you want to create an app ideally you shouldn’t be waiting for your source code repository or the build job to be created. This is where app factory comes into play - it automates provisioning of your infrastructure. You can instantly provision the infrastructure to the project team but with permission. You can define who can and cannot build and who can and cannot commit. This means that the controls are fine-grained.

Elastically scaling and shared infrastructure

The app factory deploys its applications into Stratos. Stratos is an elastically and dynamically scaling infrastructure; therefore, as requests increase it will scale up. This means that it is agile because you have a very responsive infrastructure that grows in line with the increase in demand.

Environments provided by WSO2 App Factory

One of the main features of the app factory is its support for environments. We have pre-configured the development, testing and production environments, but it isn’t limited to these environments and are configurable, e.g. if you decide that you just want testing and production you can do so.

The environments are pre-configured and tested, therefore the moment you move an application to one of them it’s being tested in a real environment. You would have to spend less time on setting up and more time on doing the actual work. You usually need to spend a lot of time testing the setup rather than the real use-case. However, in app factory, the set up happens automatically; once you deploy the app you can test it instantly.

There are also many situations where an app works in one setup, but not in another, and these instances are eliminated in the the app factory.


Governance

Every enterprise has its own policies, and deploying the app factory does not mean that you have to discard these policies. You can still enforce them because we have implemented workflows and BPEL processes in every major action so you can extend them and include human tasks, e.g. you can ask the system to send you an alert when an application is moved to production so it needs your permission to push through to production.

In terms of the environments, it should not be limited to development, testing, and production because each organization has its own lifecycle. The app factory allows you to configure these lifecycles and we integrate with WSO2 Governance Registry seamlessly for this purpose. You can do that in a SCXML and the process will automatically be defined.


Monitoring

Once you have the whole setup running there are dashboards that allow you to monitor the entire system, such as policies that have been broken and/or adhered to. In the enterprise, you can monitor what type of applications there are through the app factory. You can also monitor the number of Java applications and PHP applications, developers, and the number of times the build has been broken, etc. Figure 5 provides an example of such dashboards.

Figure 5


Summary

When it comes to nurturing applications in a connected business, WSO2 App Factory redefines the way you develop the applications, the way you deploy applications, and the way you move applications from one stage to another using cloud-based technologies. It connects all parties and systems to achieve this.

 

About Author

  • Dimuthu Leelarathne
  • Architect
  • WSO2