Concepts
From ControlTier
Several fundamental concepts underly and drive the development of the ControlTier system. If you are a new user, knowing about them will help you use and integrate ControlTier into your environment.
Contents |
Abstracted administration
In a nutshell, the idea behind abstracted administration is to separate environment detail from the procedures supporting deployment management. We consider deployment in a broad sense encompassing application systems, their supporting infrastructure and their environments. Through abstracted administration you ultimately manage deployments via a logical view giving you a means to contend with scale and complexity. Management procedures can be gradually abstracted at different levels.
- Nodes: You want to execute the same procedure in different environments but each environment is comprised of a different set of nodes. Nodes are abstracted by describing them in terms of metadata and then executing actions across hosts that match metadata filtering criteria. Abstracting nodes from your automation process simplifies script writing as you can target actions by logically addressing nodes.
- Services: You want to manage the startup and life cycle across your different application services in a coordinated way but how they integrate and should be managed differs across environments. You can encapsulate startup and life cycle procedures in abstractions that provide consistent interfaces to long running services, package installation and configuration. Service abstraction also lets you manage groups of services letting you manage them from a single point of control.
- Processes: Deploying new software and administrating multi-tier application often involves the coordination of many steps and control points. You can break these steps down into reusable procedures and tie them back together again as higher level processes. Abstracting process is important to simplify complicated procedures that must be executed across different sized environments.
Administrative framework
The vision of the ControlTier open source project is the development of an administrative framework where all activity needed for application deployment and administration can be supported. The framework supports activities like:
- Node administration: Registration and configuration of hosts where distributed management activity will occur.
- Package management: Creating and staging software packages that will be delivered and installed during deployment. This may also include integrating with the build process to automate the staging of new packages from the produced build artifacts.
- Service management: The operation of the integrated application services. This includes managing new installs and upgrades but also other routine processes like reconfiguration and startup/shutdown.
- Management integration: Define new procedures, life cycles and service definitions.
The framework is designed as a system of components providing features such as:
- Command dispatcher
- Job scheduling
- Workflows
- Resource model
- Transforms
- File share
- Event logging
- Package management
- Authorization control
The framework provides a vital role in supporting the abstracted administration paradigm by acting as a common infrastructure to conduct service management activities.
Command dispatching
ControlTier supports a notion called Command dispatching wherein a user can specify an action (called a command) to be executed in the context of resource on any node where that resource has been associated. Internally, a mechanism called the command dispatcher does a lookup to find the nodes where the resource has been deployed and performs distributed command execution. The command executes in a data context that contains information about the target resource.
Command dispatch supports the abstracted administration paradigm by
- helping abstract nodes from command execution
- encapsulate application resources like services and packages
- providing a data context to command execution making procedures data driven and abstracts the environment
The command dispatcher supports two methods of command execution
- Ad hoc commands: Execute any shell command or shell script across a set of hosts. Do this by running ad hoc commands
- Defined commands: Encapsulate procedures as a named command and tie them together into command workflows. Execute defined command by running defined commands.
Resource model
The command dispatcher works in conjunction with a resource model. A resource model is a representation of the application in its environment. The resource model represents applications from several aspects:
- structural: the application components are described in terms of their interrelationships
- settings: each application component may have a unique set of properties
- artifacts: components may depend on packaged artifacts
- location: describes where the components are deployed in the network.
The resource model plays a key role in supporting abstracted administration through helping abstract the environment and service configuration. The resource model lets you describe your application both logically, as a pattern of deployment, as well as physically, in the context of physical nodes and packages. Resource models are maintained in a project.
The resource model uses a Type modeling system to allow users to create a data model to represent their business services. The ControlTier project defines a set of core types that represent generic concepts needed to describe application systems. The Core Type Guide lists these types and pointers to reference and usage. The type modeling page describes the type system in greater detail.
Processes
When one thinks about the kinds of processes used to manage deployments, they will recognize various patterns of actions that will be performed. For example, packages need to be created, staged to a repository, distributed to hosts, extracted to installation directories, have steps applied pre and post installation. Likewise, long running processes need to be started and shutdown, have configuration prepared and applied. Later on, it may be desirable to coordinate the actions just described into a single step that can execute across a set of hosts.
ControlTier embodies and encapsulates these life cycles as process workflows. For example, activities supporting package management fall into workflows: creation and installation. Activities supporting service management fall into startup and shutdown. Life cycle workflows can build on other workflows providing a method to simplify procedures into larger but simpler steps. For example, the deployment life cycle for a service coordinates package installation with configuration management and startup and shutdown.
In ControlTier each life cycle is defined as a workflow command. A workflow command is a command definition that specifies a set of steps to run. Each step is defined as a command, too. Since a workflow is itself a command, workflows can call other workflows.
Representing procedures as life cycles is another key aspect supporting the abstracted administration paradigm. Life cycle workflows help abstract the process by defining consistent interfaces to routine activities. See the Module Development Guide for information about developing your own processes as a workflow.
| ||||||||||||||
