Application Definition - csap-platform/csap-core GitHub Wiki
Related :
Application Model Service Definition Environment Definition SSL Configuration
Access Control Projects Sample Definition
All aspects of an application are captured in the Application Model and stored on the file system in the definition folder - using git for change management. While all the files can be edited directly - the Application Editor provides extensive semantic and syntactic validation, along with many ease of use features.
The Application Definition is used to group related services together for common management and shared resources (cpu/memory/filesystem/security). Existing applications include both small (single service, single instance, single host), to very large (multiple release packages, dozens of services, thousands of instances, hundreds of hosts). The definition includes everything from startup parameters and environment variables, to OS resource limits and cronjobs as detailed in the related links.
Key aspects of a CSAP Application Definition:
-
csap-platform/definition/*:
- root folder containing all application configuration. (stored in git)
-
csap-platform/definition/*.json:
- while text editing is supported, use of the Application Editor is strongly encouraged
- Application.json is the primary definition file used to define lifecycles, hosts, services, and associated configuration. Application.json also includes defintion of Application wide configuration - such as landing page meters, trends, collection settings, ...
- Release Package Files (*.json): large applications may optionally be subdivide into multiple definition files into Release Packages. Hosts cannot be shared across release packages.
- *-release.json: Optional - use jenkins or other automation to define the service version use as the default when deploying (UI or API)
- Clustering: service instances are assigned to 1 or more hosts (refer to Domain Model). The CSAP Httpd Package further elaborates on http routing configuration.
-
csap-platform/definition/application-company.yml:
- application wide configuration settings, including security, mail-server, etc
-
csap-platform/definition/scripts/*:
- application specific scripts can be selected via the CSAP Command Runner template browser
-
csap-platform/definition/resources/serviceName/resources/environment/*:
- optional files that will be copied to the service working directory after the service has been extracted, but before it has been started.
- spring boot services - any file in with matching environment name - or common - will be copied if the host is in the matching lifecycle.`
-
csap-platform/definition/resources/settings.xml:
- maven setup, including configuring repositories,etc
- Review application changes with tech lead and architect prior to implementing CSAP definition or infrastructure request
- Update CSAP Application definition (application.json) in dev. Then propagate changes to other lifecycles after testing & soak.
- Build deployment artifacts from source in dev - and then deploy binary artifact to other environments (CSAP does allow source builds in any env - but strongly discouraged).