Design Principles for Cloud native Egeria

WORK IN PROGRESS

PrincipleDescription
Run in KubernetesEgeria should run in Kubernetes as a set of Deployments.
MicroservicesEach deployments represents only a single server. A cohort can consist of multiple deployments which are as indepedent as possible.
StatelessThe deployments of Egeria are stateless in themselves. That means the state (e. g. registration of server, metadata) is stored elsewhere and accessed by the individual pods.
Store config in the environmentThe server configuration is stored in the environment or an external config file. Configuration is applied on startup. There is no need to trigger configuration after startup
LogsThe audit logs of the servers are written to console by default to enable Kubernetes to capture and display them. If an additional audit log is required, it must be part of the configuration.
ObservableThe services can be observed on runtime. → tbd.
DisposableA server is disposable, that means it can be started up and shut down in few seconds. Shutdown is done gracefully on a SIGTERM signal. This allows flexible movement of servers between nodes in a Kubernetes environment.
Concurrency / horizontal scalingAs servers are stateless they can be scaled horizontally by running multiple instances of the same server.