Folder Structure

A basic solution folder structure mainly consist of the following folders mentioned below. Taking goliath solution as an example here. The structure is as follows:

$ tree -L 1 /home/user/stash/goliath/
/home/user/stash/goliath/
├── bld
├── dev_env_bootstrapper
├── drive -> /home/user/unscrambl/software/package_cache/rhel07/drive-2.3.0/drive
├── etc
├── infra -> /home/user/unscrambl/software/package_cache/rhel07/infra-3.5.3
├── Makefile -> dev_env_bootstrapper/Makefile
├── pom.xml
├── src
└── test

Let’s go through each folder and understand the contents within it.

bld folder

The bld folder mainly contains the generated or compiled code. It also contains the installation files which one would find in an installer tarball. The structure is as follows:

$ tree -L 1 /home/user/stash/goliath/bld/
/home/user/stash/goliath/bld/
├── current_arch -> /home/user/stash/goliath/bld/rhel07
├── external_dependencies -> /home/user/unscrambl/goliath/1.0.0/rhel07
└── rhel07

Based on your running operation system (rhel07 / rhel08) a folder would be created. Some of the important paths are:

  • UNSCRAMBL_HOME = /home/user/stash/goliath/bld/rhel07/install/goliath/drive/
    • This folder contains the compiled code, executables and configuration files for the product qbo Decisions.

  • UNSCRAMBL_INSTANCE_HOME = /home/user/stash/goliath/bld/rhel07/instance_home/goliath
    • This folder contains the runtime generated files and logs. This also contains the flat files where NameService, Kafka, PinPoint and FastPast store their data.

    • Also, for feed applications which use files for input data, the default input file path would be here.

dev_env_bootstrapper folder

This folder contains the scripts which sets up your bash environment, Python environment, environment variables and other environment settings required to build, develop and bring up the services.

This also contains a Makefile which is referred when any make command is executed.

drive folder

This folder contains the built product code which the solution would be referring to.

etc folder

This folder contains solution based configuration files. This will explained in more detail in the :ref:configuration <solution configuration> section.

infra folder

This folder contains the built infra code which the solution would be referring to. Infra contains some build related code, helper classes and methods and commonly used utilities such as database conectors, logger methods, etc.

Makefile file

This is actually a symlink which points to a Makefile within the dev_env_bootstrapper folder.

pom.xml file

Parent pom file for the solution which is required as part of the Java build of the solution. This file would contain the Maven dependencies that the solution imports and build plugins required.

src folder

Contains solution code for the feed applications and helper functions.

test folder

Contains test code for running automated test on the solution’s feed applications.