Overview

Cloud Pak for Applications Accelerators for Teams is designed to deliver integrated workflows for application architects, application developers, and operations teams, allowing them to focus more intently in their respective areas of expertise.

Accelerators for Teams workflows covers common scenarios for these different roles, such as architects defining base images and starter applications for developers, developers iterating through code changes from their favorite IDE without worrying about the setup of a Kubernetes cluster, and operation teams using pipelines that can continuously monitor code deliveries and deploy the finished applications to a running cluster.

The following sections outline the overall architecture of the system, its components, and explains the typical workflows for the different roles.

Architecture

The Kabanero architecture supports the activity of application developers, application architects, and operations teams in continuously delivering applications to Kubernetes environments. The architecture also covers non-functional requirements, such as supporting the implementation of operational policies for application management and security.

Application Stacks

A large portion of the Kabanero experience is centered around application stacks. An application stack is created by an application architect as a logical set of software components for developing and deploying applications. Although the application architect builds the stacks, all of the software components that comprise them should be agreed upon by operations, enterprise, and developer advocates. An application stack is realized as components (such as tools and container images) used at coding time by application developers. Application stack configuration is done via standard Kubernetes operator (CRD) configuration.

If necessary, an application stack can be customized to meet local requirements. For example, you might want to define specific maintenance levels of software components or expose particular ports for use by the applications that are based on the stack. Customizing an application stack provides a mechanism for controlling the precise development and runtime environment for an application. In a large organization, customization ensures that applications are developed and tested with a level of consistency that promotes quality and helps guarantee a seamless implementation in your production environment.

Developer Experience

For application developers, the Kabanero experience is realized as tools that allows a developer to continuously iterate over changes to source code and validate the changes, considerably reducing or even eliminating the amount of time spent setting up and dealing with infrastructures such as Docker containers and Kubernetes clusters. The current tools are offered as a combination of the following initial offerings:

  • Appsody: A Command-line interface with commands for creating, building, running, and deploying applications. Appsody also has extensions that are used by other portions of the architecture to reassemble the application as a container image and to deploy it to a running container, and those will be covered in the respective sections of this overview.

  • Codewind: Hosted IDE (Codewind for Eclipse Che) and IDE extensions (Eclipse and Visual Studio Code) with a set of commands for creating, building, running, and profiling applications. When compared to Appsody, Codewind cannot deploy an application directly to a Kubernetes cluster, but it adds useful profiling capabilities where developers can inspect the usage of system resources between different local iterations on the source code.

Both Appsody and the local IDE extensions of Codewind depend on a running docker daemon to run a container with the resulting image for the application being developed.

Architect Experience

The solution architect can codify technology standards and company policies using the Management Experience. The architech defines Stacks providing an efficient way for application developers to use them.

A stack is designed, built, and published by an application architect, which can then be pulled into local registries by application developers and into the deployment pipeline upon code deliveries.

Application stacks
Figure 1. Application stacks

A stack has conventions for its internal structure, with a clear separation between the portions of the stack that are common across all applications created with the stack and the portions that are unique to each application, being visible and editable by application developers.

Those conventions for a stack are detailed in the Stack Structure section of the Appsody website. For the portion of the stack that is common across all applications, an application architect makes choices such as the base container image, the runtime framework for the programming language being targeted by the stack, the toolset for the runtime framework, the management choices for the running application, and many other choices not directly related to the functional aspects of the application.

Workflows (Recently updated for OpenShift 4.x)

The following sections contain concrete examples of how different roles would interact with Kabanero to achieve concrete goals.

Application Developer and Application Architect workflows
Figure 2. Application Developer and Application Architect workflows