Project Setup Model
The project setup model describes your project in terms of what is built, what runs and where it runs.
Our NS applicationNS Application (NSApplication). A pre-built software stack that provides common enterprise application functionality such as CRUD, search, authentication, and business process modeling out of the box. is modeled as a SoftwareProject. The root of this model is a Project, which includes this SoftwareProject, and can be extended with other services, such as existing technologies or platforms that were built by other parties.
The Model
- The Project is the root of the model: everything that belongs to one repository.
- A SoftwareProject represents a code base that can be built, such as your NS applicationNS Application (NSApplication). A pre-built software stack that provides common enterprise application functionality such as CRUD, search, authentication, and business process modeling out of the box..
- An artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project. represents a deployment or build artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project.. An artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project. can be linked to:
- a SoftwareProject, signifying that the artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project. is created by the software project (e.g. docker image for the backend)
- a Service, meaning the artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project. is consumed by the service. The service will provide a runtime environment for it.
- A service specifies the runtime of an artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project.. It has a one-to-one relationship with an artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project.. (applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. backend, frontend, gateway, database)
- An environment represents the context of services, it groups the services that run together.
- A Pipeline describes how a software project is built, tested and delivered, as a sequence of stages: expand, validate, build, deploy, and so on.
ArtifactsArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project. in this context are deployment or build artifactsArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project. (e.g. docker images or jars). They are not to be confused with an artifactArtifactA build or deployment result, such as a Docker container image or Java archive, produced by a software project. in the context of NS expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. meaning, a file generated by an expanderExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact..
An Example
The carRental project has one software project, the carRental NS applicationNS Application (NSApplication). A pre-built software stack that provides common enterprise application functionality such as CRUD, search, authentication, and business process modeling out of the box.. It builds a backend image, which is run by a backend service. Next to it, a database service runs a standard Postgres image that is not built by the project. Both services run in the default environment. A pipeline expands, builds and deploys the applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution..