Helpful Tips
This is a technical deep dive to explain the code behind the
kernel, the conventions, and proper usage of the kernel.
Tips about System Interfaces
System Interfaces should use environment variables when getting information to connect to external sources. System Interface can either have a descriptive and specific function name, i.e. get_all_current_customers, or a more generalized interface, i.e. make_post_request and make_get_request.
Tips about System Commands
System Command enum labels should be descriptive. Be sure that System Commands are not delivery platform dependent. System Commands should be customers/client dependent. This is normal in business and lets consumers know that the underlying System Process that is called is vendored for a particular customer or type of customer.
Tips about Errors and Exception handling
System Interface methods are only supposed to return a value or raise an exception. System Processes catch raised exceptions and return an Exit class instance with ExitCode.ERROR and any number of arbitrary keyword arguments for the instance's `data` attribute.
Tips about Logging and Observability
Since the kernel contains the most business critical aspects of a company, it is important to have logging enabled for the kernel. At the bare minimum, you will want to capture the System Command invoked, which delivery platform invoked it, and the user that invoked it. You will also want to capture the ExitCode returned from a System Process. If the System Process returns an error, you will also want to capture the relevant exception/error information. A more detailed logging system should exist in the delivery platform itself. Those metrics will be needed to plan the roadmap of what to build next.