Use these definitions for a better understanding of the terms used throughout the docs, often within the context of the Harbormaster platform.
The combination of all language specific generated files and application configuration files that are all brought together during “build-time” to result in a deployable package. This is different from a Harbormaster Project (project) which includes an application and other files required to build, test, architect, and deploy the application. Depending on the tech stack selected, such files could include a Dockerfile, build script, CI/CD Pipeline YAML, Terraform file, and so forth.
The process of validating access to a Harbormaster platform instance. This is accomplished either directly via login using the web app or indirectly using the Harbormaster CLI.
Command Line Interface (CLI)
A program that runs from the command prompt of an operating system (e.g. Windows, Linux). The Harbormaster CLI is stored as a packaged Node.js application, managed by NPM @ npmjs.com.
A design asset is offered as one of three options, made available for resale on the Harbormaster Marketplace. The options include:
- A templatized tech stack
- A templatized resource file (eg. Dockerfile, CI/CD YAML file, build script, etc…
- A model
A metamodel is considered a model of a model, and metamodeling is the process of generating such metamodels. The Harbormaster Metamodel is a common model. It is the result of processing the different supported business models. Importantly, it allows any tech stack to predictably and consistently consume a business model.
A deployed version of Harbormaster accessible via browser or the Harbormaster CLI. Harbormaster is available as a Docker image. Its source code is available on Git Hub and when built is best deployed on Apache Tomcat.
Combines a business model (via Harbormaster Metamodel), a Harbormaster Techstack, and a set of user specified options (app name, GIT credential, CI/CD target platform, and more…). Harbormaster uses this as part of the project generation process.
Although a generic term, specifically for a software context, it is the description of a collection of business entities (e.g. Company, Customer, Account, etc..) along with the data (name, account-number, etc…) and the relationships with each other. Every application has a model and the earlier it is acknowledged and documented, the better. Importantly, the model exists separate from the technology that realizes and supports it.
Model Driven Architecture (MDA)
MDA is s a software design approach for the development of software systems. It provides a set of guidelines for the structuring of specifications, which are expressed as models. As such, the business model is platform independent while the technical model is platform specific
The Harbormaster Architecture is based on MDA. In a nutshell, its architecture separates the business model from the technical model. Think of a tech stack as a technical model.
Platform Independent Model
Captures business data and relationships independent of an implementing technology. This is accomplished by the Harbormaster Metamodel.
Platform Specific Model
Captures technologies, is independent of a specific model, and is reusable across a wide spectrum of domains. This is accomplished by a tech stack.
Harbormaster generates all the components of a traditional DevOps project including:
- All application source code required for traditional CRUD capabilities, test harness, and a user interface depending on the tech stack.
- Vendor specific CI/CD YAML file to build, test, and optionally store and containerize the app.
- Docker file if required
- Terraform file if required and supported by the selected tech stack.
The process of using a Harbormaster Project. As a result of this process, a set of project files is generated and committed to a target GIT repository.
The act of submitting something to the Harbormaster platform. This includes models, tech stacks and resources. What is being published can be published as public (accessible by others) or private (only accessible by the owner)
Any file that is used, and potentially shared, as part of project generation. Examples could include a Dockerfile, a CI/CD YAML file, a credentials file, or even a tech stack template file. A Project-as-Code file can include multiple references to resources to be included during project generation.
resources: available: ProjectDockerfile, myK8AccountCredentials
If the name of a resource file shares the name of a generated file, the resource will overwrite that file.
Tech Stack (Techstack)
A tech stack is the combination of technologies used to build and run an application or project. Sometimes called a “solutions stack,” a tech stack typically consists of programming languages, frameworks, a database, front-end tools, back-end tools, and applications connected via APIs. Typically this combination is in concept only. Seldom is a tech stack the realization of its components. Not until Harbormaster has a tech stack been the contextual realization of its content of technologies.
Learn more about a Harbormaster Techstack.
Velocity (Apache Velocity)
A template engine that provides a template language to reference a set of known objects to be used in transforming a template file. The result of the transformation is a file required of a project.