The Harbormaster architecture is based on 4 major concepts
- Business Model
- Tech Stack
- Project Declaration (Project-as-Code)
These concepts combined are how Harbormaster does what no other platform can do by generating fully operational DevOps projects including:
- Core code to present, modify, and store all business entities and their relationships
- Initial GIT commit of all generated files
- CI/CD vendor specific pipeline execution YAML file to build, test, artifact store
- Optional Docker file to containerize and push the application image
- Optional Terraform file to spin up the infrastructure to deploy and execute
- Optional Kubernetes directives to create a cluster and deploy the Docker container
- Incorporating of published resources such as a Dockerfile, a build script, credentials, and more…
Business Model (Business Context)
The Harbormaster platform is Model Driven. Why is this important? It is how it generates more than ‘Hello World’ instead generating projects based on the business context of your requirements.
Harbormaster supports the following business model formats:
|Model Type||File Extension||Example||Version|
|YAML||yml, yaml||example file|
(Unified Modeling Language)
|uml||example file||2.0, 2.1|
(XMI Metadata Interchange)
|xmi||example file||1.1, 1.2|
|SQL Script||sql||example file|
(Plain Old Java Objects)
|jar, ear||example file|
(Eclipse Modeling Framework)
|GIT||git||example Git repo|
Tech Stack (Technical Context)
Traditionally a tech stack is a concept. Harbormaster has turned the concept into a realization. A Harbormaster tech stack contains all the code, configurations, and options to define a technical context.
Harbormaster comes with a default yet growing set of tech stacks. Importantly, user defined tech stacks can be managed through the platform.
- Angular 7 using MongoDB
- Angular 8 using MongoDB
- Apollo GraphQL using SQLite
- ASP.NET 2.0 using nHibernate
- AWS Lambda using MongoDB
- AWS Lambda using Hibernate for Relational DB
- Django 2.x using Python 3.x
- Google Functions
- Spark Java Microframework
- Spring Core using Hibernate for Relational DB
- Spring Core using MongoDB
Upcoming tech stacks include:
- Ruby on Rails
- MEVN stack
- MERN stack
To create a custom tech stack, read the in-depth details here.
Project Declaration – Project-as-Code (Project Context)
This is a single YAML file that captures the context of a project through simple yet powerful declarative syntax. It combines a business context, a technical context, along with any number of options necessary to successfully generate all the components of a project.
Here is an example of a project using a custom business model, SpringCore tech stack with MySQL-8, Bitbucket GIT repositry, JFrog Pipelines, JFrog artificat repository, Docker container, and Kubernetes cluster:
name: Insurance Claim Project
description: ACME Insurance claim application project for
name: Modern Claim System
description: Claim system using a SpringCore tech stack and DevOps toolchain
hostTarget: google # option: google, aws, azure, nutanix
serviceType: LoadBalancer # options: LoadBalancer, NodePort, ClusterIP
Resources – (Shared Context)
A resource is a any file that is to be used, and possibly shared, as part of project generation. Examples could include a Dockerfile, a CI/CD YAML file, a credentials file, or even a techstack template file.
A Project-as-Code file can include multiple references to resources to be included during project generation.
If the name of resource file shares the name of a generated file, the resource will overwrite that file.